分布式集群除潦攀扩容,还有缩容的需求。当用户人数降低,办事器硬件资本竽暌箍现余暇的时刻,我们往往须要这些余暇的资本能应用起来,放到别的一些新的办事集群里去。缩容和集群中有故障须要容灾有必定类似之处,差别是缩容的时光点和目标是可预期的。
因为分布式集群中的扩容、缩容,以及欲望尽量能在线操作,这导致了异常复杂的技巧问题须要处理,比如集群中互相接洽关系的设备若何精确高效的修改、若何对有状况的过程进行操作、如安在扩容缩容的过程中包管集群中节点之间通信的┞俘常。作为办事器端法度榜样员,会须要花费大年夜量的经历,来对多个过程的集群状况变更,造成的一系列问题进行专门的开辟。
软件办事内容更新
如今都风行用敏捷开辟模式中的“迭代”,来表示一个办事赓续的更新法度榜样,知足新的需求,修改BUG。如不雅我们仅仅治理一台办事器,那么更新这一台办事器上的法度榜样,是异常简单的:只要把软件包拷贝以前,然后修改下设备就好。然则如不雅你要对成百上千的办事器去做同样的操作,就弗成能每台办事器登录上去处理。
办事器端的法度榜样批量安装安排对象,是每个分布式体系开辟者都须要的。然而,我们的安装工作除了拷贝二进制文件和设备文件外,还话苄很多其他的操作。比如打开防火墙、建立共享内存文件、修改数据库表构造、改写一些数据文件等等……甚至有一些还要在办事器上安装新的软件。
如不雅我们在开辟办事器端法度榜样的时刻,就推敲到软件更新、版本进级的问题,那么我们对于设备文件、敕令行参数、体系变量的应用,就会预先做必定的筹划,这能让安装安排的对象运行更快,靠得住性更高。
除了安装安排的过程,还有一个重要的问题,就是不合版本间数据的问题。我们在进级版本的时刻,旧版本法度榜样生成的一些持久化数据,一般都是旧的数据格局的;而我们进级版本中如不雅涉及修改了数据格局,比如数据表结不雅,那么这些旧格局的数据,都要转换改写成新版本的数据格局才行。这导致了我们在设计数据构造的时刻,就要推敲清跋扈这些表格的构造,是用最简单直接的表达方法,来让将来的修改更简单;照样一早就估计到修改典范围,专门预设一些字段,或者应用其他情势存放数据。
除了持久化数据以外,如不雅存在客户端法度榜样(如受击APP),这些客户端法度榜样的进级往往不克不及和办事器同步,如不雅进级的内容包含了通信协定的修改,这就造成了我们必须为不合的版本安排不合的办事器端体系的问题。为了避免同时保护多套办事器,我们在软件开辟的时刻,往往偏向于所谓“版本兼容”的协定定义方法。而如何设计的协定才能有很好的兼容性,又是办事器端法度榜样须要细心推敲的问题。
数据统计和决定计划
一般来说,分布式体系的日记数据,都是被集中到一路,然后同一进行统计的。然而,当集群的范围到必定程度的时刻,这些日记的数据量会变得异常恐怖。很多时刻,统计一天的日记量,要消费计算机运行一天以上的时光。所以,日记统计这项工作,也变成一门异常专业的晃荡。
经典的分布式统计模型,有Google的Map Reduce模型。这种模型既有灵活性,也能应用大年夜量办事器进行统计工作。然则缺点是易用性往往不敷好,因为这些数据的统计和我们常见的SQL数据表统计有异常大年夜的差别,所以我们最后照样经常把数据丢到MySQL琅绫擎去做更细层面的统计。
因为分布式体系日记数量的宏大年夜,以及日记复杂程度的进步。我们变得必须要控制类似Map Reduce技巧,才能真正的对分布式体系进行数据统计。并且我们还须要想办法进步统计工作的工作效力。
解决分布式体系可治理性的根本手段
目次办事(ZooKeeper)
分布式体系是一个由很多过程构成的┞符体,这个整体中每个成员部分,都邑具备一些状况,比如本身的负责模块,本身的负载情况,对某些数据的┞菲握等等。而这些和其他过程相干的数据,在故障恢复、扩容缩容的时刻变得异常重要。
一些法度榜样员会专门本身编写一个DIR办事(目次办事),来记录集群中过程的运行状况。集群中过程会和这个DIR办事产生主动接洽关系,如许在容灾、扩容、负载均衡的时刻,就可以主动根据这些DIR办事里的数据,来调剂请求的发送目地,大年夜而达到绕开故障机械、或连接到新的办事器的操作。
然而,如不雅我们只是用一个过程来充当这个工作。那么这个过程就成为了这个集群的“单点”——意思就是,如不雅这个过程故障了,那么全部集群可能都无法运行的。所以存放集群状况的目次办事,也须如果分布式的。幸好我们有ZooKeeper这个优良的开源软件,它恰是一个分布式的目次办事区。
ZooKeeper可以简单启动奇数个过程,来形成一个小的目次办事集群。这个集群会供给给所有其他过程,进行读写其巨大年夜的“设备树”的才能。这些数据不仅仅会存放在一个ZooKeeper过程中,而是会根据一套异常安然的算法,让多个过程来承载。这让ZooKeeper成为一个优良的分布式数据保存体系。
因为ZooKeeper的数据存储构造,是一个类似文件目次的树状体系,所以我们经常会应用它的功能,把每个过程都绑定到个一一个“分枝”上,然后经由过程检查这些“分支”,来进行办事器请求的转发,就能简单的解决请求路由(由谁去做)的问题。别的还可以在这些“分支”上标记过程的负载的状况,如许负载均衡也很轻易做了。
目次办事是分布式体系中最关键的组件之一。而ZooKeeper是一个很好的开源软件,正好是用来完成这个义务。
推荐阅读
diff /dev/sdc /tmp/SD-Card-Backup.img 平日你可能会把数据放在一个分区上,有时刻可能须要对该设备或者膳绫擎的一个分区进行备份。树莓派用户为了可引导 SD 卡当然有这个需求。其它小体>>>详细阅读
本文标题:浅析分布式系统一些事
地址:http://www.17bianji.com/lsqh/35115.html
1/2 1