有一个服务器和一些(最多几百个)客户端,通信量不大
服务器可以保证在相同的服务器配置和客户端请求下给出相同的回复(或者说服务端不存在随机性)
这种情况下,为了防止服务器炸掉,独立设置 2 个或者再多几个相同的、互不通信的服务器,然后客户端同时连接所有服务器,像所有服务器发送一样的信息、丢掉第二个和之后重复的服务器发来的信息
主要目的是 1 提高服务器容错 2 避免服务器之间同步的问题,让服务器和客户端的主要代码可以像单点服务器一样实现;把多服务器相关的代码都隐藏在通信部分里面
算是一个合适的设计吗?或者有什么更好的方案?
(有注意到这么做会出现服务器接收次序的问题,比如客户端 ab 分别给服务器 12 发送信息,而 1 先收到 a 、2 先收到 b 会出错。但可以解决:客户端依次发送消息本体给各服务器,然后再发送一个确认消息;服务器通信部分暂时保存消息,一直等到所有消息都被确认再按时间戳转给服务器)