擅长:python、mysql、java
<p>我将集中讨论发现问题。客户机如何知道哪些服务器可用以及每个服务器都有哪些ws连接?你知道吗</p>
<p>一种方法是添加第三种类型的节点,称之为<strong>broker</strong>。只有一个代理,所有客户机和服务器都知道如何访问它。(例如,所有客户机和服务器都配置了代理的IP或主机名。)</p>
<p>当服务器启动时,它向代理注册自己:“我有ws-feeds x,y,z和accept-requests on 1.2.3.5:1234”。代理跟踪这个状态,可能是在一个哈希表中。你知道吗</p>
<p>当客户机需要ws-feed y时,它首先联系代理:“哪个服务器有ws-feed y?”如果代理知道谁拥有feedy,它会将服务器的IP和端口提供给客户机。然后,客户机可以直接与服务器联系。(如果多个服务器可以访问feed y,那么代理可以返回服务器列表,而不是单个服务器。)</p>
<p>如果服务器运行“长”时间,客户机可以缓存“服务器X有feed y”信息,并且只在需要访问新feed时与代理对话。你知道吗</p>
<p>在这种设计中,客户机使用代理查找感兴趣的服务器。服务器根本不需要了解任何有关客户端的信息。而且“真正的”流量(客户机通过服务器访问feed)仍然是直接在客户机和服务器之间完成的,不涉及代理。你知道吗</p>
<p>嗯。我绝对不是专家。你知道吗</p>