加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

常用动静中间件17个维度全方位比拟

发布时间:2019-09-19 04:58:15 所属栏目:建站 来源:搬砖的码哥
导读:本文先容了Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ 17 个方面综合比拟作为动静行列行使时的差别。 一 资料文档 Kafka:中。有kafka作者本身写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书

客户端平衡算法:

  • 轮询法。按次序返回下一个处事器的毗连地点。
  • 加权轮询法。给设置高、负载低的呆板设置更高的权重,让其处理赏罚更多的哀求;而设置低、负载高的呆板,给其分派较低的权重,低落其体系负载。
  • 随机法。随机选取一个处事器的毗连地点。
  • 加权随机法。凭证概率随机选取毗连地点。
  • 源地点哈希法。通过哈希函数计较获得的一个数值,用该数值对处事器列表的巨细举办取模运算。
  • 最小毗连数法。动态选择当前毗连数起码的一台处事器的毗连地点。

zeromq:去中心化,不支持负载平衡。自己只是一个多线程收集库。

rocketmq:支持负载平衡。

一个broker凡是是一个处事器节点,broker分为master和slave,master和slave存储的数据一样,slave从master同步数据。

nameserver与每个集群成员保持心跳,生涯着Topic-Broker路由信息,统一个topic的行列会漫衍在差异的处事器上。

发送动静通过轮询行列的方法发送,每个行列吸取均匀的动静量。发送动静指定topic、tags、keys,无法指定投递到哪个行列(没故意义,集群斲丧和广播斲丧跟动静存放在哪个行列没有相关)。

tags选填,相同于 Gmail 为每封邮件配置的标签,利便处事器过滤行使。今朝只支 持每个动静配置一个 tag,以是也可以类比为 Notify 的 MessageType 观念。

keys选填,代表这条动静的营业要害词,处事器会按照 keys 建设哈希索引,配置后, 可以在 Console 体系按照 Topic、Keys 来查询动静,因为是哈希索引,请尽也许 担保 key 独一,譬喻订单号,商品 Id 等。

rocketmq的负载平衡计谋划定:Consumer数目应该小于便是Queue数目,假如Consumer高出Queue数目,那么多余的Consumer 将不能斲丧动静。这一点和kafka是同等的,rocketmq会尽也许地为每一个Consumer分派沟通数目的行列,分摊负载。

activemq:支持负载平衡。可以基于zookeeper实现负载平衡。

七 集群方法

Kafka:自然的‘Leader-Slave’无状态集群,每台处事器既是Master也是Slave。

分区首领匀称地漫衍在差异的kafka处事器上,分区副本也匀称地漫衍在差异的kafka处事器上,以是每一台kafka处事器既含有分区首领,同时又含有分区副本,每一台kafka处事器是某一台kafka处事器的Slave,同时也是某一台kafka处事器的leader。

kafka的集群依靠于zookeeper,zookeeper支持热扩展,全部的broker、斲丧者、分区都可以动态插手移除,而无需封锁处事,与不依赖zookeeper集群的mq对比,这是最大的上风。

rabbitmq:支持简朴集群,'复制'模式,对高级集群模式支持欠好。

rabbitmq的每一个节点,不管是单一节点体系可能是集群中的一部门,要么是内存节点,要么是磁盘节点,集群中至少要有一个是磁盘节点。

在rabbitmq集群中建设行列,集群只会在单个节点建设行列历程和完备的行列信息(元数据、状态、内容),而不是在全部节点上建设。

引入镜像行列,可以停止单点妨碍,确保处事的可用性,可是必要工钱地为某些重要的行列设置镜像。

zeromq:去中心化,不支持集群。

rocketmq:常用 多对'Master-Slave' 模式,开源版本需手动切换Slave酿成Master

Name Server是一个险些无状态节点,可集群陈设,节点之间无任何信息同步。

Broker陈设相对伟大,Broker分为Master与Slave,一个Master可以对应多个Slave,可是一个Slave只能对应一个Master,Master与Slave的对应相关通过指定沟通的BrokerName,差异的BrokerId来界说,BrokerId为0暗示Master,非0暗示Slave。Master也可以陈设多个。每个Broker与Name Server集群中的全部节点成立长毗连,按时注册Topic信息到全部Name Server。

Producer与Name Server集群中的个中一个节点(随机选择)成立长毗连,按期从Name Server取Topic路由信息,并向提供Topic处事的Master成立长毗连,且按时向Master发送心跳。Producer完全无状态,可集群陈设。

Consumer与Name Server集群中的个中一个节点(随机选择)成立长毗连,按期从Name Server取Topic路由信息,并向提供Topic处事的Master、Slave成立长毗连,且按时向Master、Slave发送心跳。Consumer既可以从Master订阅动静,也可以从Slave订阅动静,订阅法则由Broker设置抉择。

客户端先找到NameServer, 然后通过NameServer再找到 Broker。

一个topic有多个行列,这些行列会匀称地漫衍在差异的broker处事器上。rocketmq行列的观念和kafka的分区观念是根基同等的,kafka统一个topic的分区尽也许地漫衍在差异的broker上,分区副本也会漫衍在差异的broker上。

rocketmq集群的slave会从master拉取数据备份,master漫衍在差异的broker上。

activemq:支持简朴集群模式,好比'主-备',对高级集群模式支持欠好。

八 打点界面

  • Kafka:一样平常
  • rabbitmq:好
  • zeromq:无
  • rocketmq:无
  • activemq:一样平常

九 可用性

  • Kafka:很是高(漫衍式)
  • rabbitmq:高(主从)
  • zeromq:高
  • rocketmq:很是高(漫衍式)
  • activemq:高(主从)

十 动静一再

  • Kafka:支持at least once、at most once
  • rabbitmq:支持at least once、at most once
  • zeromq:只有重传机制,可是没有耐久化,动静丢了重传也没有效。既不是at least once、也不是at most once、更不是exactly only once
  • rocketmq:支持at least once
  • activemq:支持at least once

十一 吞吐量TPS

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读