大数据 > 国内首个Serverless数据库来了,技术架构全揭秘!

国内首个Serverless数据库来了,技术架构全揭秘!

2020-05-03 07:30阅读(64)

接头| CSDN从Oriental ic 下载本文为企业节省成本,缩短产品上市时间,减少运维与维护之间的摩擦而开发团队是无服务器的核心。 自AWS发布lambda以来,已经有六年

1

接头| CSDN从Oriental ic

下载本文为企业节省成本,缩短产品上市时间,减少运维与维护之间的摩擦而开发团队是无服务器的核心。 自AWS发布lambda以来,已经有六年了,以使“无服务器”变得越来越为开发人员所熟悉。与此同时,它吸引了许多企业和开发团队的青睐和后续行动。

不久前,腾讯云发布了第一个国内无服务器数据库,PostgreSQL用于无服务器(serverlessdb),该数据库已受到业界许多数据库开发人员的广泛关注。 它基于PostgreSQL数据库,可以按需分配资源,实现安全隔离,弹性容量扩展,按需支付和本地SQL支持。 本文中,腾讯云serverlessdb的产品总监从租户隔离技术,快速扩展和收缩能力,连接池管理等方面对数据库背后的设计细节进行了详细解密,希望能给所有开发人员带来启发。 如何实现

真正的自动伸缩? 与传统数据库相比,

通过弹性容量扩展和基于数量的云数据库计费,可以帮助用户按需使用云资源,可以避免资源浪费,节省成本。 从系统实现原理上看,云数据库当前提供的“弹性方案”本质上是一种战略灵活性,也就是说,开发人员需要提前估计其产品负载,例如当游戏中有大量玩家时, 当人群退缩时。 设置数据库需求方案后,请相应地手动调整容量。

越精细,该“弹性”就越接近“按需分配”。 为了最大程度地通过弹性伸缩来降低成本,有必要进行精细估算和自动分配,这对绝大多数开发人员构成了挑战。 从理论上讲,

-

精细预测要求用户的扩展和收缩应该对内存资源,CPU资源,IO资源,网络资源和其他资源做出全面的判断。 当用户访问请求增加时,数据库根据用户请求的特征使用不同的系统资源,这些资源需要动态响应,不会受到服务器的限制。 不同资源的缩放粒度需要小至一个数据块-CPU内核。 当前,常见云数据库实例的扩展和收缩相对广泛。 为了提高CPU性能,还必须扩展内存大小。

手动调节也是一个挑战。 一旦用户请求增加容量,就需要扩展容量。 但是,对于不可预测的业务场景,增加和减少是随机的。 预测越精确,膨胀和收缩就会越频繁。 如果能够实现细粒度的自动调节,则整体效率将大大提高。

扩展全文

腾讯云serverlessdb它的最大优点是,它可以实现自然,准确和灵活的扩展和收缩,而无需技术层面的人工干预。

无服务器DB架构图

上图是该数据库的技术架构。 在腾讯云serverlessdb架构中,客户端访问数据库通过代理层转发到数据库,并且可以缩小或扩展数据库。 腾讯云serverlessdb采用租户隔离扩展和连接池管理技术,从而在技术水平上实现真正的弹性扩展和收缩。

租户隔离技术

了解数据库应该知道PostgreSQL可以创建多个数据库,并且多个数据库之间的数据可以互相访问。 PostgreSQL的serverlessdb破坏了数据库之间的相互访问能力,并将单个数据库分离到一个实例中以提供外部服务,这类似于Oracle 12C中的PDB,但是腾讯云serverlessdb在技术层面的优化远不止于此。 。 当不同的用户共享一组数据库实例时,有必要确保用户访问不跨越边界,因此需要将用户隔离,这涉及到PostgreSQL内核的转换。 腾讯云serverlessdb在PostgreSQL内核中增加了租户的概念。 租户只能管理一个数据库,而其他数据库与普通数据库的使用没有区别,并且可以有多个用户。 这等效于用户拥有自己的命名空间集,并且每个租户都维护自己的元数据信息。 为了避免相互影响,系统表也被隔离,每个租户的信息被分开存储。

无服务器DB逻辑架构

是腾讯云serverlessdb的租户隔离。 从上图可以看出,该实例用作容器,其中数据库被分离为各个租户,并且每个租户处于隔离状态。 数据库实例负责公共操作,例如日志读写,配置文件读取,控制文件刷新等。承租人维护数据文件和临时文件,包括元数据信息,承租人类型和承租人的其他操作。 同一实例可以扩展多个租户数据库。

相当于传统的PostgreSQL实例曾经是一个大型别墅,有一个家庭的多个房间(数据库)。 无服务器改造后,将改造成占地100亩的大型公寓。 有许多房间供用户使用。

快速扩展和收缩能力

在租户隔离技术避免了不同租户之间的访问跨边界问题之后,serverlessdb如何确保对用户进行扩展和收缩的细粒度控制? 首先,serverlessdb将服务器计算资源分为三个区域:系统全局区域,数据库全局区域和资源池。 每个区域彼此隔离。

serverlessdb扩展和缩减原理

,其中系统全局区域的计算资源用于处理操作系统本身的任务; 数据库的全局区域负责数据库共享的任务,例如Autovault,滑动日志,存档日志等; 租户资源区负责其余租户类别的操作,例如根据租户打包工作过程,而一个租户仅占用一个资源区。

如果租户没有任何连接来访问数据库,则该租户将没有资源响应,并且资源池的计算资源也不会被占用。 当租户建立数据库连接时,管理和控制将自动为租户分配最小资源区域单位。 一旦用户对计算资源的访问达到资源区域单位的80%,后端控件将自动调整资源区域中可用计算资源的上限,以提高容量扩展的阈值。 此时,容量扩展是完全不可察觉的,并且资源响应也是实时的。 当用户的资源利用率低于20%时,租户资源区域将自动减少可用计算资源的上限,并将多余的计算资源重新分配到资源池中供其他租户调用。 这是CPU和内存的快速扩展。

连接池管理当前的实现形式带来了另一个问题:连接将添加一个进程,而多租户模式将导致服务器创建大量新进程来消耗租户的资源。 当多个租户的连接数增加时,服务器的资源将很快被破坏。 我该怎么办?

serverlessdb引入了连接池的概念。 当一个租户的多个连接访问连接池时,同一租户的连接通过连接绑定在一起以建立数据库连接,这确保了租户和数据库端之间只有一个连接,相当于n: 1。 通过租户之间的资源隔离技术将数据库侧建立的连接分开,避免了不同租户的影响,解决了连接池管理的问题。

因为是无状态的,所以即使在连接池的性能达到瓶颈后,用户也可以水平扩展容量并平衡请求的负载,从而避免了由于连接池的性能瓶颈而导致的整体服务不可用。 回到前面提到的示例中,当传统的PostgreSQL数据库是一个别墅时,每个来宾都需要为其提供一个单独的车库(会话过程)。 当游客人数增加时,停车位将不足。 装修后,新建了地下停车场(连通游泳池)。 每个租户都有一个电梯。 所有访问同一租户的访客都可以通过此电梯直接进入房间。 如果同一租户的访客数量激增到一台电梯不够用的程度,则将为租户专门建造一台电梯,以避免单个租户承受负荷太大的问题。

应用场景和实践

实际上,无服务器概念的核心价值在于快速部署和降低使用成本。 从这两种观点来看,serverlessdb的主要应用场景是小程序。 对于某些简单的应用程序,甚至不需要开发背景。 在

-

流行期间,各种平台都启动了自己的流行监测功能。 基于无服务器架构,可以快速实现流行病监测。 PostgreSQL数据库提供了丰富的插件扩展,例如具有招牌特征的PostGIS插件,它支持丰富的空间和地理数据,并可以根据人群的位置自动避开危险区域。

serverless只是产品形式和用途的改变,数据库本身的功能没有改变。 在使用此数据库的过程中,用户将数据库的基础功能用作无服务器服务,而无需关心基础数据库的操作和维护。 今天的

福利

认识大人物

CSDN为技术人员创建的新的高端对话专栏“大人物来了”!

CSDN创始人兼极客帮助风险投资公司董事长兼董事长姜涛,与京东集团技术副总裁,IEEE Fellow,京东人工智能研究所执行副总裁,深度学习与演讲负责人 语言实验室何晓东,来到中国首席技术官胡义川,探讨了中国AI应用第一年中开发商和企业的发展道路和发展方向!