RocketMQ 架构

作者: Lin_Shao | 来源:发表于2019-04-26 23:32 被阅读1次

    RocketMQ Architecture 译文

    概述

    Apache RocketMQ是一个低延时、高性能、可靠的分布式消息流平台,它具有兆级容量和灵活扩展性的特点。它包括四个部分:name servers, brokers, producers and consumers。每个部分都能水平扩展以避免单点故障。


    image.png

    Name Server 集群

    Name Servers 提供轻量级的服务发现和路由功能。每个Name Server记录全部的路由信息,提供相应的读写服务,支持快速存储扩展。

    Broker 集群

    Broker 集群通过TOPIC和QUEUE机制实现消息存储功能。Broker支持Push和Pull两种模式,容错机制(2到3个备份),和短时间内应对成百上千亿消息的强大的削峰填谷功能。另外,Broker还支持灾难恢复,丰富的统计指标等等一系列在传统消息系统中缺乏的可选机制。

    Producer 集群

    Producer支持分布式部署。分布式的Producers通过多路负载均衡模式向Broker集群发送消息。发送程序支持快速失败和低延时。

    Consumer 集群

    Consumer同样支持分布式部署,而且支持Push和Pull两种模式。它还支持集群消费和消息广播。同时提供实时消息订阅以满足更多消费需求。

    push: Broker向Consumer推送消息,有可能将消费者压垮
    pull: Consumer主动向Broker拉取消息

    Name Server

    Name Server是一个功能完备的服务器,它只要有两个功能:

    • Broker 管理。Name Server接收Broker集群注册,并且提供心跳机制检测Broker是否存活。
    • 路由管理。每个Name Server都有完整的Broker路由信息和队列信息,供客户端查询

    众所周知,RocketMQ的客户端(Producer/Consumer)在Name Server上查询队列路由信息,但是客户端怎么发现Name Server地址呢?

    以下有四种方式:

    • 编程方式,像 producer.setNamesrvAddr("ip:port")
    • java 参数,用 rocketmq.namesrv.addr
    • 环境变量,用NAMESRV_ADDR
    • HTTP 接口

    更多详情请点击这里.

    Broker Server

    Broker 负责消息的存储、分发、查询以及高可用保证(防丢)等等。
    Broker有以下几个重要模块:

    • 远程模块,broker的入口,处理客户端请求
    • 客户端管理,管理客户端和维持Consumer Topic订阅
    • 存储服务,提供简单的API落地消息以及从磁盘查询数据
    • 高可用服务(HA),在Broker Server之前同步数据
    • 索引服务,通过特殊key给消息建立索引,提供快速的消息查询。
    image

    相关文章

      网友评论

        本文标题:RocketMQ 架构

        本文链接:https://www.haomeiwen.com/subject/loucnqtx.html