消息中间件学习

定义:消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

三个角色:

生产者(Producer):消息的产生者

消息(Message):各个业务之间通信的“内容”

消费者(Consumer):对消息的处理(服务进程)

消息路由:消息如何经过消息中间件到达消费者,在一定程度上决定了消息中间件的灵活性

消息可靠性:部分场景下消息是容忍丢失的,或者说对性能的渴求大于可靠性,比如异步发短信,异步发邮件,概数数据统计,日志等。有的场景是不允许消息丢失的,消息的丢失会带来数据的不一致,不一致的数据很多时候是灾难的开始,比如异步写数据,下单后减库存,转账等。可靠性基本都依赖于持久化。

消息重放: 这个说的是即使是消费过的消息也能设定offset(一般是时间点)重新消费。这个功能在消息下游数据丢失,新系统导入旧数据的时候非常有用,不用再去理繁杂的数据对应关系,按照正常的业务逻辑处理消息就OK了,非常好用!非常好用!非常好用!

消息堆积 抗流量神技。像双十一这种超高峰流量都会用到这个功能,这时候一方面会把消息中间件下游业务(Consumer端)的机器挪到核心业务,另一方面消息中间件在高并发投递消息的时候可能出问题,所以把消息暂存在中间件,等流量高峰过去了再投递到下游业务

分布式集群支持 高可用的需求,解决单点问题。

消息顺序: 有的业务要求消息投递顺序和消费顺序一致,或者至少要求对于单个用户顺序一致,比如用户的赞/取消操作,顺序反了数据就会错乱

性能和扩展: 这里指的扩展是能否通过增加Consumer来提高消息的消费速率以及消息中间件的容量是否有理论的上线;性能主要指tps、qps以及并发连接数。

ACK 消息确认:在下游业务确认后才将消息标记为已消费,处理超时则重新投递消息,这里要求下游业务自己做可重入(幂等)
消息协议: 优先考虑标准协议或者使用广泛的协议,有利于后期的维护和扩展

消息中间件一下几种:
redis
activeMQ    
kafka
Zmeromq
RabbitMQ
asio   ace
opendds
各个中间件的好处与缺点,自行比较吧,使用哪个中间件还是要看具体的使用场景。这里只给出关键词,剩下的自己摸索吧。
根据我的使用场景,我打算使用Zmeromq,过段时间,再来总结zmeromq的使用方法以及特性总结。

参考自:http://www.jianshu.com/p/477618203a97

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习消息中间件的好处包括: 1. 异步通信:消息中间件可以实现应用程序之间的异步通信,即发送方发送消息后不需要等待接收方的响应即可继续处理其他任务。这种异步通信模式可以提高系统的响应速度和吞吐量。 2. 解耦:通过使用消息中间件,应用程序可以通过发送和接收消息的方式进行通信,而不需要直接调用对方的接口或方法。这种解耦的设计可以提高系统的灵活性和可维护性,使得各个组件可以独立演进和扩展。 3. 可靠性:消息中间件通常具有持久化机制,即使在消息发送或接收过程中出现故障,消息也可以被保存下来,待系统恢复后再进行处理。这种可靠性机制可以确保消息的可靠传递,避免数据丢失。 4. 扩展性:消息中间件可以支持多种消息模式,例如发布-订阅、点对点等。这使得系统可以根据实际需求灵活地扩展,添加新的消息消费者或生产者,而不会对现有的组件产生影响。 5. 流量控制和负载均衡:消息中间件可以控制消息的流量,避免消息发送方过载或接收方无法处理大量消息的情况。同时,一些消息中间件还可以进行负载均衡,将消息均匀地分发给多个消费者,提高系统的性能和可伸缩性。 综上所述,学习消息中间件可以带来异步通信、解耦、可靠性、扩展性和流量控制等好处,从而提升系统的性能、可维护性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值