metaq消息中间件

1.  metaq的重要元素

    1.  消息生产者
        负责产生消息并发送消息到meta服务器
    2.  消息消费者
        负责消息的消费,meta采用pull模型,由消费者主动从meta服务器拉取数据并解析成消息并消费
    3.  Topic
        消息的主题,由用户定义并在服务端配置。producer发送消息到某个topic下,consumer从某个topic下消费消息
    4.  分区
        同一个topic下面还分为多个分区,如meta-test这个topic我们可以分为10个分区,分别有两台服务器提供,那么可能每台服务器提供5个分 区,假设服务器分别为0和1,则所有分区为0-0、0-1、0-2、0-3、0-4、1-0、1-1、1-2、1-3、1-4
    5.  Message
        消息,负载用户数据并在生产者、服务端和消费者之间传输
    6.  Broker
        就是meta的服务端或者说服务器,在消息中间件中也通常称为broker。
    7.  消费者分组(Group)
        消费者可以是多个消费者共同消费一个topic下的消息,每个消费者消费部分消息。这些消费者就组成一个分组,拥有同一个分组名称,通常也称为消费者集群
    8.  Offset
        消息在broker上的每个分区都是组织成一个文件列表,消费者拉取数据需要知道数据在文件中的偏移量,这个偏移量就是所谓offset。Offset是绝对偏移量,服务器会将offset转化为具体文件的相对偏移量

2.  总体架构图

    1.  消息中间件中有两个角色: "消息生产者(Producer)"和"消息消费者(Consumer)"。Meta里同样有这两个概念,消息生产者负责创建消息并发送到Meta服务器(Broker),Meta服务器会将消息持久化到磁盘,消息消费者从Meta服务器拉取消息并提交给应用消费。

    2.  MetaQ使用zookeeper发布和订阅服务,并默认使用zookeeper存储消费者offset

     

3.  metaq的主要配置项

    1.  zookeeper配置

    2.  系统配置

okerId: 服务器集群中唯一的id,集群间的brokerId不能一样,必须为整型0-1024之间。对服务器集群的定义是使用同一个zookeeper并且在zookeeper上的root path相同

hostName: 服务器hostname,默认取本机IP地址,如果你是多网卡机器,可能需要明确指定。服务器会将此hostname加上端口写入到zookeeper提供给客户端发现。

serverPort:服务器端口,默认8123

numPartitions:系统默认情况下每个topic的分区数目,默认为1,可被topic配置覆盖。逻辑分区的作用不仅仅是通过索引提供快速定位消息的功能,它还跟整个metaq的集群有很大的关系。单个服务器的总分区数目不建议超过1000,太多将导致频繁的磁盘寻道严重影响IO性能。

dataPath: 服务器数据文件路径,默认在~home/meta下,每个topic可以覆盖此配置,对于多块磁盘的机器,可设置不同topic到不同磁盘来提升IO效率。

dataLogPath:数据日志文件路径,主要存放事务日志,默认跟dataPath一致,最好单独设置到不同的磁盘或者目录上。如果为空,使用指定的dataPath

getProcessThreadCount: 处理get请求的并发线程数,默认为CPUS*10。

putProcessThreadCount: 处理put请求的并发线程数,默认为CPUS*10。

maxSegmentSize: 单个数据文件的大小,默认为1G。默认无需修改此选项。

maxTransferSize: 传输给消费者的最大数据大小,默认为1M,请根据你的最大消息大小酌情设置,如果太小,每次无法传输一个完整的消息给消费者,导致消费者消费停滞。可设置成一个大数来取消限制。

 

acceptPublish: 是否接收消息,默认为true;如果为false,则不会注册发送信息到zookeeper上,客户端当然无法发送消息到该broker。本参数可以被后续的topic配置覆盖。

acceptSubscribe: 与acceptPublish类似,默认也为true;如果为false,则不会注册消费信息到zookeeper上,消费者无法发现该broker,当然无法从该broker消费消息。本参数可以被后续的topic配置覆盖。

 

stat:全局性地控制是否开启实时统计,可被topic配置覆盖,默认为false。

loadMessageStoresInParallel: 是否启动时并行加载数据,开启可提升启动速度。默认不开启。开启后启动日志顺序可能紊乱。

updateConsumerOffsets: 当消费者的offset不在Broker的数据范围内,是否强制更新消费者的offset为当前最大offset。默认为false。测试开发环境建议开启此选项,生产环境不建议

    3.  topic配置

4.  metaq主要命令

    1.  启动

    2.  关闭

    3.  重启

    4.  重新加载topic

    5.  查看状态

        bin/metaqserver.sh stats

5.  安装配置步骤

    1.  安装java运行环境

    2.  安装zookeeper

    3.  安装metaq

6.  进入zookeeper查看topic

    zookeeper的bin目录下./zkCli.sh -server 127.0.0.1:2181

    进入zookeeper,以后ls /

    ls /meta

    ls /meta/brokers  查看

    ls /meta/brokers/topics  查看消息标题

    ls /meta/brokers/ids  查看列表服务器

    ls /meta/broker/ids/0

    get /meta/broker/ids/0

 

posted @ 2018-09-13 22:54  奋斗史  阅读(336)  评论(0)    收藏  举报