分布式系统简介

基本概念

写在前面的几个问题

了解一个分布式系统好坏,可以从下面几个问题入手

  • scale out水平扩展如何实现?
  • 数据一致性如果保证?
  • 高可用性如何实现?
  • 异地多活,异地容灾如何实现?
  • 分布式事物,分布式锁?

什么是集中式?什么是分布式?

集中式系统用一句话概括就是:一个主机带多个终端。终端没有数据处理能力,仅负责数据的录入和输出。目前银行等企业应用的多是集中式系统。

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,每个节点都有一定的处理能力,彼此之间仅仅通过消息传递进行通信和协调的系统。

分布式工程实践难点

分布式系统降低了成本,提高了系统的带宽和容错性,但是带来了新的问题:就是工程实践的复杂性,它面临的较多问题:

  • 消息传递异步无序(asynchronous):现实网络不是一个可靠的信道,存在消息延时、丢失,节点间消息传递做不到同步有序(synchronous)
  • 节点宕机(fail-stop): 节点持续宕机,不会恢复
  • 节点宕机恢复(fail-recover): 节点宕机一段时间后恢复,在分布式系统中最常见
  • 网络分化(network partition): 网络链路出现问题,将N个节点隔离成多个部分
  • 拜占庭将军问题(byzantine failure):节点或宕机或逻辑失败,甚至不按套路出牌抛出干扰决议的信息

我: 老王,今晚7点老地方,搓够48圈不见不散! ……
(第二天凌晨3点) 隔壁老王: 没问题! // 消息延迟
我: ......

我: 小张,今晚7点老地方,搓够48圈不见不散!
小张: No ……
(两小时后……)
小张: No problem! // 宕机节点恢复
我: ......

我: 老李,今晚7点老地方,搓够48圈不见不散!
老李: 必须的,大保健走起! // 拜占庭将军
(这是要打麻将呢?还是要大保健?还是一边打麻将一边大保健……)

CAP理论

CAP是Consistency、Availablity和Partition-tolerance的缩写。分别是指:

  • 一致性(Consistency):每次都能保证数据的同步,是最新数据;
  • 可用性(Availablity):每个请求都能接受到一个响应,无论响应成功或失败;
  • 分区容忍性(Partition-torlerance):当节点间出现网络分区,照样可以提供服务。

CAP理论指出:CAP三者只能取其二,不可兼得。

可用性是必须要

一致性问题算法

  • 两段式提交(2PC)
    满足强一致性,实际举列
Paste_Image.png

经典列子:
1、牧师分别问新郎和新娘:你是否愿意……不管生老病死……
2、当新郎和新娘都回答愿意后(锁定一生的资源),牧师就会说:我宣布你们……(事务提交)

  • 三段式提交(3PC)
Paste_Image.png
  • Paxos协议
    简单说来,Paxos的目的是让整个集群的结点对某个值的变更达成一致。Paxos算法基本上来说是个民主选举的算法——大多数的决定会成个整个集群的统一决定。任何一个点都可以提出要修改某个数据的提案,是否通过这个提案取决于这个集群中是否有超过半数的结点同意(所以Paxos算法需要集群中的结点是单数)。

数据分布算法

分布式系统如何拆解输入数据,把数据分布到各个节点,下面列出几种常见算法

  • 哈希算法:这个很好理解,不做过多解释,扩展性不好;
  • 按数据范围分布: 按照数据的特征值来划分不同的服务器
  • 按数据量分布: 把数据划分为若干block,平均分配,但是需要管理较多元数据
  • 一致性哈希:扩展性好但是节点较少时候容易造成数据倾斜

工程实践中常用算法是按数据量和一致性哈希结合

Google三架马车

1、分布式存储GFS ,google 有非常庞大的数据,几台甚至几百台大型服务器都无法存下,所以干脆采用廉价PC,保存在成千上万台上,这样节省了资源,但是由此也带来了很多问题,细想一下,把数据存储在很多机器上会带来什么问题?
首先我要知道我的文件存到了哪个PC上,一个PC坏了是不是我的数据就丢了?所以要进行备份,具体怎么备份,这个应该可以配置,比如某个数据要有几个备份,从而请求备份的时候要做负载均衡;修改某台PC的数据其它上面的数据也要跟着修改,否则数据就不一致了啊?
.......带着这些问题,想想google会怎么解决这些问题?对,他们就是GFS,GFS对开发者是完全透明的,我们对数据的删除,修改,等操作,是透明的,我们创建一个文件完全不必去考虑我们创建的文件放在哪儿了,对GFS帮忙做了,架构如下:

Paste_Image.png

2、BigTable说白了就是一个key/value 用惯了key/value的数据结构,比如一个hashMap (key,value) ,bigTable只不过是用(行,列,时间t)作为key,t一般用来保存数据的版本号;

Paste_Image.png

BigTable 提供针对行数据的事务操作,底层存储为GFS,直白点BigTable就是在GFS上的一个应用而已,类比windows的文件系统,sqlServer数据库系统就是建立在windows文件系统之上的,不同之处BigTable是个分布式的海量存储系统;关键点:子表,介绍到此为止,省略了太多的细节,深入点的话去看论文;

判断某个主键是否在某个子表时:用到算法Bloom Filter http://blog.csdn.net/jiaomeng/article/details/1495500
这种算法的特点:有可能把不属于这个集合的元素误认为属于这个集合(False Positive),但不会把属于这个集合的元素误认为不属于这个集合(False Negative)。在增加了错误率这个因素之后,Bloom Filter通过允许少量的错误来节省大量的存储空间。

备注:GFS、BigTable 实时性应该不会很好
Paxos协议:http://zh.wikipedia.org/wiki/Paxos%E7%AE%97%E6%B3%95

3、数据都存储好了,接下来要进行计算了,map/reduce模型,负责将一个大任务,分配成许多小任务,然后分配到众多机器上去执行;底层怎么实现对开发者应该是透明的;我们需要注意的是如何将大任务进行map,如何进行reduce (即:如何将一个任务分配到许多机器上去执行,遵循什么原则)

工程实践

Hadoop

分布式系统起源于Google的分布式论文,但是其没有开源,由Apache公司工程实现了Google的论文。并且开源,迅速壮大。主要由下面子系统组成:
HBase -> Google Big Table
MapReduce
HDFS -> GFS
Zookeeper -> Chubby

系统架构

此处输入图片的描述
此处输入图片的描述
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容