【RocketMQ】初探

  |   0 评论   |   280 浏览

概述

rmqbasicarc.png
apache RocketMQ是一个分布式的消息,他是一个低延迟、高性能、高可靠性、万亿容量、灵活可扩展的流媒体平台,他包括四个部分:name servers,brokers,producers,consumers,他们中的每一个都可以水平扩展,这样就避免了单点故障。

NameServer集群

name servers提供一个轻量级服务发现和路由选择,每个name server记录所有的路由信息,提供相应的读写服务,支持快速存储扩展。

Broker集群

broker通过TOPIC和QUEUE机制来对消息进行存储,他们支持推拉模式,包含容错机制,提供强大的峰值填充和按原始时间顺序积累数以千亿计的消息的能力。另外brokers提供灾难恢复,丰富的指标统计,预警机制,以上这些功能都是传统消息系统所没有的。

Producer集群

producers支持分布式部署,分布式producer通过多种负载均衡模式发送消息到broker集群,发送进程支持快速失败和低延迟。

Consumer集群

consumer支持分布式部署,他们支持推拉模式,他还支持集群消费和消息广播,他提供实时消息订阅机制,能满足大部分消费者需求。

NameServer

NameServer是一个功能齐全的服务,主要包含以下2个功能:
1、broker管理,NameServer接受broker的注册,通过心跳机制检查每个broker是否存活。
2、路由选择管理,每个NamerServer将保留所有broker的路由信息和客户端查询的queue信息。
我们都知道,RocketMQ客户端(producer/consumer)将通过nameserver查询queue路由信息,但是客户端是怎么发现NameServer地址的?
这里有四种方式来获取地址:
1、编程方式,使用producer.setNamesrvAddr("ip:port")
2、java选项,使用rocketmq.namesrv.addr
3、环境变量,使用NAMESRV_ADDR
4、HTTP端点

Broker服务

broker服务提供可高的消息存储和传递、消息查询、保证HA,通过下面图片可以看到broker服务有以下几个重要的子模块:
1、Remoting Module,borker的入口,处理客户端的所有请求;
2、Client Manager,管理客户端(producer/consumer)并维护consumer的主题订阅;
3、Store Service,提供简单的API在物理磁盘上存储或者查询消息;
4、HA Service,主broker(负责读写)和从broker(负责读)之间同步数据;
5、Index Service,根据指定的key来对消息创建索引,提供快速消息查询;
rmqbasiccomponent.png

broker配置

Property Name Default value Details
listenPort 10911 客户端监听端口
namesrvAddr null 地址
brokerIP1 ip地址 多个地址
brokerName null broker名称
brokerClusterName DefaultCluster broker属于哪个集群
brokerId 0 为0表示master, 大于0表slave
storePathCommitLog $HOME/store/commitlog/ commit log的路径
storePathConsumerQueue $HOME/store/consumequeue/ consume queue的路径
mapedFileSizeCommitLog 1024 * 1024 * 1024(1G) 提交日志的映射文件大小
deleteWhen 04 何时删除超出保留时间的提交日志
fileReserverdTime 72 删除提交日志之前保留它的小时数
brokerRole ASYNC_MASTER SYNC_MASTER/ASYNC_MASTER/SLAV
flushDiskType ASYNC_FLUSH SYNC_FLUSH:在确认生产者之前将每个消息刷新到磁盘;ASYNC_FLUSH:利用了组提交,从而获得了更好的性能;

也可以关注我的公众号:程序之声
图片
关注公众号,领取更多资源

本文为博主原创文章,未经博主允许不得转载。

评论

发表评论