擅长:python、mysql、java
<p>Zyre协议是专门为无中介的“八卦”发现而设计的。Pyre(<a href="https://github.com/zeromq/pyre" rel="nofollow noreferrer">https://github.com/zeromq/pyre</a>)是Python实现。它为节点加入“发现组”和共享信息提供了机制。除此之外,它允许组成员对单个成员耳语或对所有成员喊叫(多播)。你知道吗</p>
<p>Zyre使用UDP广播信标来启动联系,因此它通常仅限于一个子网(UDP广播通常不会转发到子网之外)。但是,您可以通过每个子网中的服务器跨不同的子网桥接一个组(见下文)。你知道吗</p>
<p>您可以使用zyre将拓扑信息(在本例中是您的服务器列表)分发给您的客户机。你知道吗</p>
<p>我只玩了一点柴堆,所以我可能没有完全正确的所有细节,但我会尝试这样设置它:</p>
<ol>
<li>定义Zyre组。你知道吗</li>
<li>每个服务器。。。
<ul>
<li>加入小组。你知道吗</li>
<li>在信标头中设置其服务器地址(ip或fqdn,可能还有端口)。你知道吗</li>
</ul></li>
<li>每个客户。。。
<ul>
<li>加入小组。你知道吗</li>
<li>从从服务器接收的HELLO消息中读取服务器地址。你知道吗</li>
<li>与服务器建立REQ连接。你知道吗</li>
<li>根据一段时间内收到的HELLO/LEAVE/AVOID消息添加/删除服务器连接。你知道吗</li>
</ul></li>
</ol>
<p>如果服务器不在同一子网中(<em>例如</em>,可能它们位于不同的AWS可用性区域),您可以预先配置<em>服务器</em>以了解所有服务器ip是什么,定期验证它们是否已启动(通过服务器之间的REQ/REP或PUB/SUB),并向本地组发送活动服务器信息。客户端可以使用此信息通知/调整其活动服务器/连接的列表。你知道吗</p>
<p>我已经考虑过做上面的事情,但不幸的是,它没有超出待办事项中的其他优先级,所以我还没有超过上面的细节级别。你知道吗</p>