0
云溪NewSQL数据库
编辑
简介:“云溪”NewSQL数据库是浪潮推出推出的一款定位于在线事务处理/在线分析处理(HTAP)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全、分布式事务、实时 OLAP 等重要特性。

金融级的云原生分布式数据库-“云溪”NewSQL数据库

“云溪”NewSQL数据库是浪潮推出推出的一款定位于在线事务处理/在线分析处理(HTAP)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全、分布式事务、实时 OLAP 等重要特性。

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F597b2f47j00qa07gk001wc000hs00g0c.jpg&thumbnail=650x2147483647&quality=80&type=jpg

浪潮“云溪”NewSQL数据库总体架构

浪潮“云溪”NewSQL数据库是一款具有银行基因的金融级分布式数据库,“云溪”数据库提供传统关系型数据库OLTP 的所有特性,并且改变了传统数据库集中存储的限制,采用分布式架构、无共享存储,从而实现了从计算层、存储层的可扩展性。

“云溪”NewSQL分布式数据库,可以多地多机房部署,可跨域全球多个区域,多个数据中心之间进行数据分发复制,并可以根据地理分区定制数据放置策略、容灾备份。每个数据节点都可对外提供服务,并提供数据的就近访问。当一个数据中心发生异常时,数据会由其他数据中心自动恢复,并接管数据访问,从而保障系统的高可靠性。数据中心间进行数据实时同步,并在接管时保证数据的全局一致性。

“云溪”数据库提供兼容PostgreSQL协议访问,具备分布式事务、高性能、强一致高可用、线性扩容和弹性伸缩、企业级安全等特性,能够同时提供智能运维、自动化运营、监控告警等配套设施。

“云溪”数据库既支持分布式 ACID 事务,具备高并发、高可用、弹性伸缩特性,并可同时处理交易类业务和分析类业务。对于正在面临海量数据存储与处理的金融企业来说,“云溪”数据库具备以下几大优势,可帮助金融企业改善其数据库能力:

  • 提供混合事务和分析处理能力,通过统一的平台,同时支撑实时在线事务处理(OLTP)和在线分析处理(OLAP)。

  • “云溪”数据库实现了对于 PostgreSQL数据库的高度兼容,并支持Oracle/Mysql数据导入,可以在不影响业务系统正常运行的情况下,将业务的后台支撑数据库从 Oracle/MySQL/PostgreSQL 切换为 “云溪”数据库。

  • 具有横向弹性扩展能力,当数据库性能遇到瓶颈时,通过增加节点的方式即可实现 “云溪”数据库的横向扩展,轻松应对高并发、海量数据场景。

  • “云溪”数据库可以提供数据强一致性保证,在发生故障时,可以轻松实现故障的自动恢复,无需人工介入。

  • 与云计算有着深度的契合性,支持公有云、私有云和混合云,提供了完善的云数据库解决方案。

主要技术特性

一、分布式强一致

在分布式系统中,各节点状态的一致性是非常重要的特性。“云溪”NewSQL数据库采用Raft一致性算法(Raft consensus algorithm)来确保即使是在节点发生故障的时候,用户的数据也保持一致性。

在“云溪”数据库中,将用户库表数据按照/DB/Table/PrimaryKey编码成KV对,数据划分成64M大小的分片(Range)。每个Range默认3副本存储,若少于一半的副本丢失,会自动在其他可用节点上补齐。根据不同的容灾等级,Range数据多副本可配置为跨机器、跨数据中心、跨地域存储。

单个Range的多个副本中有一个会被选举为领导者(leader),副本之间通过Raft协议进行数据同步。Raft协议将所有的请求以Raft Log的形式串行化并由Leader同步给Follower。

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F2e025517j00qa07gk000pc000f600d1c.jpg&thumbnail=650x2147483647&quality=80&type=jpg

Raft一致性

当Follwer副本接受消息并保存后,返回响应给Leader。Leader在接收到一半以上的成功保存消息则认为用户数据已经成功保存并返回响应给客户端。最终所有副本上的日志都会复制成与Leader一致的状态,保证了用户数据更新的原子性和一致性。

二、异地多活高可用

在分布式数据库中,系统的高可用性和数据强一致性往往不可兼得。一般情况下,对于一致性要求比较高的业务在响应延时方面就会降低要求,适合选择CP 模式;对于响应时延有高要求的业务在数据一致性方面会降低要求, 适合选择AP 模式。而银行核心系统对数据一致性和可用性都有很高的要求,正常场景下需保证数据的强一致性要求, 当出现数据中心间的网络异常(如网络抖动、丢包、瞬断等) 时,依然保证银行核心系统的可用性。为此“云溪”数据库支持各种跨数据中心部署方案,支持异地多活、两地三中心、三地五中心等,“云溪”数据库能够在系统故障时自动切换,少于1/2副本故障不影响系统使用,全面保障服务高可用,能做到RPO=0,RTO<60s。

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2Fa45ce285j00qa07gk000kc000hs005yc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

多中心部署

“云溪”数据库同时支持地理位置分区功能,用户可以将数据分散在多个数据中心,并向不同地理位置的用户提供一致的数据访问,可以通过配置策略将数据存储在距离自己最近的节点或数据中心,以获得最佳的性能。

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F41063052j00qa07gk0015c000hs00erc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

三、分布式事务

