searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

浅谈分布式消息服务

2023-11-08 03:35:12
16
0

        分布式消息服务是一种用于在分布式系统中进行异步通信的技术。 拿个例子形象地来说,分布式消息服务比较像现在小区内的丰巢快递站,快递员(生产者)将快递(消息)放在丰巢(消息队列)后可以走了,等待小区住户(消费者)来拿(pull)或是由丰巢的人送货上门(push)。 

一、为什么会有分布式消息服务

       为什么会有分布式消息服务呢?也可以通过上面快递服务的例子来解释:

       想象一下,您有一家全球快递公司,面临着庞大的包裹处理和交付任务。之前我们的快递员都是挨家挨户去送货上门,但是随着电商的流行,快递数量的剧增,如果还按照送货上门那样的方式,要么快递员应接不暇,我们能收到快递的速度大大降低,这对于用户来说是不可接受的;要么快递公司解决这个问题,增加大量的快递员去改善这个情况,但是这对于公司来说成本就大量增加,公司的成本最后也就摊到了用户上(这也是为什么京东顺丰会比其他快递公司贵的原因)。

       在这种情况下,分布式消息服务(丰巢)的存在是至关重要的,原因如下:

       1. 异步通信:当快递员将包裹交给丰巢时,丰巢不必等待每个包裹的接收者即时到达。快递员可以继续处理其他包裹,而丰巢将异步通知接收者,告诉他们包裹已准备好。由此减少了快递员(生产者)的工作量。

       2. 解耦:丰巢不必直接与每个快递员或接收者进行实时通信。分布式消息服务就像一个中介,它解耦了快递员和小区住户(接收者)之间的通信。这样,公司可以独立管理和扩展包裹处理和通知服务,而不会直接与数千名上万快递员和接收者交互。

       3. 伸缩性:随着业务的增长,丰巢需要处理更多的包裹和通知。分布式消息服务可以轻松扩展,添加更多的处理节点,以满足不断增加的工作负载,就像增加更多的丰巢快递柜。

       4. 持久性:快递公司可以在丰巢快递站(消息队列)中存储包裹信息,以确保即使在快递员把包裹交给公司后,这些信息也不会丢失。如果有包裹丢失,公司可以查看丰巢快递站(消息队列)以找到记录。

       5. 可靠性:分布式消息服务确保包裹通知可靠地到达接收者。即使小区住户(接收者)无法立刻接收包裹,消息服务会尝试再次通知他,确保包裹被成功交付。

        总之,分布式消息服务就像一个高效、可靠、解耦的包裹传递系统,有助于处理大规模、异步的通信需求,同时提高了系统的可伸缩性和可靠性。

  二、分布式服务的差异

       像常用的分布式消息服务RocketMQ、Kafka和RabbitMQ,我们如何选择呢?放到上面我举得例子里可以这样理解他们之间的差异:

       RocketMQ就像一个高效的快递服务中心。当快递员(生产者)将包裹(消息)交给服务中心,他们会迅速扫描并准备投递,然后可以继续下一个任务。而快递员无需等待接收者(消费者)亲自领取包裹,因为RocketMQ负责安排及时的投递。接收者可以在自己方便的时候前来领取包裹,就像在丰巢快递站一样。

       Kafka更像一个完整的快递服务生态系统。每个包裹(消息)的传递都被详细记录,包括寄件人、收件人和传递时间。这个系统不仅提供了及时的快递,还提供了完整的历史记录,您可以随时查询包裹的状态。当快递员将包裹放入系统后,您可以跟踪包裹的位置和状态,确保它安全地送达目的地。

       RabbitMQ就像一个友好的社区快递服务。在这个社区中,您可以随时到快递点领取包裹(消息),无需等待送货员上门。这是一种自助式的服务,接收者可以在自己的时间里前来领取包裹。RabbitMQ确保包裹一直可供领取,使人们可以根据自己的时间表来处理。

       在这个形象的比喻中,RocketMQ侧重于高效的消息传递,Kafka着重于数据记录和追踪,RabbitMQ提供了更加自由和自助的消息处理方式。选择取决于您的需求:是更重视速度、数据完整性,还是更喜欢自主控制和取件的便利性。

0条评论
0 / 1000
张****强
2文章数
0粉丝数
张****强
2 文章 | 0 粉丝
张****强
2文章数
0粉丝数
张****强
2 文章 | 0 粉丝
原创

