架构师训练营:第六周作业

用户头像
zcj
关注
发布于: 2020 年 07 月 16 日

一 简述CAP原理

分布式系统的CAP

什么是CAP

C (consistency) : 一致性,一致性是说,每次读取的数据都应该是最近写入的数据或者返回一个错误,而不是过期的数据,也就是说数据时一致的。

A (Availability) : 可用性,可用性是说,每次请求都应该得到一个响应,而不是返回一个错误或者失去响应,但是不保证返回的数据时最近写入的。也就是说系统需要一直都是可以正常使用的,不会引起调用者的异常,但并不保证响应的数据时最新的。

P (Tolerance to newowrk Partitions) : 分区耐受性,即使因为网络原因,部分服务器节点之间消息对视或者延迟了,系统依然是可以操作的。

cap原理:

在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时得到满足。

cap原理下数据存储冲突的示例图:



分布式存储系统有三个节点,当节点B与A和C之间的网络通信故障时。 客户端1对节点A的数据更新,客户端3对节点的数据更新,由于节点B与节点C和A之间的网络故障无法进行数据同步,导致客户端4查询出来的数据与客户端2查询出来的数据不一致。

数据不一致的解决办法

1、保持最终一致性(最终一致意思为,用户读取的时候数据保证一致,在发现分布式系统中某个节点的网络故障时,限制向该节点读写)

2、保证最终写入一致 (根据写入的时间戳覆盖,新的覆盖旧的,需要节点的时间必须做到精确同步)

3、业务场景解决(比如数据不一致导出出现了多个购物车数据,在业务中可以直接将内容合并为一个)

4、投票解决冲突 (分布式系统每个服务器投票,多数覆盖少数)

二 Doris

针对Doris案例,请用UML时序图描述Doris临时失效的处理过程(包括判断系统进入临时失效的状态,临时失效中的读写过程,失效恢复过程)

Doris 介绍

Doris 是一款 海量分布式透明化KV存储引擎,一种NOSQL数据库。

主要的功能特点是:

  • KV 海量数据存储:分布式海量数据存储,存储可替换

  • 运维成本低:易管理、可监控

  • 伸缩性:线性伸缩、平滑扩容

  • 高可用:自动容错和故障转移

  • 高性能:低响应时间、高并发

  • 一致性约束:最终一致性

Doris的整体架构

系统整体上分为三部分:

  • Client :应用程序服务器,它们是存储系统的客户,对系统发起数据操作请求。

  • DataServer+Store :数据存储服务器,一个服务器中可虚拟出多个虚拟存储节点。它们是系统的核心,负责存储数据,响应应用服务器的数据操作请求。

  • ConfigServer :管理中心服务器,这是一个由两台机器组成的主-主热备的小规模服务器集群,主要负责集群管理,对数据存储集群进行健康心跳检测;集群扩容、故障恢复管理;对应用程序服务器提供集群地址配置信息服务等。



其中存储服务服务器集群根据可用性的需求分为多个序列组,一个序列组就是数据的一份拷贝。

Doris的数据高可用性保证

  • 存储服务服务器集群可分为多个序列组,一个序列组就是数据的一份拷贝,同步的序列组设计保证数据的高可用性。

  • 客户端连接的是虚拟数据节点服务,一个物理机可部署多个虚拟数据节点服务,数据最终存储在物理机上。

  • 客户端在写入数据时,通过一致性算法得出数据存储的虚拟节点序号。然后同时向多个序列组中对应序号的虚拟节点写入数据。从而保证数据的一致性。

  • 查询时,根据路由算法得出的虚拟节点序号,取其中一个序列组中对应序号节点上的数据。



Doris的数据访问结构如下图:

Doris不同故障情况下的高可用解决方案

高可用的系统需要解决在不同故障情况下都保持较高的系统可用性,但是不同故障类型带来的问题复杂性不同,不可能使用一种解决方案处理所有情况,需要针对各种故障提供具体解决方案。

分布式存储系统故障分类

在讨论解决方案之前,我们先对故障进行分类,针对不同故障情况,分别处理对待。

对于一个分布式存储系统而言,影响系统整体可用性的故障可以分成三类:

Ø 瞬时故障 :引起这类故障的主要原因是网络通讯瞬时中断;服务器内存垃圾回收或后台线程繁忙停止数据访问操作响应。其特点是故障时间短,在秒级甚至毫秒级系统即可自行恢复正常响应。

Ø 临时故障 :引起这类故障的主要原因是交换机宕机、网卡松动等导致的网络通讯中断;系统升级、停机维护等一般运维活动引起的服务关闭;内存损坏、CPU过热等硬件原因导致的服务器宕机;这类故障的主要特点是需要人工干预(更换硬件、重启机器等)才能恢复正常。通常持续时间需要几十分钟甚至几小时。

