Nginx
Nginx是一个轻量级别的,高性能的的web服务器.反向代理服务器,他的特点有 占用内存小,并发能力强,在同类型的网页服务器中表现良好,能够支持高达五万个并发,他基于rest架构风格,通过http协议提供各种网络服务。
他的特点有
高扩展性,跨平台型。
高可靠性。
低内存消耗。
nginx采用单线程来异步非阻塞处理请求,不会为每个请求分配cpu和内存资源,节省大量的资源,同时也减少了大量的cpu上下文切换,所以nginx支持更高的并发。
反向代理 多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!
请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则
所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。
MQ
mq时 message queue,消息队列,也叫消息中间件,是一个类似于数据库一样部署在服务器上的一种应用,提供接口给其他系统调用,主要解决各个系统之间的解耦。比如说 登录发短信 ‘
1:为什么使用MQ?
主要是:解耦、异步、削峰。’
2:MQ优缺点
优点上面已经说了,就是在特殊场景下有其对应的好处,解耦、异步、削峰。
缺点有以下几个:
系统可用性降低
系统引入的外部依赖越多,越容易挂掉。万一 MQ 挂了,MQ 一挂,整套系统崩溃,你不就完了?
系统复杂度提高
硬生生加个 MQ 进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?问题一大堆。
一致性问题
A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是 BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,咋整?你这数据就不一致了。
3:Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?
1从社区活跃度来看,rabbitMQ是首选
2持久化消息比较 AciceMq和RebbitMq都支持持久化
3综合技术实现 rabbitmq和kafka最好
4高并发 Rabbitmq最好,他的实现语言是天生具有高并发高可用的elang语言
5.比较关注的比较, RabbitMQ 和 Kafka
RabbitMq 比Kafka 成熟,在可用性上,稳定性上,可靠性上, RabbitMq 胜于 Kafka (理论上)