消息中间件 - 目录

回到顶部(go to top)

消息中间件要解决什么问题?

消息中间件要解决的问题是:

  • 解耦:需要互相通信的应用之间的解耦
  • 缓冲:如果一个应用正忙,但其他应用还在不停的给他发消息,这时候需要一个地方暂存无法被处理的请求。

 

回到顶部(go to top)

消息中间件的通用属性?

  • no SPOF: SPOF = Single Point of Failure,你就一个单点,就一台服务器,挂了整个系统的消息都跑不通了,你必须要有替补、要有搭档。这一点,解决思路就是采用集群,nsq和nsqlookup,都支持集群架构
  • 可拓展性强:当一台服务器不够用时,你是否支持方便的横向扩展?nsq的扩展非常简单,默认一个生产者配置一个nsq,如果你需要俩,那就配置两个nsq地址即可
  • 可靠性强:这一点,nsq并不具备,默认情况下,消息是保存到内存的,一旦系统崩溃了,消息就没了。就算消息持久化到磁盘了,也只是做了一次备份,不像Kafka的partition机制,可以做多次备份
  • 性能好:这点毋庸置疑,采用push+内存的实现策略,再加上面提到的高可拓展性,nsq的性能可以得到保障

 

回到顶部(go to top)

消息中间件的特殊属性?

  • 消息投递策略:消息投递是至少一次,还是最多一次,还是需要控制在准确一次?nsq选择的是至少一次,这种适用面最广的方式,Kafka则支持全部三种,当然,这也给系统引入了更多的复杂性,而nsq则选择一如既往的”极简“
  • 消息时序性:为了性能考虑,nsq选择了不去无序,让消息飞~ 当然,如果你能设计出一套可以在topic级别进行时序性控制的消息中间件,是最牛逼不过了,比如有赞自研的nsq
  • push or pull:为了追求实时性,nsq选择了push,不同的消息中间件有不同的实现策略
  • 内存 or 磁盘:通常,如果你选择了push,那么对应的就会选择内存,当然为了消息可靠性,你还是得做一些刷盘的操作

 

回到顶部(go to top)

常见的消息中间件

RabbitMQ

 

posted on   frank_cui  阅读(227)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示