当前位置:首页 > 财经

kafka和mq的区别 Kafka、ActiveMQ、RabbitMQ、RocketMQ 区别以及高可用原理

为什么使用消息队列

其实就是问你消息队列中使用了什么场景,然后你的项目中具体是什么场景,你在这个场景中使用的消息队列是什么?

面试官问你这个问题的时候,预期的答案之一是,你的公司有什么商业场景,这个商业场景有什么技术挑战?如果你不使用MQ,可能会很麻烦,但是现在你用了MQ之后给你带来了很多好处。

先说消息队列的常见使用场景。其实场景很多,但核心有三个:解耦、异步、削峰。

退耦

看看这一幕。一个系统向BCD三个系统发送数据,通过接口调用和发送。如果e系统也要这个数据呢?如果不再需要C系统怎么办?一个系统领导差点崩溃......

没有人使用单机模式进行生产。

正常集群模式(无高可用性)

通用集群模式意味着在多台机器上启动多个RabbitMQ实例,每台机器一个。您创建的队列只会放在一个RabbitMQ实例上,但是每个实例都会同步队列的元数据(元数据可以看作是队列的一些配置信息,通过元数据可以找到队列所在的实例)。事实上,当您使用时,如果您连接到另一个实例,该实例将从队列所在的实例中提取数据。

这个方法真的很麻烦,不太好。如果不是分布式的,只是一个普通的集群。因为这将导致您一次随机连接一个实例,然后提取数据,或者固定连接队列所在的实例来使用数据。前者有数据拉取的开销,后者导致单个实例的性能瓶颈。

此外,如果放置队列的实例发生故障,将导致其他实例无法从该实例中拉出。如果打开消息持久化,让RabbitMQ在地面存储消息,消息不一定会丢失。只有当此实例恢复后,您才能继续从此队列中提取数据。

所以这个事情比较尴尬,不存在高可用性这种东西。该方案主要提高吞吐量,即集群中的多个节点服务于一个队列的读写操作。

镜像集群模式(高可用性)

这种模式就是所谓的RabbitMQ的高可用性模式。与常见的集群模式不同,在镜像集群模式中,您创建的队列,无论队列中的元数据或消息如何,都会存在于多个实例中,也就是说,每个RabbitMQ节点都有一个完整的队列镜像,其中包含队列的所有数据。然后每次向队列中写入消息时,都会自动将消息同步到多个实例的队列中。

那么如何开启这个镜像集群模式呢?其实很简单。RabbitMQ有一个很好的管理控制台,就是在后台增加了一个新的策略。该策略是镜像集群模式的策略。当您指定它时,您可以要求数据同步到所有节点或指定数量的节点。当您再次创建队列时,您将通过应用此策略自动将数据同步到其他节点。

在这种情况下,优点是您的任何一台机器都停机了,这很好。其他机器(节点)也包含这个队列的完整数据,其他消费者可以去其他节点消费数据。缺点是:一是性能开销太大。消息需要同步到所有机器,导致网络带宽压力大,消耗大。第二,这样玩,如果不分布式,就没有扩展性。如果一个队列负载很重,你添加机器,新添加的机器也包含这个队列的所有数据,没有办法线性扩展你的队列。你觉得,如果这个队列的数据量大到这个机器的容量容纳不下,这个时候该怎么办?

卡夫卡的高可用性

卡夫卡最基本的架构理解:它由多个经纪人组成,每个经纪人都是一个节点;你创建一个主题,可以分为多个分区,每个分区可以存在于不同的代理上,每个分区都会放一部分数据。

这就是自然分布式消息队列,也就是说一个话题的数据分散在多台机器上,每台机器放一部分数据。

其实Rabbtmq不是分布式的消息队列,而是传统的消息队列,它只提供了一些集群和HA(High available)机制,因为不管你怎么玩,Rabbtmq的队列的数据都放在一个节点里,镜像集群下,每个节点也放这个队列的完整数据。

在卡夫卡0.8之前,没有HA机制,也就是说,如果任何一个代理宕机了,那个代理上的分区就会被浪费掉,无法读写,所以根本没有高可用性。

例如,让我们假设创建了一个主题,指定分区的数量为三个,在三台机器上。但是如果第二台机器停机,这个题目的1/3数据会丢失,所以这个不能是高可用的。

卡夫卡0.8之后,提供了HA机制,就是副本机制。每个分区的数据将与其他机器同步,以形成自己的多个副本。所有复制品将选出一个领导者,然后生产和消费将处理这个领导者,然后其他复制品将成为追随者。写的时候领导会负责同步数据给所有跟随者,读的时候直接读取领导身上的数据。只读写领导?很简单,如果可以随意读写每个跟随者,就要关心数据的一致性。系统复杂度太高,容易出错。卡夫卡会将一个分区的所有副本均匀分布在不同的机器上,从而提高容错性。

