在网络应用中,“负载均衡”已经不能算是什么新鲜话题了,从硬件到软件,也都有了很多的方法来实现负载均衡。我们这里讨论的负载均衡,并不是指依靠DNS转向或其它硬件设备等所作的负载均衡,而是指在应用层所作的负载均衡。
一般而言,只有在大型在线系统当中才有必要引入负载均衡,那么,多大的系统才能被称为大型系统呢?比如动辄同时在线数十万的网络游戏,比如同时在线数在10万以上的WEB应用,这些我们都可以理解为大型系统,这本身就是一个宽泛的概念。
设计再好的服务器程序,其单个程序所能承载的同时访问量也是有限的,面对一个庞大且日益增长的网络用户群,如何让我们的架构能适应未来海量用户访问,这
自然就牵涉到了负载均衡问题。支持百万级以上的大型在线系统,它的架构核心就是如何将“百万”这么大的一个同时在线量分摊到每个单独的服务器程序上去。真
正的逻辑处理应该是在这最终的底层的服务器程序(如QQ游戏平台的游戏房间服务器)上的,而在此之前所存在的那些服务器,都可以被称为“引路者”,它们的
作用就是将客户端一步步引导到这最终的负责真正逻辑的底层服务器上去,我们计算“百万级在线”所需要的服务器数量,也是首先考虑这底层的逻辑服务器单个可
承载的客户端连接量。
比如:按上篇我们所分析QQ游戏架构而言,假设每个服务器程序最高支持2W的用户在线(假设一台机子只运行一个
服务器程序),那么实现150万的在线量至少需要多少台服务器呢?如果算得简单一点的话,就应该是:150/2=75台。当然,这样算起来,可能并不能代
表真正的服务器数量,因为除了这底层的服务器外,还要包括登录/账号服务器以及大厅服务器。但是,由于登录/账号服务器和大厅服务器,它们与客户端的连接
都属于短连接(即:取得所需要信息后,客户端与服务器即断开连接),所以,客户端给这两类服务器带来的压力相比于长连接(即:客户端与服务器始终保持连
接)而言就要轻得多,它们的压力主要在处理瞬间的并发访问上。
“短连接”,是实现应用层负载均衡的基本手段
!!!如果客户端要始终与登录/账号服务器以及大厅服务器保持连接,那么这样作的分层架构将是无意义的,这也没有办法从根本上解决用户量不断增长与服务器数量有限之间的矛盾。
当然,短连接之所以可以被使用并能维护正常的游戏逻辑,是因为在玩家看不到的地方,服务器与服务器之间进行了大量的数据同步操作
。
如果一个玩家没有登录到登录服务器上去而是直接连接进了游戏房间服务器并试图进行游戏,那么,由于游戏房间服务器与大厅服务器和登录/账号服务器之间都会
有针对于玩家登录的逻辑维护,游戏房间服务器会检测出来该玩家之前并没有到登录服务器进行必要的账号验证工作,它便会将玩家踢下线。由此看来,各服务器之间的数据同步,又是实现负载均衡的又一必要条件了
。
服务器之间的数据同步问题,依据应用的不同,也会呈现不同的实现方案。比如,我们在处理玩家登录这个问题上。我们首先可以向玩家开放一些默认的登录服务
器(服务器的IP及PORT信息),当玩家连接到当前的登录服务器后,由该服务器首先判断自己同时连接的玩家是不是超过了自定义的上限,如果是,由向与该
服务器连接着的“登录服务器管理者”(一般是一个内部的服务器,不直接向玩家开放)申请仲裁,由“登录服务器管理者”根据当前各登录服务器的负载情况选择
一个新的服务器IP和PORT信息传给客户端,客户端收到这个IP和PORT信息之后重定向连接到这个新的登录服务器上去,完成后续的登录验证过程。
这种方案的一个特点是,在面向玩家的一侧,会提供一个外部访问接口,而在服务器集群的内部,会提供一个“服务器管理者”及时记录各登录服务器的负载情况以便客户端需要重定向时根据策略选择一个新的登录接口给客户端。
采
用分布式结构的好处是可以有效分摊整个系统的压力,但是,不足点就是对于全局信息的索引将会变得比较困难,因为每个单独的底层逻辑服务器上都只是存放了自
己这一个服务器上的用户数据,它没有办法查找到其它服务器上的用户数据。解决这个问题,简单一点的作法,就是在集群内部,由一个中介者,提供一个全局的玩
家列表。这个全局列表,根据需要,可以直接放在“服务器管理者”上,也可以存放在数据库中。
分享到:
相关推荐
#资源达人分享计划#
基于Linux的服务器集群系统设计及实现.pdf
集群式游戏服务器架构方案设计开发 集群式游戏服务器架构方案设计开发 .doc集群式游戏服务器架构方案设计开发 .doc集群式游戏服务器架构方案设计开发 .doc
基于Linux的服务器集群系统的研究与设计.pdf
网站集群架构设计LVS实现网络负载均衡实例精讲(与“服务器”有关文档共50张).pptx
高性能服务器的架构、选型、集群等
3.Web服务器集群: 由至少两台Nginx Web服务器架设,来响应负载均衡服务器分发的请求 4.主从读写分离数据库集群: 一台主MySql数据库处理写的业务,至少一台从MySql服务器处理读取业务 -------///////////////////...
Linux下LAMP服务器集群系统的设计与实现.pdf
基于云服务器集群三层分布式云监控系统的设计与实现.pdf
基于Linux构建Hadoop高性能服务器集群.pdf
在一个由服务器集群构成的大规模视频点播系统中,负载均衡策略的优劣直接影响着整个系统的资源利用效率和服务质量。本文从MS的架构特点和工作流程出发,给出了MS的系统设计,并提出将许 可准入控制、负载分配和存储...
大型网站的架构设计问题 25 开源平台的高并发集群思考 26 大型、高负载网站架构和应用初探 时间:30-45分钟 27 说说大型高并发高负载网站的系统架构 28 好的案例: eBay 的数据库分布扩展架构 68 ...
关于文件服务器集群负载均衡算法的研究,薛志方,,针对校园网络环境下大规模文件上传下载和接收服务器性能各异的需求,为了充分利用硬件资源,设计了一个集群架构的文件接收服务器
Linux集群环境下监控Web服务器的Shell脚本设计.pdf
高性能高并发服务器架构 ——————————————————————————————————————— 初创网站与开源软件 谈谈大型高负载网站服务器的优化...大型网站的架构设计问题 开源平台的高并发集群思考
一种Linux平台下校园网服务器集群实现方案.pdf
利用集群技术使B/S架构下的应用服务器和数据库服务器实现互为热备份,从而充分 利用现有系统资源,在不增加投资的前提下,构建一个具有高可用性的计算机系统,消除单点故障,实现应用系 统的不间断运行
通过Nginx实现反向代理服务器集群,同时搭建squid集群以作为静态页面和图片的缓存。 3)通过web服务器的配置来实现负载均衡 即通过apache或是Nginx 将客户请求均衡的分给tomcat1,tomcat2....去处理。 2.1.2WEB应用...
基于ZigBee、WiFi和云服务器集群的智能家居系统设计.pdf