单源推送:如何每5分钟向50000个客户端发送5kb

时间:2011-04-11 19:31:16

标签: sockets udp comet duplex

我需要实现服务器发送的客户端服务器架构 通过互联网向许多客户发送同样的信息。 我需要每隔5分钟发送一条消息。 该消息不会超过5KB。 我需要解决方案扩展到大量连接的客户端(50.000-100.000)

我考虑过一堆解决方案:

  • TCP套接字

  • UDP多播

  • WCF http双工服务(彗星)

我认为我必须丢弃UDP解决方案,因为它只适用于同一网络上的客户端,并且无法通过互联网运行。 我在某处看到,如果连接了许多客户端,WCF组播将导致瓶颈,但我找不到任何显示性能统计信息的文档。 Tcp套接字似乎是我选择的解决方案。 你有什么想法?我是对的吗?


当我说UDP在互联网上不起作用时,我当然错了......我想 这是因为我读了一些指出你需要的文章 在网络中配置路由器以支持多播...我读了 udp端口组播范围,并认为它本来是本地的。 相反,可以通过互联网访问范围224.0.0.1 - 239.255.255.255(D类地址组)


考虑到在我的情况下,可靠性不是关键点,udp多播是一个不错的选择。 .net框架提供了非常有用的类来完成此任务。 我可以轻松启动UdpClient并开始使用两行代码在多播地址上发送数据。 在客户端,这很容易。 UdpSingleSourceMulticastClient类完全符合我的需要。 对于可靠性和安全性的关注,.net框架有一种智能而简单的方法来处理DoS攻击,DNS重新绑定攻击和Revers隧道攻击,如下所述:http://msdn.microsoft.com/en-us/library/ee707325(v=vs.95).aspx

2 个答案:

答案 0 :(得分:1)

主要问题是:您是否关心更新是否发送给客户?

如果你这样做,那么你需要在UDP之上构建一些东西以增加可靠性。 UDP数据报不可靠,所以你应该期望有些人不会到达目的地。如果您快速推出UDP数据报,则更有可能。请注意,在某些使用UDP的情况下,您的客户端也可能会获得同一数据报的多个副本。

如果你有一个像样的体系结构,用这种级别的流量50-100k连接不应该很难实现。

请参阅此处查看我就此主题所做的一些博客文章。

这里有一些示例代码,用于处理向多个客户端发送数据。

答案 1 :(得分:0)

单播(tcp套接字)可以在相对较少的流量下正常工作,但是在多播技术的基础上,情况每年都在变化。