向各位大佬请教一个问题,在一个局域网内有 N 台服务器,每台服务器上都有两份 XML(一份 a.xml 存储该台服务器的信息,另外一份 b.xml 存储该局域网内所有服务器的信息) 。
请问这个需求通过什么技术实现比较好,感觉有点类似于飞秋的功能。望大佬们点拨一下呀,提供一下搜索关键字也好呀。
1
jasonyang9 2019-12-16 15:13:31 +08:00 1
无中心架构就是靠广播咯,协议大致是这样的:
* 当新增服务器时,发送 Hello 包,内容有自己的信息(即 a.xml ),其它服务器收到后更新自己的 b.xml * 当服务器更改自己的 a.xml 时,广播,其它服务器收到后更新自己的 b.xml * 当服务器下线时发送 Byebye 包,其它服务器收到后更新自己的 b.xml * 如果考虑到服务器宕机的可能性,那么要定期测试(心跳)其它所有服务器,发现失效的更新自己的 b.xml 。。。当然这都是好人模式,没有认证的,服务器傻傻的相信自己收到的所有数据包。。。 |
2
luoqeng 2019-12-16 15:35:36 +08:00 1
这是一个共识问题,如何确保 b.xml 的一致性?
解决方法就是选个 Raft 或者 Paxos 协议选举出 leader 保存下来。 去中心化的 区块链? |
3
aLife20 OP |
5
Delon 2019-12-16 16:23:29 +08:00
mDNS
|
6
wangyzj 2019-12-16 16:35:27 +08:00
用 etcd 或者 zookeeper 啊
|
8
lihongjie0209 2019-12-16 18:01:14 +08:00
参考一下思科的设备发现协议, 这种事情在网络层很常见
|