Sockets 单源推送:如何每5分钟向50000个客户端发送5kb
我需要实现一个客户机-服务器体系结构,其中服务器发送 通过互联网向许多客户发送相同的消息。 我需要每5分钟发送一条关于的信息。 消息不会超过5KB。 我需要解决方案扩展到大量连接的客户端(50.000-100.000) 我考虑了一系列解决方案:Sockets 单源推送:如何每5分钟向50000个客户端发送5kb,sockets,udp,comet,duplex,Sockets,Udp,Comet,Duplex,我需要实现一个客户机-服务器体系结构,其中服务器发送 通过互联网向许多客户发送相同的消息。 我需要每5分钟发送一条关于的信息。 消息不会超过5KB。 我需要解决方案扩展到大量连接的客户端(50.000-100.000) 我考虑了一系列解决方案: TCP套接字 UDP多播 WCF http双工服务(comet) 我认为我必须放弃UDP解决方案,因为它只适用于同一网络上的客户端,并且在internet上不起作用。 我在某个地方读到,如果连接了许多客户端,WCF多播将导致瓶颈,但我找不到任何显示性
- TCP套接字
- UDP多播
- WCF http双工服务(comet)
当我说UDP在互联网上不起作用时,我肯定错了。。。我想 这是因为我读了一些文章指出你需要 已在网络中配置路由器以支持多播。。。我读到了这本书 udp端口多播范围很广,并认为它应该是本地的。 相反,可以通过internet访问范围224.0.0.1-239.255.255.255(D类地址组)
考虑到在我的例子中可靠性不是一个关键点,udp多播是一个不错的选择。 net框架提供了非常有用的类来实现这一点。 我可以很容易地启动一个UdpClient,并使用两行代码开始在多播地址上发送数据。 在客户端,这真的很容易实现。 有一个UdpSingleSourceMulticastClient类正好满足我的需要。
考虑到可靠性和安全性,.net framework提供了一种智能而简单的方法来处理DoS攻击、DNS重新绑定攻击和反向隧道攻击,如下所述:单播(tcp套接字)对于此类流量相对较小的通信量可以很好地工作,但要保持多播技术的领先地位,情况每年都在变化。主要的问题是:你在乎更新是否传到客户那里吗 如果您这样做了,那么您将需要在UDP之上构建一些东西来增加可靠性。UDP数据报是不可靠的,因此您应该预料到有些数据报无法到达目的地。如果您正在快速推出UDP数据报,则更可能出现这种情况。请注意,在使用UDP的某些情况下,您的客户机还可能获得同一数据报的多个副本 如果您有一个像样的体系结构,那么使用TCP实现50-100k具有这种流量级别的连接应该不会那么困难 请看这里的一些博客文章,我已经做了关于这个主题