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

805bee17fef9d397cdcf984b360d3196.gif

0e91594c04f6e4ec735520d605168e7d.png

头图 | CSDN 下载自东方 IC本文为企业投稿

省却成本,缩短产品上市时间,减少运维与开发团队之间的摩擦是 Serverless 最核心的所在,从 AWS 发布「Lambda」让「Serverless」越来越多地为开发者所知到今天,已经过去了 6 年的时光,Serverless 也正当时地引起了非常多的企业及开发团队的青睐与跟进。

不久前,腾讯云发布了国内第一款 Serverless 数据库 —— PostgreSQL for Serverless(ServerlessDB),在业界受到众多数据库开发者的广泛关注,它基于 PostgreSQL 数据库实现按需分配资源,能够做到安全隔离、弹性扩容、按需付费、原生 SQL 支持。在本文中,腾讯云 ServerlessDB 产品负责人从租户隔离技术、快速扩缩容能力、连接池管理等方面,详细解密这款数据库背后的设计细节,希望能够为所有开发者带来启发。

d78e15f2f80e541a7dd4a55331117433.png

如何实现真正的自动扩缩容?

相比较于传统数据库,云数据库的弹性扩缩容和按量计费能够帮助用户按需使用云资源,避免资源浪费的同时大幅节省了成本。在系统实现原理上,目前云数据库提供的这类“弹性方案”本质上是一种策略上的弹性,即开发者需要先行预估自己的产品负载量,例如一款游戏什么阶段玩家特别多,什么时候人潮回落,在设定好数据库需求的方案后,对应进行手动的容量调整。

预估得越精细,这种“弹性”就越接近“按需分配”。要想通过弹性扩缩容最大限度降低成本,就需要做到精细化的预估和自动分配,这对绝大多数开发者提出了挑战。

精细化预估理论上要求用户的扩缩容对内存资源、CPU 资源、IO 资源、网络资源等各种资源做全位一体的判断。当用户访问请求上涨时,数据库针对用户请求的特点使用不同的系统资源,而这些资源需要动态的响应,且不会受到服务器限制。不同资源的扩缩容粒度需要小到一个数据块——CPU 核心。当前普通的云数据库实例扩缩容相对粗放,若要提升 CPU 性能,顺带还必须扩展内存大小。

手动调控也是一个挑战,一旦用户请求上涨,则需要扩容,但是对于不可预估的业务场景来说,上涨和降低是随机的,越是精细的预判越会导致频繁的扩缩容,而如能实现细粒度的自动调控,会大大提升整体效率。

腾讯云 ServerlessDB 的推出就完全克服了目前的挑战,其最大优势就是在技术层面上可以实现天然、精确、不需要人为干预的弹性扩缩容。

f9f37eb5f390bd4978adc4eb82b392ca.pngServerless DB 架构图

上图是这款数据库的技术架构,在腾讯云 ServerlessDB 架构中,客户端访问数据库是通过 Proxy 层进行转发至数据库中的,且数据库可以缩容,也可以进行扩容。腾讯云 ServerlessDB 采用租户隔离扩缩容以及连接池管理技术,从而实现了技术层面上真正的弹性扩缩容。

a4063cd008d76085135104a5064e1a31.png

租户隔离技术

了解数据库的应该知道,PostgreSQL 可以创建多个数据库 Database,多个数据库之间的数据是可以互相访问的。而 PostgreSQL 的 Serverless 化破除了数据库之间可以互相访问的能力,将单个数据库摘出来独立成为一个实例对外提供服务,这与 Oracle 12C 里面的 PDB 类似,但是腾讯云 ServerlessDB 在技术层面的优化远不止于此。

不同用户共享一组数据库实例时要保证用户访问不会出现越界的情况,所以需要对用户进行隔离这就涉及到对 PostgreSQL 内核进行改造。腾讯云 ServerlessDB 在 PostgreSQL 内核中加入了租户的概念,一个租户除了只能管理一个数据库外,其他的和正常数据库使用没有区别,一样可以拥有多个用户。相当于一个用户拥有自己的一套命名空间,每一个租户维护自己的元数据信息。为了避免互相影响,系统表也进行了隔离,每个租户的信息进行单独存放。

a64e4f408bef80210299365a673376e2.pngServerless DB 逻辑架构

这就是腾讯云 ServerlessDB 的租户隔离,可以通过上图看到,将实例作为一个容器,其中将数据库独立成一个个单独的租户,每个租户之间都是隔离状态。数据库实例负责公共操作,比如日志读写、配置文件读取、控制文件刷新等,租户维护数据文件以及临时文件,其中包括本租户的元数据信息、租户类型等操作,同实例可以扩展多个租户数据库。

这就相当于传统 PostgreSQL 实例以前是一栋大别墅,里面有多个房间(database)供一家人使用。那么 Serverless 化后,改建为一座占地 100 亩的大公寓,里面有很多房间供用户使用。

ca442613d2db5ac5596aa2628e3e3d57.png

快速扩缩容能力

在租户隔离技术避免了不同租户之间的访问越界问题后,在扩缩容方面,ServerlessDB 是如何保证对用户进行细粒度控制的呢?

