Apache ShardingSphere权威指南
上QQ阅读APP看书,第一时间看更新

2.2.2 改变云原生数据库开发路径的数据库网格

为降低边车的部署和管理开销,一种不错的方式是使用Kubernetes。Kubernetes可将负载均衡器和应用镜像放在Pod中或使用DaemonSet,以简化部署过程。Pod开始运行后,可将边车视为操作系统不可分割的部分,而应用将通过本地主机(localhost)来访问数据库。

对应用来说,总是有一个容量有限但永远不会崩溃的数据库。Kubernetes早已成为云原生操作系统的事实标准,因此在云领域,使用Kubernetes在云端部署边车是绝对可以接受的。而面向服务的云原生可编程流量与服务网格一起,彻底改变了服务云市场。

当前,云原生数据库的重心依然是云原生数据存储,它没有像服务网格这样让人能够通过网络平稳地交付适配器。基于边车模式的数据库网格由Kubernetes和智能SQL负载均衡器组成,它无疑将给云原生数据库带来巨大的影响,同时能够更好地分析SQL。

数据库网格的3个核心组件是负载均衡层、可编程流量和云原生。图2.3展示了数据库网格的架构。

图2.3 数据库网格的架构

可以看到,控制平面管理着负载均衡层、计算层和存储层,它还可能管理着所有的数据库流量。控制平面包含注册中心和管理控制台。注册中心用于服务发现的分布式协调、存储元数据(例如标签定义以及计算节点和存储节点的映射信息)以及存储集群中各个组件的操作状态。在管理控制台中,节点管理和可观察性是云原生分布式数据库的关键功能,它们通过云管理和遥测(telemetry)技术管理整个集群的资源。除资源控制外,管理控制台还让SQL命令能够操作集群配置。用于控制分布式集群的SQL不同于用于操作数据库的SQL,因此我们定义了一种新的SQL——分布式SQL(distributed SQL,DistSQL),用于管理分布式集群。

DistSQL是一种辅助SQL,它还与一些必要的功能(如流量管理和可观察性)一起对标签进行管理(例如定义标签、修改计算节点和存储节点之间的匹配关系等),以改变集群流量的方向。DistSQL强大且灵活,让控制平面能够通过编程动态地修改整个集群的流量控制和路由器。DistSQL很像服务网格的数据平面,但数据库网格位于不同的层。服务网格依赖的是网络流量,无须明白SQL语义,而数据库网格添加了云原生数据库流量控制。

实际上,数据库网格的数据平面就是能够理解SQL的负载均衡层,因为它接收控制平面发送的命令,并执行如限流、熔断和基于标签的路由等操作。

数据库网格能够将不同的环境完全隔离,让运维人员只需将数据平面的网络配置改为分布式数据库的网络配置,再通过修改使其适合开发环境、测试环境或生产环境;开发人员只需开发面向本地主机的数据库服务,而根本不用考虑与分布式数据库相关的问题。基于数据库网格提供的云原生服务功能,开发人员可完全忽略具体的数据库网络地址,这极大地提高了他们的工作效率。