欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

分区在 RocketMQ 图纸加密 中有时被称为队列

点击: 次  来源:劳务派遣管理系统 时间:2018-10-13

原文出处: Valleylord

RocketMQ 是出自 A 公司的开源产物,用 Java 语言实现,在设计时参考了 Kafka,并做出了本身的一些改造,动静靠得住性上比 Kafka 更好,今朝,RocketMQ 的文档仍然不足富厚 1 2,社区仍然无法与 Kafka 比肩,但 A 公司已经推出了基于 RocketMQ 的云产物 3,相信将来 RocketMQ 也会有不错的成长。本文回收 RocketMQ 3.2.6 举办尝试,由于 RocketMQ 与 Kafka 很相似,本文许多处所对两者做出了较量。

根基观念

RocketMQ 由于警惕了 Kafka 的设计,包罗组件的定名也许多与 Kafka 相似,下面摘抄一段《RocketMQ 道理简介》中的先容,可以与 Kafka 的定名比对一下,

  • Producer,动静出产者,认真发活跃静,一般由业务系统认真发活跃静。
  • Consumer,动静消费者,认真消费动静,一般是靠山系统认真异步消费。
  • Push Consumer,Consumer 的一种,应用凡是向 Consumer 工具注册一个 Listener 接口,一旦收到动静,Consumer 工具立 刻回调 Listener 接口要领。
  • Pull Consumer,Consumer 的一种,应用凡是主动挪用 Consumer 的拉动静要领从 Broker 拉动静,主动权由应用节制。
  • Producer Group,一类 Producer 的荟萃名称,这类 Producer 凡是发送一类动静,且发送逻辑一致。
  • Consumer Group,一类 Consumer 的荟萃名称,这类 Consumer 凡是消费一类动静,且消费逻辑一致。
  • Broker,动静中转脚色,认真存储动静,滚动员静,一般也称为 Server。在 JMS 类型中称为 Provider。
  • 《RocketMQ 道理简介》中还先容了一些其他的观念,譬喻,广播消费和集群消费,广播消费是 Consumer Group 中对付同一条动静每个 Consumer 都消费,集群消费是 Consumer Group 中对付同一条动静只有一个 Consumer 消费。Kafka 回收的是集群消费,不支持广播消费(好吧,是我没有找到)。再譬喻,普通顺序动静和严格顺序动静,劳务派遣管理系统,普通顺序动静在 Broker 重启环境下不会担保动静顺序性;严格顺序动静纵然在异常环境下也会担保动静的顺序性。小我私家领略,所谓普通顺序动静,昆山软件开发,应该就是 Kafka 中的 Partition 级别有序,严格顺序动静,应该是 Topic 级别有序,但文中也提到,这样的有序级别是要支付价钱的,Broker 集群中只要有一台呆板不行用,则整个集群都不行用,低落处事可用性。利用这种模式,需要依赖同步双写,主备自动切换,但自动切换成果今朝还未实现(我猜,自动切换仅仅是没开源吧)。说白了,严格顺序动静不具备出产可用性,本身玩玩还行,其应用场景主要是数据库 binlog 同步。

    关于 RocketMQ 和 Kafka 的比拟,可以参考 RocketMQ Wiki 中的文章 4,看看就行,不必较真。

    关于顺序和分区

    顺序性的话题,适才已经提到了一些,RocketMQ 的实现应该不弱于 Kafka。对付分区,RocketMQ 好像有意弱化了这个观念,只有在 Producer 中有一个参数 defaultTopicQueueNums,分区在 RocketMQ 中有时被称为行列。RocketMQ 的普通顺序动静模式,应该就是分区顺序性,这点与 Kafka 一致。

    关于高可用

    RocketMQ 实现高可用的方法有多种,《RocketMQ 用户指南》文档中提到的有:多主模式、多主多从异步复制模式、多主多从同步复制模式。多主模式下,机能较好,可是在 Broker 宕机的时候,该 Broker 上未消费的生意业务不行消费;多主多从异步复制模式,与 Kafka 的副本模式较量雷同,主 Broker 宕机后,会自动切换到从 Broker,动静的消费不会呈现中断;多主多从同步复制模式更进一步,回收同步刷盘的方法,制止了主 Broker 宕机带来的动静丢失,可是,今朝不支持自动切换。

    固然 RocketMQ 提供了多种高可用方法,可是今朝能出产利用的就只有多主多从异步复制模式,纵然在这个模式上,其实现也比 Kafka 要差。因为 RocketMQ 的机制中,主从干系是工钱指定的,主 Broker 上包袱所有的动静派发,而 Kafka 的主从干系是通过选举的方法选出来的,每个分区的主节点都是纷歧样的,可以从差异的节点派动员静。Kafka 的模式是分手模式,有利于负载平衡,并且当一个 Broker 宕机的时候,只影响部门 Topic,而 RocketMQ 一旦主 Broker 宕机,会影响所有的 Topic。别的,Kafka 可以支持 Broker 间同步复制(通过配置 Broker 的 acks 参数),这样比的话,RocketMQ 就差太多了。

    关于 RocketMQ 的先容,昆山软件开发,网上的文章不算太多,也较量杂,《漫衍式开放动静系统(RocketMQ)的道理与实践》5 6 7这篇道理先容的不错,推荐。

    RocketMQ 的东西和编程接口

    RocketMQ 的东西

    对较量 Kafka 而言,RocketMQ 提供的东西要少一些,如下,

    bin/mqadmin
    bin/mqbroker
    bin/mqbroker.numanode0
    bin/mqbroker.numanode1
    bin/mqbroker.numanode2
    bin/mqbroker.numanode3
    bin/mqfiltersrv
    bin/mqnamesrv
    bin/mqshutdown