集群管理与公司管理对互联网公司一样重要

业务高速发展的互联网公司大都高度依赖数据中心,因为互联网公司的整个业务系统都由数据中心支撑,如果数据中心的服务器集群不稳定,不能承载业务负载,势必影响业务的发展。比如前段时间很火的一款应用,足记。在足记最火的时候,其用户量在一周之内从8万变成120万,并且连续一周多稳居苹果Appstore下载榜第一名。但是,当时足记的服务器集群扩容的速度跟不上用户增加的速度时,随之而来的就是用户在使用过程中遇到不断闪退等诸多问题,极大地影响用户体验,造成大量用户流失。数据中心的服务器集群管理问题已经成为各家互联网公司业务发展的瓶颈之一,本文就用通俗的语言描述下集群管理涉及的各种问题。

集群管理和公司管理一样是个复杂而重要的活

集群管理可以跟公司管理做类比,管理服务器就像管人。大公司的业务繁多,工作量很大,往往需要雇佣很多员工。每个员工虽然工作能力有限,处理的工作量有限,但是通过对员工进行有效的组织管理,让员工协同工作,把大的任务拆成小任务分配给不同的员工,这样就有可能完成海量的工作。同理,单台服务器就像一个人一样,处理能力有限,一旦长时间超负荷运行就会出现故障。要处理海量的业务,需要由多台服务器组成集群,协同工作,才能承载大量的负载。然而集群规模大了,服务器数量多了,虽然能处理的业务量增加了,但是对服务器的管理运维成本也急剧上升了,就像公司人多了以后,对员工的管理沟通成本剧增一样。下面从几个方面详细阐述管理集群和管理公司用到的类似的方法:

-分角色管理:

每个公司内部不是所有员工都做同样的工作,肯定是按员工的职业技能分派到不同的岗位,比如工程师、会计、人力资源,等等。集群管理也一样,不同的服务器按性能配置不同担当不同的角色,指派不同的任务,比如有的服务器CPU内存配置高,就负责计算任务,有的服务器硬盘空间大,就负责存储任务,等等。

-分层级管理:

每个公司都有严格的组织架构,把员工分部门管理,不同部门各司其职,每个部门设立部门负责人,管理各自部门,给部门员工分配具体的工作,等等。同样,集群也可以按照服务器担当的角色分为不同的“部门”——子集群,比如有的子集群负责处理计算任务,有的子集群负责处理存储任务。每个子集群内部指定某台服务器担任主节点,相应地子集群内其他服务器都成为从节点,主节点负责管理其子集群内的从节点。比如处理计算任务的子集群,其主节点负责给从节点分配具体的计算任务;处理存储任务的子集群,其主节点把数据分配到各个从节点上存储。

-日常行政管理:

公司在日常的运作过程中,总有各种各样的行政事务要处理,比如某个部门人手不够要招人,某个员工生病休假或离职,定期对员工进行绩效考核,等等。集群管理也有类似的事务要处理,比如集群计算能力或存储能力不够时需要增加服务器,某个服务器发生故障或宕机需要对受影响的业务进行修复或迁移到其他服务器上,对服务器的运行情况要时时监控,等等。

-突发事件管理:

对公司而言,当有突发事件发生时,肯定需要做出相应的处理,比如有对公司不利的传闻出现,这时候公司市场部门需要做出危机公关。类似的,集群管理也要处理突发事件,尤其对像足记这样的互联网应用来讲,经常有突发的流量,一周内用户量暴涨数十倍,这种情况非常考验集群管理的能力,一方面是能不能快速增加集群的计算能力,即迅速增加服务器来承载突发业务,另一方面是能不能更好地把突发的负载分发到各个服务器,不让服务器长时间超负荷运行,避免宕机。

让服务器集群管理成为公司业务发展的加速器

总之,数据中心服务器集群管理是很复杂的一件系统工程,就像公司管理一样,规模大了,管理成本急剧增加。对于互联网公司而言,做好集群管理工作,就跟做好公司管理工作一样,会极大地帮助公司业务发展,反之,集群管理不善,跟公司管理不善一样,会阻碍公司业务发展。

作者:

王璞 ,数人科技创始CEO,美国 George Mason大学计算机PhD,擅长分布式计算、大规模机器学习和海量数据处理。曾担任美国Google广告部门数据平台工程师,参与分布式广告数据处理系统的研发工作。