金融行业核心交易类业务对事务的一致性要求很高,目前业界流行的最终一致性分布式事务方案无法满足其要求,而两阶段提交由于同步阻塞、读数据可能不一致等常见问题,同样无法满足金融行业交易类业务对性能和一致性的要求。

“云溪”数据库采用无锁的两阶段提交事务模型实现了对并发操作的ACID事务支持,采用Write intent +全局事务表解决多节点间事务原子性,没有中心的事务协调者,任一节点都可以做为事务协调节点,该节点负责本次事务的整个过程,参与节点只涉及节点自身数据的更新。

- 详细的事务过程

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F59c8868aj00qa07gk000tc000hs00bqc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

分布式事务流程

1. 开始事务:第一个写操作发生的节点,会充当事务管理器,该节点将创建一个事务记录存入分布式存储中,标记事务记录状态为PENDING。

2. 写意图(Write Intents):“云溪”数据库使用了“Write Intents”的结构,当事务的参与者在一个事务中写入数据时,将被记录为一个写意图,同时还会存储事务记录的Key。在事务提交后,写意图会被成功写入数据库,而事务失败则会清理写意图。

3. 读取意图:当进程读取到Write Intents,表明有事务在操作该数据。则进程需要查询意图中的事务记录状态是否已经提交,并根据隔离状态来决定当前进程是等待事务的提交(SSI隔离级别)还是读取该事务之前更旧的数据(RC隔离级别)。

4. 提交事务:由协调者更新事务记录状态为“已提交-COMMITED”即可,并触发清理操作。其他参与者不需要处理。(因此,“云溪”数据库的分布式事务也可以称为1.5阶段提交)

5. 清理操作:如果事务状态是“已提交-COMMITED”,则对应的写意图会转换成普通值,并清除写意图。如果是“终止-ABORTED”,则清除写意图。

- 混合逻辑时间戳-HLC

分布式事务需要全局时钟,“云溪”数据库采用混合逻辑时钟(HLC),这种方案不依赖中心节点,方便扩展,即使是跨地域部署也没有什么问题。HLC由WallTime和LogicTime两部分组成,WallTime为节点n当前已知的最大的物理时间,通过先判断WallTime,再判断LogicTime确定两个事件的先后顺序。

- 多版本控制-MVCC

“云溪”数据库底层存储是KV,利用KEY + timestamp可实现MVCC。在实际的操作中,为了快速读取到最新的数据,会把HLC取反encode到KEY的尾部,读取的时候以KEY作为前缀启动一个迭代器,这样最新的数据最先被读取到。

事务中未提交的数据比较特殊,并不会把事务时间戳encode到KEY的尾部,而是把事务相关的信息和数据一起Encode到Value中,称之为WRITE INTENT。

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F7b831fcaj00qa07gk0010c000hs009kc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

读取的时候,未提交的数据肯定最先被Get到。历史数据会被异步GC掉。

“云溪”数据库这种分布式、无锁事务的原子性策略,即保证了分布式系统下难以处理的分布式事务一致性问题,同时避免传统两阶段事务的繁琐,消除了两阶段锁,同时大大降低了事务提交和回滚的开销,可以大大提升分布式事务的吞吐能力。

四、云原生与微服务

“云溪”数据库是为云而设计的数据库,提供容器化部署和编排调度,支持公有云、私有云和混合云,可实现一键部署与升级、自动备份与还原、故障自动修复、自动扩容、数据自动重分布,完全适应云时代微服务架构应用的需求。

“云溪”数据库基于P2P的节点管理,节点之间完全对等,无中心架构,任一节点均可处理客户端请求,并且数据库的所有配置相关信息全部在数据库内,无额外的配置信息,可方便的实现云上线性扩展。

同时 “云溪”数据库支持云原生时代微服务的开发模型。目前常用的微服务模型是为每个微服务配置独立的数据库,如下:

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F2ffe3561j00qa07gk000bc0008i0072c.jpg&thumbnail=650x2147483647&quality=80&type=jpg

微服务独立数据库

但这种模型的缺点是数据碎片化,无法集中管理,各微服务的数据难以共享,并且各微服务独立数据库,运维成本高。

而使用“云溪”数据库可以为各微服务提供一个统一的数据库存储后端:

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0508%2F55dbe8d7j00qa07gk000ac0008i0071c.jpg&thumbnail=650x2147483647&quality=80&type=jpg

微服务云溪数据库

“云溪”数据库支持“Database->Table->Partition”级的数据放置策略,可以通过“分区和标签功能”,为微服务标记独立实例或者分区,实现物理分散存储,而逻辑集中管理的特性,并通过分级权限管理提供安全保障。

展望未来

金融行业是国家关键核心行业,金融业的发展与信息技术应用密不可分。金融科技对分布式数据库和国产数据库的需求将驱动“云溪”NewSQL数据库进一步发展,面向整个金融行业的 IT 生态,密切结合金融行业的业务应用特点,打造金融行业应用生态圈。

“云溪”数据库还将继续HTAP能力的扩展,在多模数据库领域开拓新的方向,同时加强性能提升、新型存储技术的引进与优化,持续提升产品总体性能。

在适当的时机,“云溪”NewSQL数据库产品将全部开源,为国产分布式数据库贡献我们的力量。

评论

0
0
词条统计
创建者:海尔塔啾啾
编辑次数:1
浏览次数:1903
API调用次数:0
贡献者