开发者社区 > 云原生 > 云消息队列 > 正文

咨询各位一些问题 1.RocketMQ中 NameServer 有一个 KVConfigManage

咨询各位一些问题 1.RocketMQ中 NameServer 有一个 KVConfigManager ,这个作用是什么呢? 2.Broker 在启动的过程中 启动了 两个 RemotingServer,一个叫 RemotingServer 另一个叫 fastRemotingServer,我看了半天功能几乎是一样的,感觉只需要一个 就足够了呀,为什么要这样设计呢? 看了半天源码也没明白,网上也没查到相关资料,求大佬解惑。

展开
收起
十一0204 2023-04-03 16:35:00 279 0
4 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在 RocketMQ 中,KVConfigManager 是 NameServer 中的一个组成部分,主要用于管理 RocketMQ 名称服务中的各种配置信息。它负责维护一个键值对(KV)数据结构,用于存储和维护 NameServer 的各种配置参数,比如 brokerName、brokerId、clusterName、brokerIP1、brokerIP2 等各种参数。

    KVConfigManager 会在 NameServer 启动时读取配置文件,将各个配置参数加载到内存中,然后将其存储在 RocksDB 中。当 KVConfigManager 检测到某个配置参数发生变化时,它会将其更新到内存和 RocksDB 中,以保持配置参数的一致性。同时,KVConfigManager 还提供了一些 API 接口,供其他模块调用,用于获取和更新 NameServer 的配置信息,实现配置信息的动态管理,从而方便运维人员进行配置调整。

    例如,使用 KVConfigManager 可以动态的添加、更新、删除 Broker 节点信息、Topic 配置信息、路由信息等,而不需要重启整个 NameServer 或者 Broker 集群,从而可以提高系统的可用性。此外,KVConfigManager 还提供了一些监听事件(Listener)接口,供用户自定义处理配置信息的变化,从而实现更灵活的配置管理方式。

    2023-04-24 14:27:13
    赞同 展开评论 打赏
  • 意中人就是我呀!

    1、一个简单的kv存储功能 2、有些一些背景的历史原因,没有什么特别原因。 fastRemotingServer功能和正常的server一样的, 感觉是一个backup。 正常的端口不可用的时候, 可以用backup的端口。换个角度,以前的名字是fastRemotingServer,然后重构之后是RemotingServer,然后为了兼容以前的jar包,这个也没有去掉。跟remoting协议有关系的,remotingserver处理一般请求 fastremotingserver主要是vipchannel的请求处理 更像是普通channel比较繁忙的时候 作为客户端降级来用。此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-04-05 09:10:38
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    1、RocketMQ中 NameServer 有一个 KVConfigManager ,这个的作用是管理 NameServer 的配置信息,例如 Broker 的路由信息,Topic 的配置信息等。KVConfigManager 会定时从磁盘文件中读取配置信息,并将其缓存到内存中,提高信息的访问速度。

    2、在 RocketMQ 中,Broker 启动的过程中会启动两个 RemotingServer,一个是普通的 RemotingServer,另一个是 fastRemotingServer。这是因为在消息发送和消费的过程中,Broker 会与 Producer 和 Consumer 通过网络进行通信,而为了提高通信效率,RocketMQ 采用了多种优化技术,例如 Netty、序列化/反序列化等。其中 fastRemotingServer 使用了 Netty 的 epoll 模型,可以大幅提高网络通信效率,而普通的 RemotingServer 则采用了阻塞 IO 模型,提供了更好的兼容性和扩展性。因此,采用两种不同的 RemotingServer 是为了兼顾通信效率和兼容性/扩展性。

    2023-04-03 17:22:54
    赞同 展开评论 打赏
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    你好,个人理解是这样的。

    NameServer是一个重要的组件,用于管理Broker的元数据信息,包括Topic、Producer、Consumer等。KVConfigManager是NameServer中的一个关键组件,用于管理各种配置信息,包括Broker的地址、Topic的配置信息等。它会将这些配置信息保存在内存中,并且定期将其持久化到磁盘上,以保证配置信息的可靠性和持久化。

    启动两个RemotingServer,这样设计可以提高RocketMQ的可靠性和容错性。一个RemotingServer出现了故障,另一个仍然可以继续提供服务,避免了单点故障的问题。

    看源码能发现,fastRemotingServer是基于Netty框架的高性能通信框架,相比默认的Java NIO的通信框架的RemotingServer具有更高的性能和更低的延迟。

    2023-04-03 17:21:26
    赞同 展开评论 打赏
问答分类:
相关产品:

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载