浅谈分布式消息服务

2023-11-08 03:35:12
16
0

        分布式消息服务是一种用于在分布式系统中进行异步通信的技术。 拿个例子形象地来说,分布式消息服务比较像现在小区内的丰巢快递站,快递员(生产者)将快递(消息)放在丰巢(消息队列)后可以走了,等待小区住户(消费者)来拿(pull)或是由丰巢的人送货上门(push)。 

一、为什么会有分布式消息服务

       为什么会有分布式消息服务呢?也可以通过上面快递服务的例子来解释:

       想象一下,您有一家全球快递公司,面临着庞大的包裹处理和交付任务。之前我们的快递员都是挨家挨户去送货上门,但是随着电商的流行,快递数量的剧增,如果还按照送货上门那样的方式,要么快递员应接不暇,我们能收到快递的速度大大降低,这对于用户来说是不可接受的;要么快递公司解决这个问题,增加大量的快递员去改善这个情况,但是这对于公司来说成本就大量增加,公司的成本最后也就摊到了用户上(这也是为什么京东顺丰会比其他快递公司贵的原因)。

       在这种情况下,分布式消息服务(丰巢)的存在是至关重要的,原因如下:

       1. 异步通信:当快递员将包裹交给丰巢时,丰巢不必等待每个包裹的接收者即时到达。快递员可以继续处理其他包裹,而丰巢将异步通知接收者,告诉他们包裹已准备好。由此减少了快递员(生产者)的工作量。

       2. 解耦:丰巢不必直接与每个快递员或接收者进行实时通信。分布式消息服务就像一个中介,它解耦了快递员和小区住户(接收者)之间的通信。这样,公司可以独立管理和扩展包裹处理和通知服务,而不会直接与数千名上万快递员和接收者交互。

       3. 伸缩性:随着业务的增长,丰巢需要处理更多的包裹和通知。分布式消息服务可以轻松扩展,添加更多的处理节点,以满足不断增加的工作负载,就像增加更多的丰巢快递柜。

       4. 持久性:快递公司可以在丰巢快递站(消息队列)中存储包裹信息,以确保即使在快递员把包裹交给公司后,这些信息也不会丢失。如果有包裹丢失,公司可以查看丰巢快递站(消息队列)以找到记录。

       5. 可靠性:分布式消息服务确保包裹通知可靠地到达接收者。即使小区住户(接收者)无法立刻接收包裹,消息服务会尝试再次通知他,确保包裹被成功交付。

        总之,分布式消息服务就像一个高效、可靠、解耦的包裹传递系统,有助于处理大规模、异步的通信需求,同时提高了系统的可伸缩性和可靠性。

  二、分布式服务的差异

       像常用的分布式消息服务RocketMQ、Kafka和RabbitMQ,我们如何选择呢?放到上面我举得例子里可以这样理解他们之间的差异:

       RocketMQ就像一个高效的快递服务中心。当快递员(生产者)将包裹(消息)交给服务中心,他们会迅速扫描并准备投递,然后可以继续下一个任务。而快递员无需等待接收者(消费者)亲自领取包裹,因为RocketMQ负责安排及时的投递。接收者可以在自己方便的时候前来领取包裹,就像在丰巢快递站一样。

       Kafka更像一个完整的快递服务生态系统。每个包裹(消息)的传递都被详细记录,包括寄件人、收件人和传递时间。这个系统不仅提供了及时的快递,还提供了完整的历史记录,您可以随时查询包裹的状态。当快递员将包裹放入系统后,您可以跟踪包裹的位置和状态,确保它安全地送达目的地。

       RabbitMQ就像一个友好的社区快递服务。在这个社区中,您可以随时到快递点领取包裹(消息),无需等待送货员上门。这是一种自助式的服务,接收者可以在自己的时间里前来领取包裹。RabbitMQ确保包裹一直可供领取,使人们可以根据自己的时间表来处理。

       在这个形象的比喻中,RocketMQ侧重于高效的消息传递,Kafka着重于数据记录和追踪,RabbitMQ提供了更加自由和自助的消息处理方式。选择取决于您的需求:是更重视速度、数据完整性,还是更喜欢自主控制和取件的便利性。

文章来自个人专栏
迁移
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1