美文网首页
RocketMQ最佳实践之NameServer

RocketMQ最佳实践之NameServer

作者: Kohler | 来源:发表于2017-06-22 18:32 被阅读3528次

在Apache RocketMQ中,名称服务器用于协调分布式系统的每个组件,主要通过管理主题路由信息来实现协调。

管理由两部分组成:

  • Brokers 定期更新保存在每个名称服务器中的元数据。
  • 名称服务器是为客户端提供最新的路由信息服务的,包括生产者、消费者和命令行客户端。

因此,在启动 brokers 和 clients 之前,我们需要告诉他们如何通过给他们提供的一个名称服务器地址列表来访问名称服务器。在Apache RocketMQ中,可以用四种方式完成。

编程的方式

对于 brokers,我们可以在 broker 的配置文件中指定 namesrvAddr=name-server-ip1:port;name-server-ip2:port

对于生产者和消费者,我们可以给他们提供姓名服务器地址列表如下:

DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
producer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
consumer.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");

如果您从shell中使用管理命令行,您也可以这样指定:

sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION

一个简单的例子是 sh mqadmin -n localhost:9876 clusterList 指定在名称服务器节点上查询集群信息。

如果您将管理工具集成到您自己的仪表板中,您可以:

DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name");
defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");

Java 参数

还可以通过指定后续的java参数 rocketmq.namesrvv.addr 来对您的应用程序提供名称服务器地址列表。

环境变量

您可以设置NAMESRV_ADDR环境变量。如果设置了,Broker和clients将检查并使用其值。

HTTP端点(HTTP Endpoint)

如果您没有使用前面提到的方法指定名称服务器地址列表,Apache RocketMQ将以每2分钟访问以下HTTP端点以获取和更新名称服务器地址列表,初始延迟10秒。

默认情况下,终点是:

http://jmenv.tbsite.net:8080/rocketmq/nsaddr

你可以使用这个Java选项:rocketmq.namesrv.domain 覆盖 jmenv.tbsite.net ,你也可以使用这个Java选项 rocketmq.namesrv.domain.subgroup 覆盖 nsaddr 部分

如果在生产环境中运行Apache RocketMQ,建议使用此方法,因为它提供了最大的灵活性——您可以动态地添加或删除名称服务器节点,而无需根据您的名称服务器的系统负载重新启动代理和客户端。

优先级

首先介绍的方法优先于后一种方法:

编程方式 > Java选项 > 环境变量 > HTTP端点

相关文章

  • RocketMQ最佳实践之NameServer

    在Apache RocketMQ中,名称服务器用于协调分布式系统的每个组件,主要通过管理主题路由信息来实现协调。 ...

  • 第八章 RocketMQ 最佳实践

    摘抄自:RocketMQ 最佳实践[https://github.com/apache/rocketmq/blob...

  • RocketMQ-NameServer模块解析之服务处理

    RocketMQ-NameServer模块解析之服务启动[https://www.jianshu.com/p/83...

  • RocketMQ学习

    RocketMQ架构图 NameServer NameServer是相当于zookeeper,用来管理Broker...

  • rocketmq之nameserver模块

    nameserver的代码很少,相对其他模块来说简单很多 从nameserveController的start()...

  • NameServer源码分析

    NameServer介绍 NameServer是RocketMQ集群的服务配置、管理中心,负责维护Broker集群...

  • RocketMQ系列(二):nameServer

    nameServer是什么 nameServer负责rocketMq的路由管理、服务管理、服务发现。 重点: na...

  • RocketMQ第二讲

    回顾RocketMQ物理部署结构 漫谈NameServer NameServer相当于配置中心,维护Broker集...

  • RocketMQ学习

    RocketMQ 学习 安装部署** 下载rocketmq解压:下载地址 启动nameserver,进入bin目录...

  • RocketMq NameServer

    简介: 对于一个消息队列集群来说,系统由很多台机器组成,每个机器的角色、 IP 地址都不相同,而且这些信息是变动的...

网友评论

      本文标题:RocketMQ最佳实践之NameServer

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