RocketMQ——初识RocketMQ
下图是从官网摘过来的RocketMQ架构图 RocketMQ架构分为四个部分:NameServer,Broker,Producer,Consumer。其中每一部分都可以水平扩展以避免单点故障。 NameServer :NameServer集群的每一个节点都会记录完整的路由信息,提供可靠的读写服务,并支持存储扩展。NameServer负责管理以下两个部分: Broker Management:Broker集群的启动需要向NameServer注册,NameServer与Broker会建立心跳连接,随时检查一个Broker是否存活 Routing Management:NameServer集群的每一个节点都会记录整个Broker集群完整的路由信息,与客户端(客户端指Producer和Consumer,下文同义)查询的queue信息 客户端可能需要从NameServer查询相关的路由信息,但是客户端怎么知道NameServer的地址?有以下四种方式进行配置: 在代码中使用如 producer.setNamesrvAddr("ip:port") 此类代码 在配置中配置 rocketmq.namesrv.addr 配置环境变量 NAMESRV_ADDR 直接使用HTTP Endpoint 如果以上四种方式都使用了,会有一个生效优先级: 编程方式 > 配置 > 环境变量 > HTTP