写点什么

自主研发数据库 TDSQL 和 TBase 核心架构揭秘和实践

发布于: 2021 年 09 月 08 日

上述讲到的水平扩展的分布式数据库架构,我们把数据分配多个分片,然后通过强大的 SQL 引擎来做相应的分发,并且做基层的下推,将数据下推到各个节点去做相应的数据运算,最后汇聚数据,来为用户提供可平滑扩展的分布式数据库架构


在计算存储分离的分布式数据库架构。我们认为,改变用户的已有使用习惯是很难的,但是培养一个新习惯也许还可行。因此,在某些传统的商业数据库模式下,改变用户使用 Oracle 的模式会有相应的阻力。但是,对于传统的 Oracle 它还是一种 Share 的模式,所以我们布局了这种分布式数据库的架构,将计算跟存储分离,区别在于它是一种日志级的数据库。


我们在上层、在交换机的三个节点是纯计算节点,这些计算节点可以完全兼容 MySQL 或者 Postgre 的协议,然后数据的日志通过网络交换机下发到底层的 DB 节点,让底层的存储节点来感知日志,再把日志逐步的回放。


这种架构的优势是存储层面可以水平扩展,当用户拉起一个读取节点的时候,可以瞬间启动一个读取节点,不用做相应的数据重放。另一个优势是它不像 Oracle 模式整页刷新,也不依赖于 IP 交换机的模式,而是只在交换机层面去传输日志,所以基本上一个传统的万众交换机就能满足这种业务场景。因此,在整体的成本或性能上都是一种非常有性价比的技术架构


除了技术架构的优势,再来分享一下腾讯云数据库在用户功能层面(产品化层面)的一些设计理念。我们认为一款优秀的数据库应该遵循 5 个特点:


1、数据强一致


腾讯云是基于主从架构的“并行多线程强同步复制方案”,以保证数据的强一致,整体上可以保证主从节点这种默认强度的模式下,性能还不亚于原生的异构同步。TDSQL 真正跑起来之后比原生的异构同步的性能还要高,其实就是要靠这种强同步的逻辑,再加上多线程的同步方案做一定的改造。


2、金融级高可用


腾讯云提供了跨机房容灾、跨地域容灾等多种模式来保证整个金融级别的高可用。在系列功能上,我们提供了多达 384 项监控指标、进程保护机制、系统免切机制、毫秒级切换机制等,通过 SQL-Engine 的路由,保证一个整体毫秒级的切换,提供 6 个 9 以上的金融级别的高可用。


3、高安全性


**安全性分为事前、事中、事后三个维度:**事前是指在攻击发生之前,采取某些措施保证数据库不被黑客所攻击。腾讯云提供了传输层加密、数据层加密、权限细粒度鉴权等事前的监控策略。


事中是指真正攻击已经发起,我们需要采取一些保护策略。首先,腾讯云有内核级的安全策略、内置的 SQL 防火墙,我们可以配置那些安全性非常差的 SQL 命令,收到这条 SQL 命令之后,直接阻塞攻击,这也是一种内置防火墙的机制。其次是防误操作机制,比如像 delete 全表或者 join 表结构等命令,都会被系统默认过滤掉,不会真正下发到命令解析器做出相应操作。


事后是指上述操作已经被执行之后,整个产品体系有一套标准的溯源功能。腾讯云的事后安全审计策略,一方面是有全部的运维操作审计、数据库层面的审计,在不耗费性能情况下,能够将全部的数据库操作记录下来,包括读操作(比如某些数据被拖走时,我们可以查到哪个 IP、在什么时间点、用什么账号、采用什么模式、拿走了哪些数据,以尽量减少数据损失)。另外还有服务器审计、超级权限控制等。


4、良好的扩展性


扩展性分为两类,一类是资源层面的扩展,一类是功能层面的扩展。


资源层面的扩展,腾讯云提供两种模式。从集中式的实例可以一键扩展到分布式实例,然后分布式实例也可以自动挂载多个分片来加分片,自动的做数据重分布、平滑的数据迁移。用户可以在刚开始使用时选择较低的配置,然后随着业务的爆发,可以直接多加分片,并且整个的操作过程是全部平滑的,对于性能的损失基本都为零。


功能层面的扩展,比如热点更新的扩展,支持更大存储的引擎(RocksDB),产品中支持这种写量超大、数据量超大的场景,以及适配于物联网的传感器数据。另外还提供了像 JSON、线程池等扩展。


5、便捷的运维


便捷的运维性也有两个维度,首先我们要把运维系统做的足够便捷,其次还要基于 AI、数据模型的算法,提供更优化的数据库工具,来为用户提供更加便利的功能。


运维系统方面,腾讯云为业务方提供云数据库管理系统,通过租户视角,使用者在一键化的控制台上做相应的实例申请与退还、系统监控、备份与恢复、性能优化等。同时为运维方提供运营平台,从管理员的角度,提供 TDSQL 的全部运维功能,可管理 TDSQL 集群的物理资源、调度决策系统、备份与恢复系统、可用区管理、实例管理等。


运维工具方面,腾讯云为用户提供了一套智能管家运维服务,叫 DBbrain。可以支持多种数据库实例,包括 MySQL、Redis、MongoDB 等,通过采集它们的监控数据,然后去做相应的审计日志的上传与抽取,包括 MySQL 数据分析;然后基于这些整体数据,再做数据的计算跟加工,基于现在数据性能的点、数据库的日志、MySQL 整体等推算出全盘的审计数据,直接做实例的诊断,告诉用户在哪个时间点、哪些 SQL 语句、哪些调用导致了数据库性能在什么时间点、出现了什么异常。


同时我们还在做微信端的打通,用户未来在自己的微信公众号或者微信小程序上,就可以实时的操作数据库,脱离电脑的束缚,实时通过微信小程序对数据库做相应的操作和运维。

用户头像

还未添加个人签名 2018.12.08 加入

还未添加个人简介

评论

发布
暂无评论
自主研发数据库TDSQL和TBase核心架构揭秘和实践