这样,就会有所谓的高可用性,因为如果一个代理宕机了,没关系,该代理上的分区在其他机器上有副本。如果上面有分区领导,此时会从跟随者中重新选出一个新的领导,大家可以继续读写新的领导。这叫高可用性。

写数据时,生产者写领导,然后领导把数据写到本地磁盘,然后其他跟随者主动从领导那里拉数据。一旦所有的跟随者都同步了数据,他们就会向领导者发送确认。在收到所有追随者的确认后,领导者将向制作人返回一条成功写作的消息。(当然这只是模式之一,这种行为可以适当调整)

消费的时候只会从领导那里读取,但是只有当一条消息已经被所有跟随者成功返回ack的时候,这个消息才会被消费者读取。

看到这里,相信你对卡夫卡如何保证高可用性机制有个大概的了解吧?不是一无所知,可以当场给面试官画图。如果遇到真的是卡夫卡大师的面试官,问得很深,只能说对不起,你没有学得太深。

原文:https://www.cnblogs.com/jay-wu/p/10287636.html

1.《kafka和mq的区别 Kafka、ActiveMQ、RabbitMQ、RocketMQ 区别以及高可用原理》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《kafka和mq的区别 Kafka、ActiveMQ、RabbitMQ、RocketMQ 区别以及高可用原理》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/741586.html

上一篇

失而复得的项链 男主人误把首饰袋当垃圾袋扔了 后来失而复得

下一篇

江枫眠 江枫眠其实什么都知道,只不过大多数时候,都不愿去说罢了

任萍萍 科大讯飞任萍萍谈人工智能与教育大数据峰会的初衷:让孩子更好地适应时代发展

任萍萍 科大讯飞任萍萍谈人工智能与教育大数据峰会的初衷:让孩子更好地适应时代发展

人工智能技术在未来的教育教学过程中会起到什么作用?教育集团副总裁任表示,持续关注地区与学校之间的教育质量平衡是人工智能技术的重点。8月,2019人工智能与教育大数据峰会将在北京国际会议中心举...

产权40年到期交多少钱 新规传来最新消息,40产权取消?当第一批40年产权到期,有些人慌了……

  • 产权40年到期交多少钱 新规传来最新消息,40产权取消?当第一批40年产权到期,有些人慌了……
  • 产权40年到期交多少钱 新规传来最新消息,40产权取消?当第一批40年产权到期,有些人慌了……
  • 产权40年到期交多少钱 新规传来最新消息,40产权取消?当第一批40年产权到期,有些人慌了……

emq EMQ 百万级 MQTT 消息服务的一些小技巧

1.ACL身份验证规则 在正常的业务使用下,客户端的行为可以受到ACL的限制。例如,客户端A只能订阅/A/get队列消息,并向/A/set发布内容,但是在MYSQL中需要写入两条记录来处理这...

杭州南站 杭州南站就快上线了 还有一大波好消息

  • 杭州南站 杭州南站就快上线了 还有一大波好消息
  • 杭州南站 杭州南站就快上线了 还有一大波好消息
  • 杭州南站 杭州南站就快上线了 还有一大波好消息

养老金空账 十年数据告诉你,养老金亏空和空帐的真实内幕

  • 养老金空账 十年数据告诉你,养老金亏空和空帐的真实内幕
  • 养老金空账 十年数据告诉你,养老金亏空和空帐的真实内幕
  • 养老金空账 十年数据告诉你,养老金亏空和空帐的真实内幕

羊鼠相害真实例子 属鼠人和属羊人合适吗?想结婚就合掉相害的成分

  • 羊鼠相害真实例子 属鼠人和属羊人合适吗?想结婚就合掉相害的成分
  • 羊鼠相害真实例子 属鼠人和属羊人合适吗?想结婚就合掉相害的成分
  • 羊鼠相害真实例子 属鼠人和属羊人合适吗?想结婚就合掉相害的成分

九龙论坛 九龙坡区警方公安大数据主题创新论坛正式“开坛”

  • 九龙论坛 九龙坡区警方公安大数据主题创新论坛正式“开坛”
  • 九龙论坛 九龙坡区警方公安大数据主题创新论坛正式“开坛”
  • 九龙论坛 九龙坡区警方公安大数据主题创新论坛正式“开坛”

数据库监控 数据库监控的八条原则

  • 数据库监控 数据库监控的八条原则
  • 数据库监控 数据库监控的八条原则
  • 数据库监控 数据库监控的八条原则