首先 ServerlessDB 将服务器计算资源分为 3 个区域,分别是系统全局区、数据库全局区和资源池,每个区域都是互相隔离的。

193c65d68be8583f9fc5932d8ce21835.pngServerlessDB 扩缩容原理

其中系统全局区的计算资源用于处理操作系统本身的任务;数据库全局区负责处理数据库共享的任务,如 autovacuum,刷日志,归档日志等;租户资源区负责剩余的租户类的操作,如工作进程都按照租户打包,一个租户只占用一个资源区。

若租户没有任何连接访问数据库,对于该租户就没有任何资源响应,也就不会占用资源池的计算资源。当租户建立了数据库连接后,管控就会自动给该租户分配一个最小资源区单元。一旦该用户对计算资源访问达到了此资源区单元的 80%,后端管控将自动调整资源区的可使用的计算资源上限,以提高扩容的阈值,此时的扩容是完全无感知的,资源响应也是实时的。当用户对资源利用率低于 20%的时候,租户资源区将自动降低其可以使用的计算资源上限,空余出来的计算资源将重新流通到资源池当中,供其他租户调用。这就是计算资源实现 CPU 和内存的快速伸缩。

83093e049ed6a25ceb74e7952e5f8deb.png

连接池管理

当前这种实现形式带来了另外一个问题:一个连接会新增一个进程,而多租户模式会导致服务器新建大量进程来消耗掉租户的资源,多个租户的连接数提升时很快会把服务器资源打爆,怎么办呢?

ServerlessDB 引入了连接池概念,当一个租户的多个连接访问到连接池后,将同一租户的连接通过一个连接捆在一起建立起数据库的连接,这样就保证了一个租户到数据库侧只有一个连接,相当于 N:1。在数据库侧建立的连接均通过租户间的资源隔离技术将其分离,避免不同租户产生影响,这样就解决了连接池管理的问题。

因为其是无状态的,即使连接池性能达到了瓶颈之后,用户也可以横向扩容,将请求进行负载均衡,这样可以避免因为连接池性能瓶颈导致整体的服务不可用。

回到刚刚举的例子,传统 PostgreSQL 数据库是一座别墅时,每来一个客人都需要单独提供一个车库(会话进程)给他们,访客增多时会出现车位不够用的问题。改建成公寓后专门修建了一个地下停车场(连接池),每一个租户有一个独门独户的电梯,所有访问同一个租户的访客,都可以通过这一座电梯直达房间。如果访问同一个租户的访客数量激增到一个电梯不够用,就会为其专修一座电梯来避免单租户的访问量太大而无法负载的问题。

351620d86d8afdfc3322350d94af934e.png

应用场景与实践

其实,Serverless 概念的核心价值在于快速部署和降低使用成本。从这两点来看,ServerlessDB 最主要应用场景就是小程序,对于一些简单应用,甚至连后台都无需开发。

疫情期间,各大平台纷纷推出了自己的疫情监控功能,基于 Serverless 架构可以快速实现疫情监控。PostgreSQL 数据库提供丰富的插件扩展,比如招牌特色的 PostGIS 插件,支持丰富的空间地理类型据,可以根据人群定位,自动避开风险区域。

Serverless 只是产品形态与使用上的改变,数据库本身的功能没有发生变化。用户在使用这款数据库的过程中,把数据库的底层能力当作了一个 Serverless 化的服务来进行使用,无需关心数据库底层的运维等操作。

【END】

1cc54eb76b77903206768770dc83ab3e.png

497bbe2e30ed138e0f1f9547e9302f34.png

今日福利

遇见大咖

由 CSDN 全新专为技术人打造的高端对话栏目《大咖来了》来啦!

CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛携手京东集团技术副总裁、IEEE Fellow、京东人工智能研究院常务副院长、深度学习及语音和语言实验室负责人何晓冬,来也科技 CTO 胡一川,共话中国 AI 应用元年来了,开发者及企业的路径及发展方向!

,直达报名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

丰富自己, 比取悦他人更有力量

如果有那么一天,你不再记得,我也不再记得,时光一定会代替我们记得。丰富自己, 比取悦他人更有力量!下面给大家推荐几个优秀公众号它们每天更新有态度、有干货的原创文字坚持看一段时间 颜值和人生都不一样了【关注方式…

WPF Grid动态显示或隐藏一列的一种方法

项目中有一个需求,需要根据用户的设置动态显示一列,研究了一波后,发现,Grid并没有这个功能,于是通过绑定宽度 的方法,实现的需求。。思路:将需要隐藏的列宽度 绑定到一个属性上,隐藏…

.Net Core with 微服务 - Seq 日志聚合

上一次我们介绍并演示了如果使用 Consul 做为我们微服务的注册中心,来实现服务的注册与发现。那么本次我们讲会演示如何做日志聚合。日志聚合比较常用的有 ELK 等,但是这次我想要介绍的是一款比较小众的日志聚合工具 - Seq 。日志聚合日志是我们写程序离…

苹果白屏一直显示苹果_最新消息显示:苹果还要发新品

距离2020年结束已经进入了倒计时阶段,但最新消息显示苹果可能还会在这个最后的时间节点上召开一场新品发布会。今日,有外媒援引一份苹果内部备忘录报道,称苹果通过内部备忘录向服务提供商发送通知,计划在美国太平洋标准时间 12月8…

“探月计划”来袭,美国米德天文望远镜助孩子观月赏月

▲数据汪特别推荐点击上图进入玩酷屋孩子对于未知的世界充满了好奇,尤其是对于月亮,总是有问不完的问题。例如月亮上是怎么样的?怎么很多人说十五的月亮十六圆?月亮有动物吗?不是说有月兔吗?月亮怎么有时是…

为什么async/await方法不能有lock或Monitor

相信有不少朋友知道async/await有lock语法的情况一般都会编译错误,这个时候可以通过Monitor来解决编译错误的问题;虽然这样解决的编译错误但本质问题还是没有解决。其实并不是async/await方法不能用lock或Monitor,而是在lock或Monitor的作用域…

每日一笑 | 程序员和产品经理打架了,怎么办?

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)

新建项目EasyUiAutotest,安装Appium-Python-Client

一、前置说明 Appium-Python-Client 是 Appium 的 Python 客户端库,它提供了一系列的类和方法,用于与 Appium 服务器进行通信,并执行各种移动应用测试操作,包括启动应用、模拟用户输入、点击等操作。 二、操作步骤 1. 启动Pych…

VS Code + ML.NET 玩转交互式机器学习

在上一篇文章中,我们介绍了 .NET Interactive Notbook,可以进行代码实时运行和交互式展示。这对于ML.NET来说非常棒,可以运用到许多场景,比如数据探索、绘制数据图表、编制教学课件等。下面,我们就用出租车费预测&…

ts定义数组类型_ts基本数据类型

typescript基础数据类型布尔值 示例代码最基本的数据类型就是简单的true/false值,在JavaScript和TypeScript里叫做boolean(其它语言中也一样)。let a: boolean trueconsole.log(a)let b: boolean falseconsole.log(b)let c: booleanconsole.log(c)执行结果truefal…

神还原女神照片!GAN为百年旧照上色

全世界只有3.14 % 的人关注了数据与算法之美如何把女神的黑白照片变成彩照?今日,数据汪发现新加坡 GovTech 数据科学与人工智能部门在 Medium 上介绍了一个为百年旧照上色的项目。这个项目名为 Colourise.sg,最初是该团队(成员包括…

cacti+nagios 整合遇到的问题

cacti安装成功了,下载一个npc插件来套用nagios,nagios要用ndoutils和cacti连接。主要安装ndoutils出现的问题。启动ndoutils时出错:/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg错误提示:Support for th…

谈谈MySQL面试的45个常见问题

前两天,我跟一个面试官聊天,发现一个普遍想象,不少候选人,对数据库的认知,还处在比较基础的阶段,以为会写“增删改查”、做表关联就足够了,那些工作中经常出现的问题,却支支吾吾答不…

TensorFlow的这些骚操作你都知道吗?

TensorFlow Lite 2019 年发展蓝图分为四个关键部分:易用性、性能、优化和可移植性。自 2015 年 11 月 9 号发布之后,TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。那么TensorFlow框架到底是什么?TensorFlow 是一个大规模机器学…

实现图片打乱_疫情过后,是否打乱了你前进的脚步?面对现状,你将如何开展新的征程?...

2020年的这个春节,一场疫情打乱了所有的计划。就在整个城市都躲起来的时候,有一群人却站了出来。他们背对着我们,却直面着生死,他们每一刻都在与时间赛跑,与死神抢人。他们是值得我们尊敬的人,是最敬爱的人…

SystemCenter2012SP1实践(23)私有云的权限设计

SCVMM和SCAC作为微软私有云的两个重要入口,由于私有云的资源是多部门公用的,为了防止权限扩大导致资源浪费和误操作的可能性,我们在企业中部署的时候,需要认真的规划好用户和相应级别管理员的权限设置。我是分隔线本文主要介绍身份…

面向.NET开发人员的Dapr——参考应用程序

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门Dapr reference applicationDapr 参考应用Earlier in the book, youve learned about the foundational benefits of D…

数据集转换_为什么LSTM看起来那么复杂,以及如何避免时序数据的处理差异和混乱...

LSTM(long short term memory,长短期记忆网络)是预测时间序列最常用的神经网络模型之一。但是这种神经网络模型相当复杂,需要特定的结构、数据前期处理等操作。当在网上搜寻要学习的代码时,很难将另一个程序员的代码合…

一直被模仿,从未被超越的经典订阅号!

不管你昨天有多优秀,代表不了今天的辉煌,昨天的太阳永远晒不干今天的衣裳,以阳光心态迎接每一天。今天小编就给大家推荐几个越来越优秀的微信公众号希望把快乐和成长带给您长按二维码,选择【识别图中二维码】关注日读好书ID&#…

面向.NET开发人员的Dapr——总结和前景

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…