RocketMQ概念详细之NameServer
在Apache RocketMQ,域名服务器 被设计为协调分布式系统的每个组件,协调主要通过管理主题路由信息来实现。
管理由两部分组成:
- Broker定期更新保存在每一个NameServer中的元数据
- NameServer为客户端提供服务,包括生产者,消费者和带有最新路由信息的命令行客户端。
因此,在启动broker和客户端之前,我们需要告诉它们如何通过向NameServer提供域名服务地址列表访问name servers。
在Apache RocketMQ,可以通过四种方式完成。
编程方式
对于Broker,你可以在broker配置文件中指定namesrvAddr=name-server-ip1:port;name-server-ip2:port。
对于生产者和消费者,我们可以像下面提供 NameServer地址列表:
//生产者 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 admin命令行,你可以像这样指定:
sh mqadmin command-name -n name-server-ip1:port;name-server-ip2:port -X OTHER-OPTION
简单例子:sh mqadmin -n localhost:9876 clusterList 假设在NameServer节点查询集群信息。
如果你已经将admin tool整合在你自己的仪表盘,你可以:
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt("please_rename_unique_group_name"); defaultMQAdminExt.setNamesrvAddr("name-server1-ip:port;name-server2-ip:port");
java选项
NameServer地址列表可以在启动前通过指定java选项 rocketmq.namesrv.addr 提供给你的应用。
环境变量
你可以export NAMESRV_ADDR 环境变量。如果设置,Brokers和clients将会检查和使用它。
HTTP Endpoint
如果你没有使用上面提到的方法指定NameServer地址列表,RocketMQ将访问以下http端点,每两分钟获取和更新NameServer地址列表,初始延迟10秒。
默认,端点:
http://jmenv.tbsite.net:8080/rocketmq/nsaddr
你可以覆盖jmenv.tbsite.net使用java选项:rocketmq.namesrv.domain,你也可以覆盖nsaddr 部分使用java选项:rocketmq.namesrv.domain.subgroup。
如果你在生产中已经运行RocketMQ,推荐使用这种方法,因为它提供了最大的灵活性。你可以根据NameServer系统的负载动态增加或移除NameServer节点,而无需重新启动brokers 和clients。
优先级
Programmatic Way > Java Options > Environment Variable > HTTP Endpoint
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Nacos 发布0.3.0版本,迄今为止最好看的版本
近日,Nacos 0.3.0 正式发布,该版本旨在增强对服务列表,健康状态管理,服务治理,分布式配置管理等方面的管控能力,以便进一步帮助用户降低管理微服务应用架构的成本,在第一版的 UI 功能规划中,将提供包括下列基本功能: 1、服务管理 服务列表及服务健康状态展示 服务元数据存储及编辑 服务流量权重的调整 服务优雅上下线 2、配置管理 多种配置格式编辑 编辑DIFF 示例代码 推送状态查询 配置版本及一键回滚 3、命名空间 特性详解 - 服务管理 开发者或者运维人员往往需要在服务注册后,通过友好的界面来查看服务的注册情况,包括当前系统注册的所有服务和每个服务的详情。并在有权限控制的情况下,进行服务的一些配置的编辑操作。Nacos在这个版本开放的控制台的服务发现部分,主要就是提供用户一个基本的运维页面,能够查看、编辑当前注册的服务。 服务列表管理服务列表帮助用
- 下一篇
Spring Cloud 2.x系列之网关zuul入门(一)
基于Spring的微服务结点在能力上没有高低贵贱之分,但是在角色上会分为边缘服务和内部服务两部分。内部服务是为对内暴露服务的结点,供架构内部来调用;边缘服务是对外部网络暴露的服务结点,也就是对外API接口。 开发人员为了防止服务被黑客攻击,需要编写各种权限机制,这些机制在每个微服务结点都要实现一次。一旦鉴权上有什么bug,又要全部节点上推倒重来,噩梦;运维人员在边缘服务前段都会架一个F5或者Nginx等负载均衡的代理,需要手动维护一份服务列表和服务地址的路由信息,随着结点的扩展或地址调整这份列表要变来变去。 为了解决鉴权重复的问题,使业务结点本身只关心实现自己的业务,将对权限的处理抽离到上层。外部客户先请求到Zuul上,在Zuul服务上对权限进行统一实现和过滤,以实现微服务结点的过滤和验证;为了解决请求路由和安全过滤,Spring Cloud推出了一个API gateway组件:Spring Cloud Zuul。 Zuul对路由的配置有三种方式: 第一种(path-url):如果请求/sina这个地址,将会转发到http://www.sina.com.cn上去 第二种(path-se...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6