NameServer是什么
知其然,再知其所以然,那到底NameServer是个什么东西呢? NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。 NameServer存储Topic和Broker的信息,Broker启动的时候会向所有的NameServer注册。Producer在发送消息之前会先从NameServer获取Broker地址列表,按照负载均衡算法从列表中选择一台Broker服务器发送消息 NameServer和Broker保持长连接,每隔30s检测Broker是否存活,如果Broker宕机,从路由注册表中删除。路由变化不会马上通知Producer,这样实现降低了NameServer实现复杂度,Producer会通过容错机制来保证消息发送高可用。 Producer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳。Producer完全无状态,可集群部署。 Consumer与Name Server集群中的其中一个节点(随机选择)建立长连接,定期从Name Server取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。 NameServer集群 RocketMQ集群,应该是线上采用的相当多的一种架构了,分为四个主要组成部分:生产者集群、消费者集群、NameServer集群和Broker集群,其中的NameServer集群是什么样子的呢?这个还挺有意思的,和别的集群不太一样,一起来看看为啥 我们了解的集群,一般都是互帮互助,起到一个高可用的作用;绝大多数集群应该都是这个样子的,而NameServer集群却不是这个样子的,NameServer集群说白了其实属于一个伪集群,为什么这么说呢? 因为NameServer集群中的多个节点是互不交互的,就是等同于多个独立的NameServer机器部署在NameServer集群中,每个机器都可以单独支持这个集群的运转,多个机器的作用其实就是备份的作用 NameServer集群如何部署 NameServer 是整个集群的路由中心,如果没有了它,生产者往哪个 Broker 投递消息都不知道,没有了它,会很麻烦! 为了保证高可用性,NameServer 必然是需要支持多台部署的。如果 NameServer 就部署一台机器的话,一旦它宕机了会导致 RocketMQ 集体出现故障。 所以多机器部署保证了任何一台 NameServer 宕机,其他机器上的 NameServer 可以继续对外提供服务。 如果NameServer集群中的一个机器挂掉了怎么办,对集群有什么影响
对于整个RocketMQ集群来说问题不大,因为设计优秀的RocketMQ集群不会因为一台NameServer机器挂掉而导致整个集群受影响甚至不可用。一般我们会有报警系统来报警关于NameServer机器挂掉的信息,有相应的运维人员再去处理 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |