He3DB的架构:
核心能力评估:
性能: 100W,TPS>10 w
He3DB 参考Aurora的论文。实现log is database:
- 计算引擎仅写wal日志,不写数据页,也就是计划引擎往存储引擎只写日志,存储引擎异 步回放日志变成数据页,并给计算引擎提供多版本数据页(区别于MVCC多版本,这个是数据页多版本)
- 为了进一步降低WAL 日志量,我们关闭WAL full page write. PG为了解决半页写的问题,checkpoint 后的第一次页修改,WAL日志会记录整个数据页。 关闭fpw以后,由数据页的原子写由底层存储引擎保证
写性能: 高并发写数据时,因为只写WAL,相对单机PG,磁盘利用率能够提升2倍以上,对应数 据库,磁盘IO一直是制约写吞吐最重要的因素。通过这种优化,评估写TPS提升2-3倍 主备之间没有日志同步,WAL日志数据写入到底层高性能存储层,由存储层通过RAFT算法 实现WAL日志的多副本存储,相比传统的PG主备WAL流复制同步数据方式,主节点负载更低(只有一个写节点,主节点做的工作越少越好) * RAFT同步算法相比PG传统的流复制方式,性能优化空间更大。例如leader节点收到WAL数据后,会同步本地持久化存储,同时并发往其它follower节点同步wal日志(如果是PG,使用串行的方式同步日志,先写本地盘,然后再同步其它备节点)
通过这种优化,HE3DB的写性能完全能够实现TPS>10w的指标
读性能:
- 控制主备绝对时延<30S:备机实现WAL delay replay(只回放内存中有的数据页)技术。实现日志回放由磁盘IO转化为内存IO的优化。
- 智能中间件:中间件跟计算引擎交互过程中,能够精准知道主备数据差异,根据用户访问的数据,选择最佳读节点,保证读强一致性的同时尽量保证每台备机负载均衡。最终实现通过增加备机,线性增加读吞吐能力
- 冷热分层设计:实现支持不同的备机能够设置缓存不同的表数据,对应每个备机的date buffer(内存)缓存不同的表数据。当备机回放WAL时,只会回放内存中存在的数据页. 通过这种设计,能够把不同备机的Date Buffer串联起来,变成一个大的内存池,加上冷热数据设置,保证内存缓存中始终最热的数据。从而解决大数据量时,内存命中率低的问题(只要是热数据,HE3DB就能够保证整体命中率保持在一个比较高的水平)
关于内存池的设计,我们也看到一些论文把计算引擎中的内存拆解出来,通过RDMA组合所有的内存形成一个内存资源池。我们认为这种设计并不太适合HE3DB:
- 增加成本(使用RDMA的成本);
- 技术实现复杂,也不够成熟,不利用快速推向市场;
- 基于新硬件,不利于开源 关于通过中间件提供读一致性,其实很好理解,如果中间件能够知道精准的感知主备delay,中间件收到请求后,就能选择正确的备节点,并保证一致性读。例如:一个数据库实例,只有少部分表更新频率比较高,如果用户读那些更新频率慢的表,那么备机上的数据绝大部分时间是最新的。所谓智能中间件,只是通过中间件把这种选择变成一个自动化的过程,并且对用户透明(如果用户通过中间件访问数据库服务),后续我们会有专门的文章介绍这部分的设计
备份:
- 备份过程对业务零影响:He3DB的备份模块单独拆解出来,实现直接操作S3存储完成备份过程,所以备份动作可以任意时间启动,根本不需要任何时间窗口,对业务也没有任何影响
- 备份速度:部分速度主要取决于存储引擎的吞吐,因为存储引擎是分布式的,所以能够并行进行,很容易实现10G/S,相比单机备份速度提升非常明显
低成本:
三个方面控制成本,总体思路以serverless的方式提供数据库服务:
成本跟使用的资源密切相关,He3DB的资源使用被切分成三层(计算层,高性能存储层,低性能持久层),每一层能够基于负载情况,单独完成扩缩容:
- 计算引擎:通过中间件感知业务负载,基于业务实时负载,实现秒级扩缩容,未来中间件会进化成大脑,协调各种资源的扩缩容,甚至数据冷热感知
- 高性能存储层: 虽然HE3DB一直强调是低成本,但是高性能也是我们给用户的承诺。为了兼顾高性能,低成本。存储层进一步细分出高性能存储层:这一层主要用于写同步路径,以及缓存热数据。高性能存储层通过缓存热数据,保证资源利用率最大化,相比缓存所有的数据,同样达到节省成本的目的,
- 低性能存储层: 主要用于持久化存储所有的数据,这一层主要存储冷数据,所以会启动极致压缩,使用低成本硬件。唯一要保证的就是数据高可用能力。
从上面HE3DB的设计解读来看,冷热分层是HE3DB最核心的设计(解决内存命中率低的问题,高性能的问题,低成本的问题)。下面我们详细介绍这部分的设计思路, 在设计冷热分层架构之前,我们先以一些问题展开思考?
什么数据是冷数据,什么数据是热数据,如何界定冷热数据?
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。