前几天,室友换工作了,之前的他是做客户端上位机的,换工作了之后接触到了集群、负载均衡、分布式等概念,但是不是很清楚,百度上的答案也是鸡同鸭讲,于是在群里和我讨论了这个问题。我想起我刚做服务器开发的时候,关于这些概念也不是很清晰,现在想想,应该可以用大白话描述出来。下面举个例子。
1.什么是集群
首先,我们假设这么个例子,你现在是一个刺激战场的服务器开发工程师,从0开始开发。你先开发了一个服务器A,你开发的服务器A性能峰值能容纳5000人在线玩游戏,然后部署使用。因为是新开发的游戏,玩的人不是很多。过了一段时间后,发现玩游戏的人越来越多了,现在已经有8000人要玩了,一台服务器已经撑不住了,你又开发了服务器B。让服务器A、服务器B一起运行,这样你的游戏最多就能容纳10000人游戏了。服务器A、服务器B就叫做你的游戏服务器集群。同理,你扩展到10台服务器,只要是你刺激战场游戏的服务器,都称作你的服务器集群。
2.什么是负载均衡
你现在有了2台服务器,你发现你的服务器运行是这样的,8000人进行游戏,服务器A人数达到5000人了,剩下的3000人才会进入的是服务器B。这样会造成一个问题,有软件常识的人都知道,数据量越大,处理数据的时间就越长、或者空间就越大。服务器A有5000人进行游戏,已经是达到了性能峰值,玩家偶尔会感觉到服务器卡顿,例如:点了开局,过一会儿才会跳入下一个界面。就像你电脑同时开启了很多东西,虽然都能处理,但是偶尔会卡顿。你觉得这样不合理,明明有两台服务器,只要每台服务器分别处理4000个玩家,这样两个服务器都没达到峰值,8000玩家都能有良好的体验。于是乎,你就写了一些处理方法,让服务器A和服务器B处理的玩家是相同的。例如,有6000玩家进行游戏的时候,服务器A、服务器B分别处理3000玩家。这就是负载均衡。
3.什么是分布式
经过一段时间的运营,你的刺激战场游戏已经有5W玩家进行游戏,峰值的时候有4W玩家同时在线。你按照上面的方法,你开发了10台服务器(服务器A、B、C....),游戏运营的都很正常。忽然有一天,有4W人同时在线时,忽然有有三台服务器挂了,连接这三台服务器的玩家全部被断开连接,然后重新连接,但是你7台服务器的性能巅峰只能容纳3.5W人。意味着有5000玩家直接玩不了,运气不好,5000玩家里刚好有几个大土豪,刚好再逛商城,准备消费,现在消费不聊了,经过一投诉,你被公司痛批了一顿,你被痛批后,开始觉得你的设计不合理。虽然4W人同时在线,但是只有3W人是再游戏的,1W人是不进入游戏的,只是再逛大厅(商城),而且你原来把所有的逻辑都写再一个服务器(登录、大厅、游戏)导致一个服务器性能巅峰只能容纳5000人。于是乎,你重新分析了需求:1.同时登陆的玩家最多有1W人,2同时在线的玩家一般有1/4是至逛大厅和商城的,剩下的3/4是进行游戏的。然后你重新设计了你的服务器,把服务器分成3类,每一类只处理一种业务,分成了登陆服务器、大厅服务器、游戏服务器。经过你这么一拆分,由于一台服务器只处理一种逻辑,服务器性能得到了提高,最高可以处理1W人的逻辑,这就是分布式。现在你重新分配服务器,10台服务器,分成2台登陆服务器,2台大厅服务器,6台游戏服务器,现在游戏在同时有4W人在线的时候,按照1/4在大厅(1W人),3/4在游戏(3W人)。这个时候,如果有3台服务器挂了,都不会出现像上次那样玩家无法连接的情况。
以上的只是举个例子帮助理解这几个概念,实际情况会更复杂,但是原理都是这样的。