海量分布式存储系统Doris

网友投稿 1033 2022-10-14

海量分布式存储系统Doris

海量分布式存储系统Doris

Doris是一个海量分布式KV存储系统,其设计目标是支持中等规模高可用、可伸缩的KV存储集群。跟主流的NoSQL系统HBase相比,其具有相似的性能和线性伸缩能力,并具有更好的可用性及更友好的图形用户管理界面。对于一个数据存储系统而言,高可用意味着两个意思:

高可用的服务:任何时候,包括宕机、硬盘损坏、系统升级、停机维护、集群扩容等各种情况,都可以对系统进行读写访问操作。高可靠的数据:任何情况下,数据可靠存储,不丢失。

分布式存储系统的高可用架构

在系统架构层面,保证高可用的主要手段是冗余:服务器热备、数据多份存储。使整个集群在部分机器故障的情况下可以进行灵活的失效转移(Failover),保证系统整体依然可用,数据持久可靠。

应用程序服务器:它们是存储系统的客户,对系统发起数据操作请求。数据存储服务器:存储系统的核心,负责存储数据、响应应用服务器的数据操作请求。

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

数据存储服务器根据应用的可用性级别设置数据复制份数,即每个数据实际物理存储的副本数目,副本份数越多,可用性级别越高,需要的服务器也越多。为了便于管理和访问数据的多个副本,将存储服务器划分为多个序列,数据的多个副本存储在不用的序列中(序列可以理解为存储集群中的子集群)。应用服务器写入数据时,根据集群配置和应用可用性级别使用路由算法在每个序列中计算得到一台服务器,然后同时并发写入这些服务器中;应用服务器读取数据时,只需要随机选择一个序列,根据相同路由算法计算得到服务器编号和地址,即可读取。通常情况下,系统最少写入的副本份数是两份。正常状态下,存储服务器集群中的服务器互不感知,不进行任何通信;应用服务器也只在启动时从管理中心服务器获得存储服务器集群信息,除非集群信息发生变化(故障、扩容),否则应用服务器不会和管理中心服务器通信。一般而言,服务器之间通信越少,就越少依赖,发生故障时互相影响就越少,集群的可用性就越高。

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

分布式存储系统的故障分类

正常情况下系统访问结构

在使用两份副本作为高可用策略的情况下,应用程序在写数据时,需要路由计算获得两台不同的服务器,同时将数据写入两台服务器;而读数据时,只需要到这两台服务器上任意一台服务器读取即可。

瞬时故障的高可用解决方案

遇到瞬时故障只需多次重试,就可以重新连接到服务器,正常访问。如果经多次尝试后,仍然失败,那么可能不是瞬时故障,而是更严重的临时故障,这时需要执行临时故障处理策略。当然也有可能是应用服务器自己故障,比如系统文件句柄用光导致连接不能建立等,这时需要请求管理中心服务器进行故障仲裁,以判定故障种类。

临时故障的高可用解决方案

由于数据有多份副本,因此读数据时只需要路由选择正常服务的机器即可;写数据时,正常服务的机器依然正常写入,发送故障的机器需要将数据写入到临时存储服务器,等待故障服务器恢复正常后再将临时服务器中的数据迁移到该机器,整个集群就恢复正常了。临时服务器是集群中专门部署的服务器(根据可用性规划,临时服务器也可以部署为多台机器的集群),正常情况下,该服务器不会有数据写入,处于空闲状态,只有在临时失效的时候,才会写入数据。任何时候该服务器都不会提供读操作服务。

永久故障的高可用解决方案

由于故障服务器上的数据永久丢失,从临时服务器迁移数据没有意义,必须要从其他序列中正常的服务器中复制全部数据才能恢复正常状态。永久故障发生期间,由于系统无法判断该故障是临时故障还是永久故障,因此系统访问结构和临时故障一样。当系统出现临时故障超时(超过设定时间临时故障服务器仍没有启动)或人工确认为永久故障时,系统启用备用服务器替代原来永久失效的服务器,进入永久故障恢复。

参考:​​​ https://github.com/itisaid/Doris​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:商务工作记事册,一个内含丰富功能的日历微信小程序
下一篇:SpringBoot中整合Minio文件存储的安装部署过程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~