暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

KunlunBase Serverless简介

Serverless概述


Serverless是云服务的新型形态,它具有一系列技术优势,比如免除用户安装、升级数据库集群,以及省去大多数运维工作。因此,Serverless正在快速普及成为包括数据库系统在内的基础软件服务的基本形式。



KunlunBase Serverless概述


KunlunBase 已经在AWS的DBaaS 服务就是Serverless模式运行的,我们称之为KunlunBase Serverless,用户已经可以在AWS Marketplace购买。在2022年我们与亚马逊云科技(Amazon Web Service, AWS) 探讨合作时,他们积极建议和鼓励我们以Serverless的形式提供云服务。我们考虑到Serverless确实是云计算的新模式,在PaaS等场景下已经有非常广泛的应用,其用户价值也适用于DBaaS,例如可以可以大幅降低用户的管理和运维成本,提升用户效率,用户只需要在AWS的KunlunBase Serverless服务购买页面使用GUI购买后,即可使用KunlunBase 做数据存储和事务处理,不需要安装、升级KunlunBase集群、也不需要日常的数据库运维工作。因此决定实现在AWS 实现KunlunBase Serverless,在此过程中我们也得到了AWS技术团队的积极配合,合作过程非常高效。

KunlunBase Serverless基于KunlunBase,在KunlunBase分布式数据库基础上增加了租户管理,数据隔离,以及为计费而增加的使用量统计等功能,并且限制了多租户场景下集群管理的部分功能,确保这些功能不暴露给租户,只有我们作为服务提供商才能使用。

我们使用AWS的EC2节点和EBS存储服务部署了一个KunlunBase分布式数据库集群,用它为多个租户提供KunlunBase Serverless服务。我们泽拓科技负责运维我们部署在AWS的KunlunBase集群,用户完全不需要安装、运维KunlunBase集群。在运行期间我们只要按需增加更多的EC2节点和EBS存储空间,就可以提供更多的存储和计算能力给当前租户和更多的新租户。


每个租户使用其私有账户和密码连接到KunlunBase Serverless,并读写其数据。任何租户无法访问其他租户的数据,也不知道集群当前有哪些租户在使用。

我们根据每个租户存储的数据量,以及使用的计算资源数量来设计计费规则。AWS按照我们设计的计费规则实现KunlunBase Serverless计费模块,并且安装到其计费系统运行。AWS的计费系统定期计费和并把费用从用户账户转给我们的账户。

基于KunlunBase分布式数据库的现有能力,构建Serverless模式的DBaaS的复杂度相对可控,主要涉及一下一些方面的工作。这也是本文的主要内容。



KunlunBase Serverless版本适合的场景


A. SaaS场景:相同的业务逻辑,不同的用户规模,不同用户的业务规模增长速度也不同
B. 统一的数据平台:大公司内数据平台部门,提供类似私有云的DBaaS给公司各部门或者各个产品、服务条线使用
C. 公有云DBaaS服务商



KunlunBase Serverless的实现


数据隔离

数据隔离对于多租户模式的DBaaS来说是至关重要的,系统必须确保任何一个租户无法访问其他租户的数据,甚至无法看到其他租户有哪些database, schema, table等数据库对象 --- 这些对象的存在性和名称对其他租户都必须是不可知的。

我们利用KunlunBase的database的隔离能力,来实现不同租户的数据隔离。KunlunBase Serverless的每个租户可以连接到其专属的database,执行DDL和DML语句。租户可以在其database内创建schema实现数据的逻辑分割。但是租户不可以使用DML语句读写系统catalog中的元数据表。
与MySQL不同,一个客户端连接到一个database后,无法通过USE 命令或者mysql_select_db()切换到其他database。同时,租户无法连接到其他租户的database,KunlunBase通过权限设置确保这一点。KunlunBase Serverless的业务逻辑为每个租户创建其在KunlunBase集群的专属账户,并配置适当的权限,详见下文。


用户账户

每个租户需要使用专属用户账户来使用KunlunBase Serverless,这样才能实现访问控制和其他高级管控功能。

当用户通过AWS market place的DBaaS 购买界面买到一个KunlunBase Serverless 后,购买流程中的内置逻辑会使用用户提供的数据库连接用户名和密码,在KunlunBase集群创建该用户的账户。每个账户配置的权限禁止它连接或者访问其他租户的database,不能创建账户和database,非超级用户,也不能继承或修改权限。这个账户是这个租户的主账户,他可以使用此账户创建更多的子账户,用于其内部的权限控制。还可以在其database中为其不同业务创建多个schema,分配给不同的子账户,分别给各个业务使用。所有这些子账户都只能连接此租户的database,并且KunlunBase的管控模块会合并他们对计算资源的使用量,以便AWS计费系统统一为此租户计费。


租户集群管控

我们扩展了KunlunBase的XPanel 集群管控系统成为XPanel Serverless,让它为每个KunlunBase Serverless的租户提供独立的和有限的管控功能。相比于on premise部署的KunlunBase集群,诸多集群管控功能不适用于KunlunBase Serverless的租户,包括扩缩容,增加/删除集群节点和存储shard,集群物理备份和恢复,全集群的逻辑备份和恢复,多可用区(多机房)高可用,同城/异地集群双活等功能不再适用。仅有database, schema, table级别的逻辑备份恢复、online DDL&repartition,CDC等功能继续有效,并且租户使用CDC功能只能导出租户自己的database的数据更新事件流。每个租户使用其用户名密码登录XPanel Serverless,且只能访问和操作该租户所拥有的database以及其中的schema和table,存储过程等。


后台集群管控

