zoukankan      html  css  js  c++  java
  • 负载均衡基础理论

    应用场景

    我这里大致分为两种:单工,双工。单工即是有明确的服务器和客户端,客户端主动请求,服务端侦听应答,大部分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

  • 相关阅读:
    2018年你需要知道的13个JavaScript工具库
    JavaScript一团乱,这是好事
    5大JavaScript前端框架简介
    大型Vuex应用程序的目录结构
    Github被微软收购,这里整理了16个替代品
    如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库
    TensorFlow入门教程
    想成为顶级开发者吗?亲自动手实现经典案例
    2018年最值得关注的30个Vue开源项目
    SQL Server 合并复制遇到identity range check报错的解决 (转载)
  • 原文地址:https://www.cnblogs.com/wusong/p/3755392.html
Copyright © 2011-2022 走看看