nacos 源码解析系列(六)

集群模式下集群是如何互相感知的

前言


前面我们介绍了Nacos为什么把配置文件Dump到磁盘中,那么集群模式下:

  • 服务器之间是如何彼此感知发现的呢?
  • 当某一台机器宕机之后怎么处理呢?
  • 如何获取本地ip
  • 获取服务器列表
  • 服务器列表健康检查
集群模式

​ 首先我们来看源码:nacos/distribution

ServerMemberManager 服务列表

在看源码之前我们先说明一下Nacos 读取服务器列表的两种方式

方式一:本地读取cluster.conf

每台服务器本地维护一份集群配置文件 cluster.conf

072001.png

方式二:读取统一配置中心的配置信息

072002.png

ApplicationListener 监听器

ServerListService 实现了SpringBoot的扩展类ApplicationListener;并且事件源是WebServerInitializedEvent:WebServer初始化的事件;通过WebServerInitializedEvent可以拿到WeServer的实例;通过WeServer.getPort()拿到启动的端口;

下面 让我们来 加入一篇 **WebServerInitializedEvent ** 的研究吧~~~

首先来写一个简化版的 ServiceManager ,nacos 也是这么实现的,其实大多数需要上报自己服务Ip Port 到公共配置中心的都需要这个功能。

先来看我们的简单类:

@Component(value = "serviceManager")
public class ServiceManager implements ApplicationListener {
    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        final int port = event.getWebServer().getPort();
    }
}

这个简单的代码就实现了获取服务器自己端口然后可以完成上报的功能。

你可能感兴趣的:(nacos 源码解析系列(六))