如何访问集群中指定的服务器,【Nacos源码之配置管理 六】集群模式下服务器之间是如何互相感知的...

前言

我们用Nacos当配置中心的时候,上一篇文章中 【Nacos源码之配置管理 五】为什么把配置文件Dump到磁盘中 知道了,所有的配置文件都会Dump到服务器的本地磁盘中, 那么集群模式下:

服务器之间如何彼此感知发现的?

当某一台机器宕机挂掉之后怎么处理的?

如何获取本地Ip

获取服务器列表

服务器列表健康检查

阅读完本文,会带你对上面的问题有个很清晰的认知;

集群模式

我们先集群模式启动,开启调试

集群模式启动

配置集群机器列表;文件 distribution/conf/cluster.conf 中配置所有的机器列表;IP:PORT的形式;例如 df04aba50be3707400b7df664f5dffde.png

执行打包命令

mvn -Prelease-nacos clean install -U -Dmaven.test.skip=true

打包完毕,执行启动脚本

sh distribution/target/nacos-server-{version}/nacos/bin/startup.sh

启动之后就可以进行远程调试了;怎么调试可以参考【Nacos源码之配置管理 一】阅读源码第一步,本地启动Nacos

ServerListService 服务器列表

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

方式一:本地读取cluster.conf

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

方式二:读取统一配置中心配置文件

07486b0984c19a239d402fc62392ada6.png

ApplicationListener 监听器

ServerListService实现了SpringBoot的扩展类ApplicationListener;并且事件源是WebServerInitializedEvent: 是WebServer初始化的事件;通过WebServerInitializedEvent可以拿到WeServer的实例;通过WeServer.getPort()拿到启动的端口; 关于Spring的事件监听可以看 【Nacos源码之配置管理 二】Nacos中的事件发布与订阅--观察者模式

在ServerListService中就是通过这个获取Server的端口号

这个ServerListService是服务器列表,这里面保存着所有的服务器信息; 那么是如何获取所有服务器信息的呢?;接下来分析源码

初始化方法init

这个初始化的init方法里面做了什么事情呢?

Spring启动时,执行 @PostConstruct 注解的初始化方法;

@Service

public class ServerListService implements ApplicationListener {

@Autowired

private Environment env;

@Autowired

private ServletContext servletContext;

private int port;

@PostConstruct

public void init() {

serverPort = System.getProperty("nacos.server.port", "8848");

String envDomainName = System.getenv("address_server_domain");

if (S

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值