请教关于socket服务器集群,负载均衡......
小弟有个c# 的sockets项目,sockets服务端提供给客户端实时的数据,类似游戏中的实时数据。
但是,现在估计到如果人数很多,担心服务器扛不住【要求服务器的响应时间是100毫秒内】。
目前是一个服务端,整个系统工作原理是这样:
客户端订阅某个货品的即时数据,服务器保存了所有客户端的socket,根据客户端的订阅,实时的向客户端发送数据,直到客户端取消订阅。
想请教2个问题:
1,如果几百个客户端都订阅用一个货品,现在服务端是for循环一个一个send过去(使用beginSend...)。不知道这样会不会延迟?除了增大带宽想不到别的好办法。
2,考虑到货品本身的信息也很多,所以想增加几台服务器。当A服务器压力大的时候,就让B服务器一起提供服务。
但应该怎样协调这些服务器呢?
目前考虑是:
1)增加一台中转服务器,当接收到客户端请求时候,中转服务器向一台压力不大的服务器请求数据,得到数据后转发给客户端。
但是这样的话,岂不是所有数据都要这个中转服务器来发送,这样中转服务器是否压力大?
是否有办法,当中转服务器选择了一个服务器后,让这个服务器直接向那个客户端发送数据而不必中转?或者当某个服务器压力大的时候,自动转移一部分客户端的socket交给别的服务器去承担?
小弟对做这个负载的问题没有经验,情各位高手不吝指点!
谢谢!!