高可用架构(上)

1. 背景

在学习完各种高性能发实现方案后,就需要对三大复杂度一直的高可用进行开刀了,在高可用方面主要有哪些东西是我们需要考虑的呢?接下来将从三个方面逐一分析。

2. 理论

在设计高可用架构理论方面,我们主要有2个方向选择,分别是CAP理论和BASE理论,那什么是CAP,什么是BASE呢? 这个还是要好好分析一下。

2.1 CAP

  • C(Consistence):一致性
  • A(Availability):可用性
  • P(Partition Tolerance):分区容错性

一致性:指的是从所有节点获取的数据都是最新的(最新,那就是每个节点数据都是最新的数据,相同的)。

可用性:非故障节点在合理时间内返回合理响应。这个主要是为了排除一些非正常响应,如:超时,或者错误的结果

分区容错性:在发生网络异常时,系统能够继续保持任务运行

CAP理论有三个,但是在分布式系统中来说,只能选择其中两个。多系统网络中,我们无法保证网络100%正常,所以必须要选择P,保持系统继续运行,然后才是在C、A之间做取舍。如果选择CP, 那就是需要保证数据的一致,当无法保证数据一致时,就要对异常节点剔除,就无法保证系统可用性。当选择AP,当网络波动时,数据无法同步,无法保持最新数据,但系统可以访问。

通过上面的描述,有没有发现一个问题?这些理论都是针对数据来说的,当CP时,数据保证了一致,当AP时,数据不一致。我们有一个误区,认为系统设计一定要选AP,或者CP。其实这样是不正确的。因为在同一个系统中,可能部分数据需要保证AP,有一部分数据需要保证CP,例如:关于金额的数据则需要保证AP,但是用户相关昵称、简介可以使用AP。

所以,在系统正常运行的时候,是不存在选AP,还是CP的,我们应该同时关注CA。CAP的理论的前提是发生了网络分区,但是,当网络正常时,我们没有必要放弃A或C,我们应该同时满足。

2.2 BASE

  • B(Basically Available):基本可用
  • S( Soft State):软状态
  • E(Eventual Consistency):最终一致性

基本可用:分布式系统发生故障的时候,保证系统能够基本运行,允许损失部分可用性

软状态:过渡期,数据处于某中非最终状态。可以理解为:数据不一致

最终一致性:系统中的数据经过一段时间后,最终达到一致的状态(非实时一致)

BASE理论是对CAP理论的一种补充,在CAP中,C大多数指的情况是强一致性,在同一时刻,从所有节点获取的数据是相同的。而在BASE中,则通过软状态,和最终一致性来保证系统可用,而非在同一刻数据相同,而是通过一段时间后,所有节点数据相同。或者说,当系统发生分区故障时,数据不一致也可以使用,而最后通过通过,达到所有节点数据一致。

3. 接口层面

当在理论方面选择完可用性后,我们就需要在接口层面来考虑系统的可用性了。不然,一个接口调用,就搞挂系统,这样可就丢人啦。

通常,我们从接口层面考虑可用性主要分为4个方面,相信大家也是耳熟能详。分别是:熔断,限流,降级,排队。接下来就从这4个方面介绍。

3.1 熔断

熔断,这就和我们生活中的保险丝很像,当功率过大的时候,保险丝就会断掉,防止功率过大,引起火灾。我们在进行接口设计时,也需要考虑熔断,当系统接口调用失败,达到一定失败率或压力时,应该熔断系统。这里的熔断,不是指挂掉接口,而是快速响应。我们通过自定义响应内容,快速返回结果,响应客户端。熔断的核心理念也就是快速响应,保证系统可用。

3.2 限流

限流。这个就像我们周五进地铁,由于人多,防止地铁里的人员发生踩踏,拥挤事件,就在地铁口弄几个架子,让人慢慢排队,减小入口流量,保证地铁里的人流能够正常运行。限流和地铁这个没有大的区别,防止系统应对过大的流量,压垮系统,则通过闸口,控制进入系统的流量,这样可以使得系统在一个合理的流量内运行,保证了系统的正常运行。我们通过这样可以看得出来:限流是通过外部方式,来解决系统可用性。

