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


新闻资讯

MENU

软件开发知识
原文出处: 谢晞鸣

1.为什么是RocketMQ

为什么是 RocketMQ,而不是 ActiveMQ/RabbitMQ/Kafka 呢?这不是技能选型,昆山软件开发,我只是想找一个业界较量好的、开源的 MQ 系统,进修一下 MQ 的事情道理。所以首选 Java 的(固然语言对我来说不是问题,然照旧有点进修本钱的),这就只剩下 RocketMQ 和 ActiveMQ 了,这两个那就必定 选RocketMQ 了,究竟人家是这么吹牛逼的: “万亿级数据洪峰下的漫衍式动静引擎”。

2.项目布局

为了统一代  <a href=苏州软件定制开拓 码气势气魄 test" title="300" src="http://www.importnew.com/https:/fdx321.github.io/images/%E3%80%90RocketMQ%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E3%80%911-%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84_1.png" />

  • benchmark, 一些 sh 剧本,昆山软件开发,挪用 example 模块中的 benchmark Producer/Consumer 来做一些测试
  • broker, 动静署理,昆山软件开发,起到串联 Producer/Consumer 和 Store 的浸染
  • client,包括 Producer 和 Consumer,认真动静的发和收
  • common,一些民众代码,供其他模块依赖
  • distribution, 一些 sh 剧本和 设置,主要是在陈设的时候用的
  • example,利用样例,包罗各类利用要领,Pull模式、Push模式、广播模式、有序动静、事务动静等等
  • filter,过滤器,用于处事端 SQL92 的过滤方法
  • filtersrv, 过滤器 server, 用于消费端过滤,主要认真动态的加载和实例化过滤器
  • logappender,日志相关
  • namesrv,可以领略成注册中心,每个 broker 城市在这里注册,client 也会从这里获取 broker 的相关信息
  • openmessaging, 讲真,还没去相识,应该是雷同于 opentracing 这种,凭据一套尺度(可能叫API),封装了一下RocketMQ本来的接口,让其可以通用一点。我猜的!
  • remoting,基于 Netty 实现的网络通信模块,包罗 Server 和 Client, client、broker、filtersrv 等模块对它都有依赖
  • srvutil, 内里只有两个类,一个是来处理惩罚呼吁行的,一个是来设置 shutdownHook 的
  • store,认真动静的存储和读取
  • style,代码模板,为了统一代码气势气魄
  • test, 测试用例
  • tools, 一些东西类,基于它们可以写一些 sh 东西来打点、查察MQ系统的一些信息
  • 3.我的重点存眷

    这么多模块,我并不是每一个都一行行代码的去读,像 distribution、test、tools 这些我就或许扫了一眼。那么哪些是我重点存眷的呢?主要是 broker、client、common、namesrv、store、remoting,这几个是焦点模块,值恰当真研读,其它模块不要它们也能跑起来。

    4.RocketMQ逻辑陈设布局

    为了统一代  <a href=苏州软件定制开拓 码气势气魄 test" title="" src="http://www.importnew.com/https:/fdx321.github.io/images/%E3%80%90RocketMQ%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%E3%80%911-%E6%80%BB%E4%BD%93%E6%9E%B6%E6%9E%84_2.png" />
    这是 RocketMQ 的逻辑陈设布局(参考《RocketMQ道理简介 v3.1.1》),包罗 producer/broker/namesrv/consumer 四大部门。namesrv 起到注册中心的浸染,陈设的时候会用到 rocketmq-namesrv/rocketmq-common/rocketmq-remoting 三个模块的代码;broker 陈设的时候会用到 rocketmq-broker/rocketmq-store/rocketmq-common/rocketmq-remoting 四个模块的代码;producer 和 consumer 会用到 rocketmq-client/rocketmq-common/rocketmq-remoting 三个模块的代码,这里固然将它们分隔画了,但实际上一个应用往往既是producer又是consumer。

    Consumer 和 Broker 之间其实还可以加一个 filtersrv,用来做消费端的动静过滤。

    这内里尚有几个观念:

  • Producer Group, 一类 Producer 的荟萃的名称
  • Consumer Group, 一类 Consumer 的荟萃的名称
  • Topic, 动静的主题,用来标识一类动静,尚有 Tag 可以用来区分一个 Topic 下的多种动静。
  • Producer Group、Consumer Group 和 Topic 之间并没有强制的某种干系,一个 Producer Group 可以发多个 Topic 的动静,一个 Consumer Group 也可以消费多个 Topic 的动静。一个Consumer Group 可以消费来自多个 Producer Group的动静,一个 Producer Group 的动静也可以被多个 Consumer Group 消费。

    Reference

  • RocketMQ 道理简介
  • 漫衍式开放动静系统(RocketMQ)的道理与实践