18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 行业动态 > Front实时IO接入层

Front实时IO接入层

时间:2022-04-30 15:36:01 | 来源:行业动态

时间:2022-04-30 15:36:01 来源:行业动态

方舟备份集群采用分层存储,实时IO接入层使用少量的NVME等高速存储设备,承接海量实时IO,实时IO会定期下沉到采用大量HDD设备构建的容量存储层。方舟的接入层(Front)是整个数据方舟系统的门户,其性能关系到能否接入SSD/RSSD云盘等高性能的设备。

原始的Front是基于Log-structured的设计,每块逻辑盘会被分配一组Front节点,对于一次简单的磁盘IO写入操作,client将IO转发到Primary Front节点,Primary Front节点将此次的IO追加写入到最新的Log中,并将IO同步到Slavery Front节点。

分析可知该设计存在以下问题:1. 一块逻辑盘的实时IO只落在一组(Primary-Slavery)Front节点上,所以系统对于单块逻辑盘的接入性能受到Front单节点性能限制。这种设计是无法接入RSSD云盘这种超高性能设备的。2.虽然通过hash的方式将用户逻辑盘打散分布到整个接入层集群,但是可能出现分配在同一组Front节点的多块逻辑盘同时存在高IO行为,由此产生了热点问题,虽然可以通过运维手段将其中的部分逻辑盘切换到空闲的Front节点上,但这并不是解决问题的最佳方式。



针对于此,我们提出了基于Stream数据流的设计,以满足高IO场景下业务对于接入能力的要求。Stream数据流的概念即是将逻辑盘的所有写入数据抽象成为一段数据流,数据只在Stream尾部进行追加写。Stream按照固定大小分片,每个分片按照一致性hash算法映射到一个归置组,归置组代表一个副本组,由存储资源按照一定策略组成。这样就将一块逻辑盘的实时IO打散到了所有接入层集群上,这不仅解决了接入RSSD云盘这种超高性能设备的问题,同时还解决了接入层热点的问题。

Stream数据流符合Buffer的特性,即从尾部写入、从头部读出。我们使用一组数据来标识Stream数据流的有效区域:read_offset和write_offset。当Stream有实时数据写入,write_offset增长。Shuffle模块会处理实时IO下沉到容量存储层的工作。Shuffle会从Front定期拉取数据,在内存中进行分片(sharding),并组织为Journal数据,推送至下层的Arker容量存储层。推送Arker成功后,read_offset更新。对于已经下沉到方舟Arker容量存储层的数据,我们会对其进行回收以释放存储资源。

关键词:

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