3.3 降级

降级,那就是在流量高峰期间,关闭或减少系统其他功能,保证系统的核心功能可用。举个栗子:那就是淘宝双11的时候了,只能下单,而不能就行查单/或者只能查询最近几天的单。为什么呢?因为用户下单后可能进行大量的查单操作,占用大量系统资源,那就会影响下单,影响业务收入,这样就得不偿失。通过关闭查单,保证下单可用,这样就保证了核心系统的可用。

3.4 排队

排队,顾名思义,就是排队。就像网红奶茶店,大家都挤着去买奶茶,人员忙不过来,那咋办? 那大家就排队呗,在这等着,然后等到你的时候,在给你响应。在系统中,我们可以通过暂缓用户请求,排在队列中,让用户等待,限制处理量,等处理后在给用户响应。大家应该也有所发现,排队和限流还是蛮像的,限流是直接拒绝,而排队,是让用户等待。

4. 存储

从理论,到接口,那么接下来就是存储方面的高可用。在互联网中,大量的用户,大量的数据,带来的极多挑战,那么,我们到底有什么方案可以保证存储高可用呢?

存储高可用的本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用。其主要的复杂性体现在:数据同步延时和数据复制中断带来的数据不一致问题。所以我们也主要从四个方面考虑问题。1、数据如何复制,2、各个节点的职责,3、如果应对复制延迟,4、如果应对数据复制中断。

4.1 切换方式

常见的分布式方案有;主从,主备,主主

4.1.1 主备

主备,从字面意思理解,就是一个主节点,一个备机。 主节点用来处理所有的操作。备机从主节点备份数据,但是不对外提供服务。这种方式就是简单,切换主,备客户端无感知。缺点就是:备机仅仅用来备份,有些浪费。

4.1.2 主从

主从,从字面理解就是一个主人,一个随从。随从和备机还是有区别的,随从需要干活,备份不需要。主从和主备相似,只是从机需要提供查询服务。这中方式弥补了主备方式备机浪费的缺点,但也带来了新的问题,主从复制延迟问题,客户端需要根据情况切换到主机或备机。

4.1.3 主主

主主,顾名思义,就是两个节点都是主节点。双主带来的好处就是任何一个节点都可以进行读写操作,但缺点也显而易见。双主节点需要对对方的数据进行同步,这样就带来了同步延时的问题,同时,在同步的时候还会带来数据重复的问题。如:在A服务注册了手机号为F的用户,在B服务业注册了手机号为的用户,在合并时如何处理的。所以,在未考虑复杂性的时候,主主更适用于数据具有可重复性,可丢失的场景。

4.2 双机切换

我们从主备和主从的方案中发现,当主节点挂掉后,就无法在对外提供服务。这样就会导致服务宕机,那么我们就要采取一个合适的方案,来进行新的主节点的选取,那么就涉及到了双击切换

要设计切换方案,我们就要从这几个方面考虑:

4.2.1 主备间状态判断

主要包括:1、状态传递的渠道,也就是通过什么样的方式来传递内容。 2、 状态检测的内容:主要是通过什么东西来判断主节点是否挂掉,如:断电,进程死亡?

4.2.2 切换的决策

切换决策主要包含几个方面:1、什么时候切换,2、如何切换,3、切换的方式如何?

4.2.3 数据冲突问题

我们在切换过程中,可能主备/主从之间数据还未完全同步,如何保证切换后数据一致,这个就有点类似上面的主主方案了。

5. 总结

以上分享的是高可用架构理论,接口,存储方面的理论知识,在设计高可用的时候还是有许多要考虑的。如果有什么问题,欢迎指正,讨论

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

推荐阅读更多精彩内容