• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aLife20
V2EX  ›  程序员

请问一个关于局域网通信的问题

  •  1
     
  •   aLife20 · Dec 16, 2019 · 2995 views
    This topic created in 2513 days ago, the information mentioned may be changed or developed.

    向各位大佬请教一个问题,在一个局域网内有 N 台服务器,每台服务器上都有两份 XML(一份 a.xml 存储该台服务器的信息,另外一份 b.xml 存储该局域网内所有服务器的信息) 。

    1. 当新增了一台服务器到局域网内时,该局域网内所有服务器的 b.xml 都需要更新(新增这台新服务器的信息)。
    2. 当局域网里任意一台服务器的 a.xml 进行更改时,该局域网内所有服务器的 b.xml 都需要更新为最新的全局 xml (也就是把全部服务器里面的 b.xml 里面的修改服务器的信息进行更新)。
    3. 去中心化,不需要主服务器

    请问这个需求通过什么技术实现比较好,感觉有点类似于飞秋的功能。望大佬们点拨一下呀,提供一下搜索关键字也好呀。

    8 replies  •  2019-12-16 18:01:14 +08:00
    jasonyang9
    jasonyang9
    Dec 16, 2019❤️1
    1
    无中心架构就是靠广播咯,协议大致是这样的:

    * 当新增服务器时,发送 Hello 包,内容有自己的信息(即 a.xml ),其它服务器收到后更新自己的 b.xml
    * 当服务器更改自己的 a.xml 时,广播,其它服务器收到后更新自己的 b.xml
    * 当服务器下线时发送 Byebye 包,其它服务器收到后更新自己的 b.xml
    * 如果考虑到服务器宕机的可能性,那么要定期测试(心跳)其它所有服务器,发现失效的更新自己的 b.xml

    。。。当然这都是好人模式,没有认证的,服务器傻傻的相信自己收到的所有数据包。。。
    luoqeng
    luoqeng
    Dec 16, 2019❤️1
    2
    这是一个共识问题,如何确保 b.xml 的一致性?

    解决方法就是选个 Raft 或者 Paxos 协议选举出 leader 保存下来。

    去中心化的 区块链?
    aLife20
    aLife20
    OP
    Dec 16, 2019
    3
    @luoqeng 问了一圈,认可你的方案。
    请问你认为用什么样的协议比较好呢,udp 或者 socket 等等。
    最后一个问题,有类似的案例或者搜索关键字推荐一下嘛,不是特别想造轮子哈哈哈哈~
    aLife20
    aLife20
    OP
    Dec 16, 2019
    4
    @luoqeng 遵循一楼的方案,舍弃性能,完全可以解决一致性的问题。
    Delon
    Delon
    Dec 16, 2019
    5
    mDNS
    wangyzj
    wangyzj
    Dec 16, 2019
    6
    用 etcd 或者 zookeeper 啊
    luoqeng
    luoqeng
    Dec 16, 2019
    7
    @aLife20 服务发现注册
    lihongjie0209
    lihongjie0209
    Dec 16, 2019
    8
    参考一下思科的设备发现协议, 这种事情在网络层很常见
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5270 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 03:18 · PVG 11:18 · LAX 19:18 · JFK 22:18
    ♥ Do have faith in what you're doing.