我司作为KunlunBase Serverless的技术服务方,负责KunlunBase 集群的管控,包括扩缩容,增加/删除集群节点和存储shard,集群物理备份和恢复,全集群的逻辑备份恢复,多可用区(多机房)的高可用,同城/异地集群双活等功能。我们通过XPanel使用管理员账号登录集群完成这些功能。


日志访问控制

KunlunBase支持使用ElasticSearch收集集群所有节点的日志,出于数据安全的考虑,这些日志只有我司技术支持人员在后台集群管控界面可以访问全部日志,租户无法访问其他租户的操作产生的日志。租户只能访问其database对应的接口SQL日志(即计算节点发给存储节点的SQL语句),存储节点的慢查询日志,以及计算节点中的慢查询日志和SQL日志。


资源隔离

目前KunlunBase Serverless 以尽力服务(best effort)的方式为用户提供服务,也就是使用集群可以使用到的所有计算资源来执行来自每一个连接客户端的每一个SQL语句,并没有做资源隔离。从用户角度看,没有资源隔离的KunlunBase Serverless 是非常划算的。我们对用户唯一的限制是连接数量,这个参数是在用户购买KunlunBase Serverless服务时提供的,并且这个参数也会作为计费的基础参数之一被使用在计费规则中。

在Serverless模式下,传统使用cgroup做资源隔离的做法不再合适,因为KunlunBase任何一个存储节点的进程/线程可能在服务任何一个租户,与租户没有1对1的对应关系。因此,如果要针对租户做资源隔离,就要统计租户的资源消耗并做资源调度,这些工作本身也会消耗可观的CPU和内存资源。所以,目前我们还没有做这方面的工作,以后会适时完成。


数据库系统性能和效率对DBaaS Serverless的作用

对于Serverless形式的DBaaS来说,数据库系统的性能和效率对于服务提供商来说至关重要,因为效率和性能越高,那么DBaaS服务商的成本越低。
KunlunBase 分布式数据库优秀的性能对于KunlunBase Serverless尤其有用,因为这可以降低我们的服务成本 --- 更少的机器投入就可以提供更高的QPS。我们会持续改进KunlunBase的性能,来降低KunlunBase Serverless的服务成本。



用分布式数据库做Serverless DBaas的优势


使用分布式数据库做Serverless 形式的DBaaS有如下优势:


1. 统一管理

针对一个集群做统一的数据库管理、监控、运维、升级,DBA的工作量远小于操作数百套独立的小集群,并且DBaaS用户不需要做维护和升级。维护和升级对租户是透明的,租户不会感知到。


2. 用巨大的资源池削峰平谷

KunlunBase Serverless一万个租户共用数百台服务器,这个硬件资源池可以为所有用户削峰平谷,时刻保障硬件资源利用率较高,并且随时按需增加更多硬件资源。

与之相对的是当前主流云厂商的做法:使用若干个虚拟机组成一个专属于一个客户的集群,在每一个虚拟机里面安装一个独立的数据库实例。与此传统方法相比,一个大集群做Serverless DBaaS 可以实现更好的性能,并且降低虚拟机本身带来的性能开销,可以大幅提升硬件资源的利用效率。

与现在云数据库常见的需要提前数小时到数天预约DBaaS存储和计算资源扩容不同,KunlunBase Serverless租户不需要提前预约扩容,个别租户的业务负载临时增加,KunlunBase都可以承载,这个能力得益于KunlunBase Serverless自身较大的资源池预留资源数量(预留当前所有租户所需的资源总量的20%),同时也得益于KunlunBase 灵活的弹性伸缩和随时按需增减计算或者存储节点的能力。


3. 资源隔离与否?

KunlunBase Serverless目前不做资源隔离,而是通过按使用量计费,让资源消耗高的用户多付费,然后用此费用增加硬件资源来服务更多其他客户。资源隔离本身也会消耗计算资源,因此我们认为与其限制用户使用资源,更应该让用户充分利用计算资源服务其业务,为客户的终端用户提供流畅顺滑的用户体验。

同时,我们作为DBaaS服务提供商,我们能够即使发现这种资源吃紧的情况,从而迅速提供更多计算资源来服务更多用户请求。由于按量计费,所以这样做对双方都是有利的。



DBaas和Serverless对DBA职业发展的影响


未来Serverless的数据库服务对中小用户还是很有吸引力的,因为Serverless模式大大简化了数据库运维管理工作,用户的DBA的工作负担大幅降低,可以专注于查询性能优化,Serverless服务状态监控,设计和定义数据安全和访问控制机制以及数据有效性验证机制等工作。用户的数据库使用成本也会相应大幅降低。



总结


KunlunBase Serverless是我们基于自己在数据库领域的研发和应用经验以及对DBaaS和Serverless思想的理解而设计的。KunlunBase Serverless上线AWS 之后,我们会持续总结经验和教训,持续迭代和改进KunlunBase Serverless,并且适时与业界同行们分享。

请大家持续关注KunlunBase,访问www.kunlunbase.com获取相关资源和信息。










现在,我们发起一轮新的投票,希望就以下问题请教大家,收集大家的反馈。为了感谢您的参与,所有参与问卷调查并留下邮箱联系方式的,由于我们的问卷系统不支持在线抽奖,我们将在后续会统一随机抽取 15 名有效填写者作为幸运参与者,送精美纪念礼品一份,感谢大家参加。
👆扫码填写

END

同时欢迎大家扫码👇添加小助手(备注:加入KunlunBase技术交流群)欢迎大家在交流群共同探讨更多问题及主题。

 点击👆上方,关注获取源代码及技术信息~

文章转载自KunlunBase 昆仑数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论