故障时间可分为两个阶段:临时故障期间,临时故障恢复期间。

Ø 永久故障 :引起这类故障主要原因只有一个:硬盘损坏,数据丢失。虽然损坏硬盘和损坏内存一样,可以通过更换硬盘来重新启动机器,但是丢失的数据却永远找不回来,因此其处理策略也和前面两种故障完全不同,恢复系统到正常状态也需要更长的时间。故障时间可分为两个阶段:永久故障期间,永久故障恢复期间。



集群节点的故障判定设计

系统裁定集群中一个节点故障的动作

1、 客户端请求数据操作时首先直连节点服务器发出请求,出现网络故障通信失败时,会尝试多次重试。

2、客户端多次重试仍然失败,向管理中心服务报告。

3、管理中心收到报告,检测与疑似故障的节点的心跳,如果正常则不作裁定。

4、管理中心检测到节点故障,标记节点地址失效,发出报警并作出故障策略处理,改变客户端对故障节点的访问策略。

动作过程如图:



原则:集群节点的故障只能由管理中心服务器裁定。服务器节点之间不相互通信,避免故障扩散。

集群节点的故障恢复设计

集群节点的恢复根据故障类型执行不同的策略,故障类型分为3类:瞬时故障、临时故障、永久故障

  • 瞬时故障恢复 :

瞬时故障时一种严重性较低的故障,一般系统经过较短暂的时间即可自行恢复,遇到瞬时故障,只需经过多次重试,就可以重新连接到服务器,正常访问。

  • 临时故障恢复

临时故障要比瞬时故障严重,系统需要人工干预才能恢复正常,在故障服务器未能恢复前,系统也必须保证高可用。由于数据有多份拷贝,因此读取数据时只需要路由选择正常的服务器即可;写数据的时候,正常的服务器依然正常写入,发生故障的服务器不写入,而是写入临时存储服务器,等待故障服务器恢复正常后再将临时服务器中的数据迁移到该机器,整个集群就恢复正常了。

故障处理及恢复过程:

1、节点临时故障、管理中心改变集群的路由,使客户端写入数据到临时服务器 和其他正常服务器中,进入临时故障状态

2、维护人员手工介入重新启动节点服务器,进入临时故障恢复状态

3、管理中心改变路由策略,使客户端写入到重启后的服务器和其他正常服务器中,同时将临时服务器数据迁移到重启后的服务器中,并控制读取操作不从该服务器读取。

4、临时服务器中的数据迁移完毕,管理中心改变路由策略,集群恢复正常状态。

时序图如下:



其中临时服务器是集群中专门部署的服务器(根据可用性规划,临时服务器也可以部署为多台机器的集群),正常情况下,该服务器不会有数据写入,处于空闲状态,只有在临时失效的时候,才会写入数据。任何时候该服务器都不会提供读操作服务。



  • 永久故障恢复

永久故障是指服务器上的数据永久丢失,不能恢复。由于故障服务器上的数据永久丢失,从临时服务器迁移数据就没有意义,必须要从其他序列中正常的服务器中拷贝全部数据才能恢复正常状态。

永久故障发生期间,由于系统无法判断该故障时临时故障还是永久故障,因此系统访问结构和临时故障一样。当系统出现临时故障超时(超过设定时间临时故障服务器仍旧没有启动)或者人工确认为永久故障,系统启用备用服务器替代原来永久失效的服务器,进入永久故障恢复

永久故障处理及恢复过程:

1、系统先进入节点临时故障、管理中心改变集群的路由,使客户端写入数据到临时服务器 和其他正常服务器中,进入临时故障状态

2、维护人员手工介入标记为永久故障,或者临时故障超时升级为永久故障。

3、删除临时服务器中的数据,将其他一个序列组的服务器对应的拷贝服务器调整进入临时故障状态,拷贝服务器数据迁移到备用服务器中,同时数据写入时写到备用服务器和临时服务器及其他正常服务器中。此时备用服务器和拷贝服务器都不可查询,只能由其他序列组的服务器接收查询请求。

4、拷贝服务器的数据向备用服务器迁移完毕,备用服务器替代员永久故障的服务器提供服务。拷贝服务器进入临时故障恢复状态,可写入数据,同时临时服务器数据迁移到拷贝服务器中。

5、临时服务器中的数据迁移完毕,整个集群恢复正常状态。



用户头像

zcj

关注

还未添加个人签名 2019.10.12 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营:第六周作业