消息中间件,kafka消息中间件的最大特点?
特点:一、消息中间件
官方解释:消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
说白了就是在分布式中进行消息的收发和处理的,但是为什么用,怎么用,用来解决什么问题
二、使用场景
简易架构:一般消息中间件有三大模块,producer(消息生产),Broker或者叫Queue(消息存放),consumer(消息消费)
一般情况下producer和consumer在两个不同系统A和B,A系统生产消息,并把消息存放到broker中,B系统消费存放在Broker上的消息信息,乍一看跟系统之间RPC调用没什么区别,都是为了系统间通信,相对于RPC调用优势在哪里
1.异步处理:貌似RPC调用也可以实现异步调用的功能,但是RPC调用的异步处理跟消息中间件还是有很大的区别的rpc异步调用后,当前系统对是否通信成功并无感知(是否通信成功也可以理解为消息是否已达)。
也许因为网络原因,异步的消息并没有发送到其他系统;针对这一点消息中间件对消息做了改善,比如说持久化,接下来会以kafka讲解支持消息重试
2.流量控制:系统的流量受到时间,季节,天气,节日等因素的影响,流量并不是均匀的,比如说11.11,流量会很大,如果所有流量全都直接打到底层系统,甚至到数据库,那么系统很有可能会挂掉,这时候消息中间件的作用就体现出来了所有消息先存到broker上,consumer根据自己的消费能力处理broker的消息
3.服务解耦:电商项目中很多系统一般都会订单感兴趣,订单创建,完成,取消或退回,如果没有消息中间件,那么每个订单的创建都要通知到对订单创建感兴趣的系统,这样各个系统都会耦合到一块,增加了系统的复杂度。
但是如果通过消息中间件实现,订单创建后消息保存到消息中间件,对订单感兴趣的系统订阅这个消息,然后处理自己系统的逻辑很大程度上降低了系统的耦合度
还没有评论,来说两句吧...