看你有多牛,真实的网络问题,高手请进.
现有如下应用:
假如有由100台机器组成的机群,都由交换机互相连接。在这机群中存在两种应用:1、实时性很高的应用a。2、实时性较低的应用b。
由于a和b都涉及到网络通信,那么在数据量都很大的情况下,交换机的流量会达到瓶颈。现在需要达到如下目的:a的网络传输优先级应该高于b的网络传输优先级;在网络流量很大,交换机的流量快达到瓶颈时,b应用应该尽量保证a的实时性。请教各位高手该如何解决?
现有如下约束:我们无法改变机群的拓扑结构。a应用和b应用中任何两台机器的通信都要通过交换机。
1、有没有办法在传输层或网络层来解决这个问题,比如设置tcp的优先级之类的?
2、如果只能在应用层来解决,该如何解决?
[解决办法]
1. 如果你的交换机支持QoS,设置相应优先级即可。(如果不支持就惨了)
2. 集群先接入一台支持QoS的交换机,再接入ISP的交换机
3. 应用层解决:如果a和b都是你的程序的话,实时侦测集群的总流量,瓶颈时限制b的发包数即可。(不过这个算法有点难度,^_^)
4. 应用层解决:如果a和b你无法修改的话,使用第三方QoS软件来控制。(找第三方定制开发,要银子^_^)
[解决办法]
两种应用的数据流有明显的区别吗,比如Tcp端口号不同,应用层协议不同等等?可以通过定义流优先级来区分业务并保证实时性,给不同的数据流定义不同的优先级来解决问题。
[解决办法]
定义一个ACL,加上TCP端口号(目的端口号或源端口号),就可以标识一个流了,然后给这个流设置优先级等QoS属性。但是还要看你的交换机能不能支持了。