zoukankan      html  css  js  c++  java
  • 2 生产环境下的配置和使用

    rocketMQ的各部分角色Producer 、Consumer 、Broker 和NameServer

    现实生活中的邮政系统要正常运行,离不开下面这四个角色, 
    一是发信者, 二是收信者, 三是负责暂存、传输的邮局, 四是负责协调各个地方邮局的管理机构
    对应到 RocketMQ 中,这四个角色就是
    Producer 、Consumer 、Broker 和NameServer
    启动RocketMQ 的顺序是先启动NameServer ,再启动Broker ,这时候消息队列已经可以提供服务了,
    想发送消息就使用Producer 来发送,想接收消息就使用Consumer 来接收
    为了消除单点故障,增加可靠性或增大吞吐量,可以在多台机器上部署多
    个NameServer 和Broker ,为每个Broker 部署一个或多个Slave

    多机集群配置和部署

     

    //假设这两台物理机的IP 分别是192.168.100.131 和192.168 . 100.132

    我的本机是:192.168.1.3 

    虚拟机是:172.16.151.240

    首先在这两台机器上分别启动NameServer ( nohup sh bin/mqnamesrv &),
    这样我们就得到了一个无单点的NameServer 服务, 服务地址是“ 192 . 168.100 .
    131:9876· 192.168.100.132:9876 ” 。
    然后启动Broker ,每台机器上都要分别启动一个Master 角色的Broker 和
    一个Slave 角色的Broker ,并互为主备。可以基于RocketMQ 自带的示例配置
    文件写自己的配置文件(示例配置文件在conf/2m -2s-sync 目录下)。

    这里注意点是:

    我用的centos虚拟机,默认开启了防火墙,关闭防火墙:

    [lakeslove@centos8-ui ~]$ firewall-cmd --state 
    running
    [lakeslove@centos8-ui ~]$ systemctl stop firewalld.service
    [lakeslove@centos8-ui ~]$ firewall-cmd --state 
    not running

    测试联通性:

    [lakeslove@centos8-ui ~]$ telnet 192.168.1.3 9876
    Trying 192.168.1.3...
    Connected to 192.168.1.3.
    Escape character is '^]'.
    bogon:netty lakeslove$ telnet 172.16.151.240 9876
    Trying 172.16.151.240...
    Connected to bogon.
    Escape character is '^]'.

    这里遇到的坑主要以下几个,

    1、虚拟机的内存分配太小,导致rocketmq无法启动。

    2、虚拟机没有用网络桥接模式。

    3、这本书里的讲解时把namesrvAddr=192.168.1.3:9876;192.168.1.10:9876的两个网址间添加了空格,导致无法访问第二个网址。

    4、虚拟机中的broker-b-s 无法获取主机中broker-b的正确ip,需要在broker-b的配置文件下添加 brokerIP1=192.168.1.3

    集群配置完了这个样子

    关于broker配置参数介绍

    namesrvAddr=192.168.1.3:9876;192.168.1.10:9876
    brokerClusterName=DefaultCluster
    brokerName=broker-b
    brokerId=0
    deleteWhen=04
    fileReservedTime=48
    brokerRole=SYNC_MASTER
    flushDiskType=ASYNC_FLUSH
    listenPort=10911
    storePathRootDir=/home/lakeslove/software/rocketmq/store-b
    l)namesrvAddr=192.168.100.131:9876; 192.168.100.132:9876
    NamerServer 的地址,可以是多个。
    2) brokerCl usterName=Defaul tCl uster
    Cluster 的地址,如果集群机器数比较多,可以分成多个Cluster ,每个
    Cluster 供一个业务群使用。
    3) brokerName=broker- a
    Broker 的名称, Master 和Slave 通过使用相同的Broker 名称来表明相互关
    系,以说明某个Slave 是哪个Master 的Slave 。
    4) brokerid=O
    一个Master Barker 可以有多个Slave, 0 表示Master ,大于0 表示不同
    Slave 的ID 。
    5) fileReservedTime=48

      在磁盘上保存消息的时长,单位是小时,自动删除超时的消息

    6) deleteWhen=04

    与fileReservedTim巳参数呼应,表明在几点做消息删除动作,默认值04 表示凌晨4 点

    7) brokerRole=SYNC MASTER

    broker Role 有3 种: SYNC MASTER 、ASYNC MASTER 、SLAVE

    关键词SYNC 和ASYNC 表示Master 和Slave 之间同步消息的机制,

    SYNC 的意思是当Slave 和Master 消息同步完成后,再返回发送成功的状态

    8) flushDiskType=ASYNC FLUSH

    flushDiskType 表示刷盘策略,分为SYNC_FLUSH 和ASYNC_FLUSH 两种,分别代表同步刷盘和异步刷盘

    同步刷盘情况下,消息真正写人磁盘后再返回成功状态;异步刷盘情况下,消息写人page_cache 后就返回成功状态

    9 ) listenPor t=l0 911

    Broker 监听的端口号,如果一台机器上启动了多个Broker , 则要设置不同的端口号,避免冲

    10 ) storePathRootDir= /home/rocketmq/store - a

    存储消息以及一些配置信息的根目录

    这些配置参数,在Broker 启动的时候生效,如果启动后有更改,要重启Broker

    现在使用云服务或多阿卡的机器比较普遍, Broker 自动探测获得的ip地址可能不符合要求,

    通过brokerIPl =47 .98.41.234 这样的配置参数,可以设置Broker 机器对外暴露的ip 地址

    有几个地方没看明白,主要是

    1、订阅组

    2、从slave节点读取时,如何不重复?

    3、topic和组和(生产者与消费者的)名字和broker的关系

    管理集群可以用命令行也可以用界面。

    MQAdmin 是RocketMQ 自带的命令行管理工具,在bin 目录下,运行mqadmin 即可执

    可以修改topic,修改订阅组,热更新broker配置,查询topic信息,查询集群信息。

    rocketmq-console可以图形化管理集群。

     

     

     

     

      

  • 相关阅读:
    数据结构 【实验 串的基本操作】
    Ioc容器依赖注入-Spring 源码系列(2)
    定时任务管理中心(dubbo+spring)-我们到底能走多远系列47
    jvm内存增长问题排查简例
    Ioc容器beanDefinition-Spring 源码系列(1)
    SPI机制
    java工厂-积木系列
    java单例-积木系列
    利用spring AOP 和注解实现方法中查cache-我们到底能走多远系列(46)
    java 静态代理-积木系列
  • 原文地址:https://www.cnblogs.com/lakeslove/p/13028115.html
Copyright © 2011-2022 走看看