存算分离是什么,SelectDB Cloud 中的存算分离设计优化升级

实时数据仓库分享
2024/12/14
SelectDB

存算分离的概念最初源于大数据和云计算领域。在早期的大数据和云计算环境中,存储服务和计算服务通常在集群中混合部署,这种存算耦合架构设计主要是为了避免网络 IO 开销。然而,随着网络性能的大幅提升,从百兆网卡到万兆网卡,网络带宽提升了100倍,网络传输已不再是分布式环境中的瓶颈。此时,存储和计算不再需要紧密绑定,此时矛盾转变为存储和计算并不是同步增长的,不同业务场景了下存储和计算的配比也不相同,之后便有了存算分离架构。

存算分离是什么,SelectDB Cloud 中的存算分离设计优化升级.jpg

一、存算分离是什么

存算分离,即数据存储(Storage)和数据处理/计算(Compute)功能的分离。这种设计理念旨在将存储资源和计算资源独立扩展和优化,互不影响,根据实际需求灵活配置,从而提高系统的效率和成本效益。

二、存算分离的优势

存算分离架构广泛应用于云计算、大数据分析、数据仓库、以及需要高度弹性和动态伸缩能力的应用场景中,存算分离架构在数据仓库中应用,体现的优势主要包括以下几个方面:

1、弹性伸缩性:计算需求和存储需求往往不是线性关系。存算分离允许根据实际需要独立扩展计算能力和存储容量,使得资源管理更加灵活高效;

2、性能优化,成本优化:计算和存储可以根据特定的工作负载需求在最适合的不境中运行,比如高性能计算可以在配备了高速CPU和大量RAM的服务器上进行,而数据可以存储在具有高I/O吞吐量的存储系系统中。通过优化资源使用,企业可以根据需求购买合适的资源,避免资源浪费,从而降低成本。存算分离使得计算和存储可以根据特定的工作负载需求在最适合的环境中运行;

3、系统稳定性增强:由于计算和存储分离,系统的一个部分发生故障不会直接影响到另一部分,从而增强了系统的稳定性和可用性。这大大降低了单点故障的风险,提高了系统的可靠性。

三、存算分离在 SelectDB Cloud 中的设计优化使用

SelectDB Cloud 是基于 Apache Doris 研发的全托管实时数据仓库服务,采用全新的云原生存算分离架构。当计算层与存储层进行了分离设计后,计算层由于没有了数据状态,可支持极其灵活快速的弹性伸缩;而存储层由于和计算解耦,可以极为方便的供多个计算资源进行共享访问。因此,我们在 SelectDB 中引入多计算集群能力,通过数据仓库架构上的创新来更好地满足用户需求。 下面,我们将对其中部分设计优化的关键点进行介绍。

强一致的数据共享优化

存算分离后,数据存储在共享存储中,可以供多个集群访问。在一个集群写入完成后,另一个集群是否能够立即访问到数据? 如果不能,将会存在一定的数据延迟,对很多实时性要求高的业务场景来说,这种方案难以接受。

为了达到数据的强一致访问,SelectDB 不仅实现了数据的共享化,也进行了深度重构,实现元数据的共享化:当数据通过其中一个集群写入共享存储后,会先更新共享的元数据,再返回数据写入结果。当其他集群进行数据访问时,可通过访问共享的元数据中心获取最新的数据信息,从而做到强一致的数据共享。这意味着通过任一个集群写入 SelectDB 中的数据,一旦写入成功,其他集群立即可见。

数据的多写多读优化

基于共享存储,数据的多读是比较容易实现的,多写则是基于分布式协调机制和乐观锁设计来实现的,具体如下:

数仓场景通过采用小批量、多并发的写入方式,来达到写入的高吞吐,数据延迟达到秒级即可满足大多数用户的需求,可以看到数仓的写入事务并发不高,并无关系型数据库每秒数十万的事务并发需求。因此 SelectDB 可以基于数据的 MVCC 多版本机制,借助共享的元数据中心进行事务协调,数据先提交多个集群进行转化处理,然后在更新元数据阶段(生效数据过程)进行分布式协调,先获取到锁的集群写入成功,其他集群则进行重试。

缓存能力设计优化

SelectDB 通过提供精心设计的缓存管理机制,可自动化保障存算分离架构的查询性能,也可按需满足用户灵活多变的调优需求:

对于单个计算集群,SelectDB 默认会根据 LRU 策略进行数据缓存,当缓存大小足够存储全部热数据时,即可保障存算分离类系统的性能追平存算一体类系统,由于本地缓存的单副本设计、远端存储的低廉价格,存算分离架构的存储成本要大幅低于存储一体架构。SelectDB 同时提供了手动的缓存控制策略,可通过手动策略保证某些表的数据优先存储于缓存中。此外,当集群进行弹性伸缩时,SelectDB 会自动基于统计信息,提前进行缓存的预热或迁移,以保障变更过程中查询服务平稳。

对于多个计算集群,SelectDB 提供了提供了跨集群的缓存同步能力,可同步已有集群的缓存数据到其他集群,从而加速查询性能,并且支持分区粒度的缓存同步控制能力。每个计算集群的缓存是独立的,用户可根据需要按需控制缓存大小。

权限控制与资源隔离设计优化

对于计算集群的使用,SelectDB 提供一套简单易用的权限机制,集群支持类似库表的权限分配机制,只有给用户分配了某集群的权限,用户才可以使用该集群,从而避免集群误用情况。

对于存储资源的访问,SelectDB 支持按照集群规格,进行存储带宽和 IOPS 的限流控制,当超过限速后存储访问请求将进行排队,以避免多个集群之间互相干扰。

如果您想立即免费体验新优化的 SelectDB Cloud 全托管实时数仓服务,可以点击这里进行申请!