spring-eureka 源码解读----作为集群的eureka怎么样实现不做二次传播
2024-08-25 05:10:36
在平时工作中,eureka作为一个集群时候,我们会配置多个peer ,假设当前有服务器eureka-A,eureka-B,eureka-C。
如果Eureka A的peer指向了B, B的peer指向了C,那么当服务向A注册时,B中会有该服务的注册信息,但是C中没有。也就是说,如果你希望只要向一台Eureka注册其它所有实例都能得到注册信息,那么就必须把其它所有节点都配置到当前Eureka的peer
属性中。这一逻辑是在PeerAwareInstanceRegistryImpl#replicateToPeers()
方法中实现的:
private void replicateToPeers(Action action, String appName, String id,
InstanceInfo info /* optional */,
InstanceStatus newStatus /* optional */, boolean isReplication) {
Stopwatch tracer = action.getTimer().start();
try {
if (isReplication) {
numberOfReplicationsLastMin.increment();
}
// 如果这条注册信息是其它Eureka同步过的则不会再继续传播给自己的peer节点
if (peerEurekaNodes == Collections.EMPTY_LIST || isReplication) {
return;
}
for (final PeerEurekaNode node : peerEurekaNodes.getPeerEurekaNodes()) {
// 不要向自己发同步请求
if (peerEurekaNodes.isThisMyUrl(node.getServiceUrl())) {
continue;
}
replicateInstanceActionsToPeers(action, appName, id, info, newStatus, node);
}
} finally {
tracer.stop();
}
}
最新文章
- No Dialect mapping for JDBC type: -9
- 【Java 基础篇】【第六课】接口interface
- tRNAscan-SE
- HDU 2673 shǎ崽 OrOrOrOrz
- Oracle跨库访问数据表-DBLINK
- [bug] Cannot proceed because system tables used by Event Scheduler were found damaged at server start
- 模拟退火小结(Bzoj3680:吊打xxx)
- NOIP2014-6-14模拟赛
- 模拟赛20181015 Uva1078 bfs+四维dp
- CSS scroll-behavior和JS scrollIntoView让页面滚动平滑
- 设计模式 笔记 享元模式 Flyweight
- SqlServer 批量备份
- Ajax在ASP.NET MVC中上传
- day7 opencv+python 读取视频,没有东西
- (0)linux下的Mysql安装与基本使用(编译安装)
- 18.出现Description	Resource	Path	Location	Type Unknown error merging manifest
- 那些H5用到的技术(5)——视差滚动效果
- 安装MySQLdb模块遭遇";fatal error: my_config.h: No such file or directory";的处理
- Hadoop 伪分布式上安装 HBase
- 进程理论基础(Day32)