负载均衡基础理论

应用场景

我这里大致分为两种:单工,双工。单工即是有明确的服务器和客户端,客户端主动请求,服务端侦听应答,大部分Web即是如此。双工即是没有明确的客户端服务端,双方可以互相主动通讯,比如聊天室,比如在线游戏。双工对同学提出了更多要求比如参照这篇关于Pomelo分析所提到的:

游戏服务器的分布式架构与Web服务器是不同的, 以下是web服务器与游戏服务器架构的区别:

>长连接与短连接。web应用使用基于http的短连接以达到最大的可扩展性,游戏应用采用基于socket(websocket)的长连接,以达到最大的实时性。

>分区策略不同。web应用的分区可以根据负载均衡自由决定, 而游戏则是基于场景(area)的分区模式, 这使同场景的玩家跑在一个进程内, 以达到最少的跨进程调用。

>有状态和无状态。web应用是无状态的, 可以达到无限的扩展。 而游戏应用则是有状态的, 由于基于场景的分区策略,它的请求必须路由到指定的服务器, 这也使游戏达不到web应用同样的可扩展性。

>广播模式和request/response模式。web应用采用了基于request/response的请求响应模式。而游戏应用则更频繁地使用广播, 由于玩家在游戏里的行动要实时地通知场景中的其它玩家, 必须通过广播的模式实时发送。这也使游戏在网络通信上的要求高于web应用。

均衡策略

有两种策略,一种是静态均衡,一种动态均衡,分别如下:

静态负均衡:客户端一旦和服务端建立链接,则在服务端不出错的的情况下一直链接该服务。且以后的通讯不再通过均衡服务,而是客户端和服务端直接通讯。如果客户端检测到无法链接当前的服务,则再次请求路由服务器分发新的服务地址。这种策略比较适合双工环境,特别是有回调的场景。这种均衡策略可以通过在客户端配置服务,也可以通过均衡服务路由客户端到服务端来实现。

动态均衡:每次请求,可能都是不同的服务端来处理。请求先到均衡服务,均衡服务转发请求给某个服务,服务处理完成后再转发给均衡服务,最后均衡服务把结果返回给客户端。

两种策略主要有如下区别:

l  静态均衡性能更好,因为最后是客户端和服务端直接对话。如果客户端太多,有时候网关的压力很会很大,导致网关也要一个负载均衡。

l  静态均衡可以更好的支持回调,在技术实现双工更简单。

l  可用性动态均衡更好。一旦服务出现问题,静态均衡需要重链。

l  扩展性动态均衡更好,对外根本不知道到底有多少有多少服务。不过静态均衡通过均衡服务分配服务也可以做到一点。

l  动态均衡更安全,均衡服务还起到网关的作用。

参考:

http://visualbasic.freetutes.com/learn-vb6-advanced/lesson1/p9.html

你可能感兴趣的:(负载均衡)