前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RocketMQ 架构中的九个组件

RocketMQ 架构中的九个组件

作者头像
heasy3
发布2020-08-01 15:05:36
7100
发布2020-08-01 15:05:36
举报
文章被收录于专栏:用户7614879的专栏

一、common 通用的常量枚举、基类方法或数据结构,按描述的目标来分包,通俗易懂,包名有:admin、consumer、filter、hook、message等

二、remoting 用netty写的客户端和服务端,fastjson做的序列化。自定义二进制协议

三、srvutil 只有一个ServerUtil类 只提供Server程序依赖,目的是为了拆解客户端依赖,尽可能减少客户端依赖

四、store 存储服务。消息存储、索引存储、commitLog存储

五、client 客户端。包含producer端和consumer端,发送消息和接受消息的过程,API

六、filtersrv 消息过滤器server,现在rocketmq的wiki上有示例代码及说明

七、broker 对consumer和producer来说是服务端,接受producer发来的消息并存储,同时consumer来这里拉取消息

八、tools 命令行工具

九、namesrv NameServer,类似SOA服务的注册中心,这里保存着消息的TopicName,队列等运行时的meta信息,一般系统分dataNode和nameNode,这里是nameNode。


模块依赖:最底层为基础实现,最上层为对外提供的服务模块


rocketmq-namesrv模块介绍

  • namesrv扮演着namenode角色,记录运行时消息相关的meta信息,以及broker和filtersrv运行时信息,可以部署集群。
  • 可以把namesrv理解成一个轻量级的zookeeper,他比zookeeper性能更好,可靠性更强。
  • namesrv主要是节点之间相互进行心跳检测、数据通信、集群高可靠性、一致性、容错性等方面的核心模块。
  • namesrv的底层通信机制与netty进行联系,上层通信与各个模块产生强一致性的对应关系,当broker,producer,consumer都运行后,namesrv一共有8类线程
  1. 守护线程:本质是ChannelEventListener,监听broker的channel变化来更新本地的routeInfo
  2. 定时任务线程:NSScheduledThread1 定时跑两个任务,第一个是每隔十分钟扫描不活动的broker,然后从routeinfo中删除;第 二个是每隔十分钟打印configTable信息
  3. netty的boss线程:netty的Accept线程 这里只有一个线程
  4. nettyEventExecutor线程:一个单独的线程,监听nettyChannel状态变化来通知channelEventListener来做相应的动作
  5. DestroyJavaVM线程:Java虚拟机析构钩子,一般当虚拟机关闭时用来清理或释放资源
  6. Work线程:netty的work线程(IO线程),这里可能有多个线程
  7. Handler线程:执行channelHandler方法的线程,ChannelHandler运行在该线程上,可能有多个。
  8. RomotingExecutorThread线程:服务端逻辑线程,可能有多个

rocketmq-broker模块介绍

是数据存储的核心,也是真正的MQ服务器。我们所谓的消息存储、接受、拉取、推送操作都是在broker上进行的


rocketmq-filtersrv模块介绍

在rocketmq中,使用独立的一个模块去对数据进行过滤,真正实现高内聚、低耦合的设计思想。

在使用时也要启动filter服务

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • rocketmq-namesrv模块介绍
  • rocketmq-broker模块介绍
  • rocketmq-filtersrv模块介绍
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档