应用程序多播的最佳教程?

问题描述:

我最近意识到IP多播(显然在公共互联网上不能很好地工作)和应用多播(显然在IRC和PSYC中使用,按http://en.wikipedia.org/wiki/Multicast)有区别。应用程序多播的最佳教程?

有没有关于实现应用程序级组播的很好的教程?

我认为多点传送的目的是为了减少公共网段的带宽,所以我很难理解应用层多播的功能。

IP级组播的目的是减少许多用户希望接收相同流量的常见网段的带宽。它通常限于一个特定的子网,并且IP路由器不会将组播传播到子网之外。这是出于可扩展性原因而完成的 - 允许一个主机发起传播到互联网上每个IP地址的多播数据包并不是一个好主意。

有不同的方式来思考“应用程序级”组播。一种方法是使用参与多播的主机构建多播树。 Dijkstra的算法可以用来做到这一点(*对此有一个合理的描述)。但是,如果主机以大幅度的速度加入和离开网络,维护参与计算机的列表并保持树状结构更新是一项相当大的工作。而且你可能没有很好地估计应用程序级别的跳跃代价。

您应该查看的另一种方法是在Gnutella网络的查询路由协议中使用的洪泛算法。 (*对此也有很好的描述。)这种方法缓解了构建组播树的需求,但它具有产生更多网络流量的缺点。事实上,随着流量以节点数量的平方(即O(n ** 2))增长,LOT更多的网络流量。

应用组播的另一个例子是使用Amazon EC2JGroupsGoogle App Engine,因为它们不支持IP多播,但开发商要使用多播功能。