标签:读写 地址 快速定位 topic 连接 nothing 环境 一个 while
RocketMQ
是一个分布式的低延迟
,高性能
,可靠性高
的消息系统,
提供轻量的服务发现和路由的功能。每个NameServer记录了所有的路由信息,提供相应的读写服务和快速扩展的功能。
NameServer 遵循的是share-nothing design
。也就是说NameServer之间不共享任何信息。Brokers
给所有的NameServer发送心跳数据。Producers and consumers can query meta data from any of name servers available while sending / consuming messages. Producer
和Consumer
可以通过任何可用的NameServer
在发送、接收消息的时候得到borker
的元数据信息,
Broker
:NameServer接受Broker Cluster
的注册,并且提供心跳检测机制来判断Broker是否存活。queue(队列)
查询(producer/consumer)维持着broker集群的所有路由信息,使客户端能快速定位到相应的broker。producer.setNamesrvAddr("ip:port")
rocketmq.namesrv.addr
NAMESRV_ADDR
Broker
通过Topic
和Queue
的机制提供消息的存储。支持Pull
和Push
模式,通常有2、3个副本支持容错机制。并提供强大的峰值填充和按原始时间顺序累积数千亿条消息的能力;除此之外,broker还提供容灾恢复,丰富的指标和告警机制;
在broker集群中可以分为两种角色,Master
、Slave
。Master
节点可以接受读写请求,而Slave
节点只能接收读请求
Broker
有的消息存储
、消息投送
、消息查询
、保证高可用
等作用。
Consumer
维护它所订阅的topic;Index Service: 为那些指定key的消息快速建立索引,并能为客户端快速查询消息
支持Pull
和Push
模式拉取消息。在广播模式
下,一个consumerGroup中的所有消费者都能收到消息,默认情况
下,一个consumerGroup只能有一个consumer消费这条消息
broker与consumer、producer联系的中间载体。
Topic与Queue的对应关系使1对多的关系,一个Topic可以包含多个Queue,主要是做负载均衡。当发送消息时,Producer只需要指定Topic,他就会根据topic的路由信息来来选择具体发送到哪个Queue上。 同样的,当消费者订阅消息的时候,也会根据负载均衡算法
来决定订阅topic上的哪些Queue的消息。
rocketmq在存储消息的时候会为每个topic下的每个queue生成一个消息的索引文件,每个queue都对应这样一个offset来记录当前Queue消息总数。
为了使集群能在有节点宕机的时候仍然能够正常工作,推荐部署两个或者更多的NameServer
,只要有一台NameServer实例正常,整个集群都能正常提供服务。
属性名 | 默认值 | 描述 |
---|---|---|
listenPort | 10911 | broker启动端口 |
namesrvAddr | null | nameServer 地址 |
brokerIP1 | 当有多个地址的时候,需要配置 | |
brokerName | broke名称 | |
brokerClusterName | broker集群名称 | |
brokerId | 0 | 0:主; > 0 从 |
storePathCommitLog | ~/store/commitlog/ | 提交日志存储路径 |
storePathConsumerQueue | ~/store/consumequeue/ | 消费队列存储路径 |
mapedFileSizeCommitLog | 1024 * 1024 * 1024(1G) | mapped file size for commit log |
deleteWhen | 04(凌晨4点) | 超过保留时间 的commit log的删除时间 |
fileReserverdTime | 72 | commitlog的存活时间(小时) |
brokerRole | ASYNC_MASTER | broker角色(SYNC_MASTER/ASYNC_MASTER/SLAVE) |
flushDiskType | ASYNC_FLUSH | {SYNC_FLUSH/ASYNC_FLUSH}. Broker of SYNC_FLUSH mode flushes each message onto disk before acknowledging producer. Broker of ASYNC_FLUSH mode, on the other hand, takes advantage of group-committing, achieving better performance. |
brokerClusterName = bm-test-rocketmq-broker-cluster
# 108的从节点,集群中主从的对应关系是通过brokerName做映射的
brokerName = bm-test-rocketmq-broker-108
brokerId = 1
deleteWhen = 04
fileReservedTime = 72
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
listenPort=11912
# 当一台机器部署多个节点的时候,这些存储路径需要区分开来,否则启动报错
storePathCommitLog=/data/rocketmq/slave/strore/commitlog
storePathConsumerQueue=/data/rocketmq/slave/store/consumequeue
# 是否自动创建topic
autoCreateTopicEnable=true
# 在多网卡的时候需要配置
brokerIP1=192.168.242.107
# 告诉salve节点从哪台机器上同步信息
brokerIP2=192.168.242.107
namesrvAddr=192.168.240.64:9876;192.168.240.64:9877
storePathRootDir=/data/rocketmq/slave/strore/rootdir
RocketMQ学习- 1. RocketMQ的相关概念了解
标签:读写 地址 快速定位 topic 连接 nothing 环境 一个 while
原文地址:https://www.cnblogs.com/KevinStark/p/12493235.html