双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

开源二三事|ShardingSphere 与 Database Mesh 之间不得不说的那些事

SphereEx SphereEx 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

背景

前段时间,以 Apache ShardingSphere 核心团队组建的创业公司 SphereEx,正式对外推出了 Database Mesh 2.0 概念以及与之相配套的开源产品 Pisanix,这引发了社区间对于 ShardingSphere 和 Database Mesh 的不少争论与思考。许多用户都很清楚,SphereEx 是由 Apache ShardingSphere 核心团队创立的。

那么有部分用户就提出了疑问,既然已经有了 Apache ShardingSphere 这样一个如此成功的开源项目,为何还要大费周章选择在一个全新的领域从头开始?在云原生趋势的影响下,未来 ShardingSphere 会不会逐渐被并入到 Database Mesh 的理念体系中?

随着 SphereEx 推出 Database Mesh 2.0 概念,并开辟了另一条开源发展路线,看似与此前已经大获成功的 ShardingSphere 产生了冲突,但实际上,两者是“同气连枝、相辅相成”的关系。本篇将主要针对 ShardingSphere 社区用户对于 Database Mesh 概念以及未来发展方向做出整体阐述,带领大家从头梳理 Apache ShardingSphere 的指导理念 Database Plus,以及与 Database Mesh 理念之间的脉络联系。

一、从微服务治理到云原生数据库服务治理,变在了哪?

相比于微服务,云原生下的数据库治理在功能选择上会有不同的侧重。

首先,数据库是有状态的,请求无法像服务一样被随意路由到对等节点,因此对于数据库而言,数据分片是一个重要的能力;另外,由于数据库连接本身具有状态性,启动或停止一个新的数据库实例,往往意味着数据同步和复制,因此相较于微服务,实例自动发现能力的重要性就会降低。

如果将数据库看作为一个微服务,虽然可以通过 Service Mesh 对数据库访问进行治理,但却会受到许多限制。同时,数据库拥有一些特殊治理属性,比如通信协议、资源管理、基于数据请求的负载均衡、分库分表、还有可观测性、访问控制等。这些都不能简单地以服务的概念来理解和解决,而是属于数据库可靠性工程领域的问题。

这就为 Database Mesh 的发展提供了空间。SphereEx 提出的 Database Mesh 2.0 概念更关注在云原生环境下,如何实现以下几个目标:

  • 进一步减轻开发人员的心智负担,提高开发效率,提供透明和无感的数据库基础设施使用体验;

  • 以可配置、可插拔、可编程的方式,实现一个覆盖数据库流量、运行时资源和稳定性保障等方面的治理框架;

  • 为异构数据源、云原生数据库、分布式数据库等多个数据库领域的典型场景提供标准的使用界面。

提供数据分片、负载均衡、可观测性、审计等能力,这些能力已经解决了数据库治理中属于流量治理的部分问题。更近一步地,当业务应用开始以容器的方式进行打包交付、利用 CI/CD 流水线每天发布成百上千次到各个数据中心的 Kubernetes 基础设施的时候,引发了对云环境下如何实现数据库可靠性工程的思考,Database Mesh 2.0 就是在这种思考之下的产物。

二、ShardingSphere 的指导理念 Database Plus,与 Database Mesh 之间的不同

首先,理念不同

其实,只看理论和概念,Database Mesh 与 Database Plus 之间还是有相当大差异的。

  • 关于 Database Mesh,SphereEx 认为云上数据库治理有共性也有其独特性。对于共性问题可以通过标准化和自动化的方式加以解决,独特性的可以通过提供一种灵活的扩展机制,让工程师可以按需配置和实现因此需要通过可编程实现高性能扩展,应对云上数据库治理挑战;

  • 而关于 Database Plus,Apache ShardingSphere 社区则认为这是一种分布式数据库系统的设计理念,旨在碎片化的异构数据库上层构建生态,在最大限度地复用数据库原生存算能力的前提下,进一步提供面向全局的扩展和叠加计算能力。使应用和数据库间的交互面向 Database Plus 构建的标准,从而屏蔽数据库碎片化对上层业务带来的差异化影响。

不过随着数据库上云的趋势不可避免,Database Mesh 与 Database Plus 这两者之间难免会产生交集。在云原生以及分布式数据库的场景下,ShardingSphere 与 Database Mesh 之间将会产生更多的火花。

其次,应用场景不同

在 Database Plus 理念指导下的 ShardingSphere,主要被应用于分布式数据库场景之中,Database Mesh 主要被用来指导云原生场景下数据库可靠性的具体实践。作为两个不同领域的不同设计哲学,Database Plus 和 Database Mesh 均代表了在各自数据治理场景中的科学理念,并且在科学理念的指导下,诞生了 ShardingSphere 和 Pisanix 这两款开源实践产品。

Database Mesh 2.0 希望提供一种以数据库为中心的治理框架:

  • 数据库是一等公民:一切抽象围绕数据库治理行为进行,比如访问控制、流量治理、可观测性等;

  • 面向工程师体验:对于开发人员,通过便捷易用的数据库声明和定义,即可进行开发,无需关心数据库的位置;对于运维和 DBA,提供多种数据库治理行为抽象,实现自动化的数据库可靠性工程;

  • 云原生:以开放的生态和实现机制适配不同的云环境,面向云原生构建和实现,而无需担心厂商锁定。

而 Database Plus 则希望以『连接、增强、可插拔』为核心,在碎片化的异构数据库上层构建计算生态。以解决本地架构选型困难、技术及运维复杂度高、数据库上层标准缺失、数据库间缺乏协作和统管能力等问题。

总而言之,Database Plus 理念下的实践 Apache ShardingSphere,是面向于分布式数据库场景下的具体实践。而 Database Mesh 则是在云原生场景下的,面向云原生场景下数据库治理难点的解决方案。

最后,业务场景与诉求所引发的转型契机不同

从关系型数据库到分布式数据库,应用场景的不断扩张,数据库在不同场景下的优劣表现,均决定了企业应用数据库的多元并存常态。碎片化是数据库领域的大势所趋,单一品类的数据库无法适用于所有场景,只能适用于某一种或某几种擅长的场景。而在业务场景的驱动下,采用分布式数据库解决方案,已经成为应对大流量、高并发、缓解数据库压力的行业共识。

同样由于场景驱动,在分布式数据库风靡全球的这几年中,云计算也在充分发挥着自身的优势与特性。虽然不能预测未来的发展和变化,但对于云计算来说,随着云原生环境的成熟,天然产生于云环境下的数据库(即云原生数据库)越来越多,其不仅集中在各家云厂商手中,市面上更是有越来越多产品涌现出来。

加之使用场景以及在不同的用户视角里,开发人员更关注运行效率、成本开销,以及数据库协议类型和访问信息,不关心数据存储的位置。运维和 DBA 更关注数据库服务的自动化、稳定性、安全性、监控报警等,此外 DBA 还会关心数据的变更、容量、安全访问、备份、迁移等等。正是随着对数据库治理场景的深入理解和对用户体验的极致追求,共同催生了 Database Mesh 2.0 的核心思想:通过可编程实现高性能扩展,应对云上数据库治理挑战。

三、当分布式成为共识、云原生趋于繁荣:ShardingSphere 与云之间会冲突吗?

早在 Service Mesh 大行其道的 2018 年,Apache ShardingSphere PMC Chair 张亮就曾借着 Service Mesh 的东风,创造性地提出了 Database Mesh 概念,设想是否有一种模式可以有效的结合 JDBC 代理端与 Proxy 客户端的优点并屏蔽其缺点,借助“弹性伸缩 + 零侵入 + 去中心,实现了一个真正的云上基础设施”,而当时设想中的 ShardingSphere Sidecar,正是 Database Mesh 1.0 阶段的产物。

随着迎来『分布式成为共识、云原生趋于繁荣』的阶段,作为一款由社区主导的开源项目,自然需要跟着业务、场景的变化而变化。ShardingSphere 也在这一条件下经历了从 Sharding-JDBC 到 ShardingSphere 的转变,不只是名称的变化,更是 ShardingSphere 产品本身定位和技术生态领域的变化。

Pisanix 是用 Rust 和 Go 重写的上云版 ShardingSphere?

近期,SphereEx 对外开源了面向 Database Mesh 的解决方案 Pisanix。对于 Pisanix 面向数据库流量的核心组件 Pisa-Proxy 而言,其与 ShardingSphere-Proxy 两者的架构非常相似,粗略一看很容易将这两者联系为重构的关系。

当然也不只是 Pisanix 与 ShardingSphere-Proxy,所有面向 MySQL 数据库的代理的架构设计都大同小异。尤其是数据库领域,存在着一定的同质化问题。不过对于产品而言,关键就是在其间寻找差异。对于 Pisanix 与 ShardingSphere-Proxy 而言,这两者的区别在于在拿到数据后要实现怎样的效果,解决用户怎样的问题。

因此,Pisanix 不能简单的被认为是用 Rust 重写的 ShardingSphere,两者完全不同,只是在入口处比较像。对于数据库领域而言,总归是有相似点的。

在这里插入图片描述

另一方面,许多用户会非常自然地将 Database Mesh 与 ShardingSphere-Sidecar 划作等号。但其实这两者在内核层面有很大不同,这也是区别两者的最关键因素。目前,作为 Database Mesh 理念的实践,Pisanix 已能够承担一部分原有 ShardingSphere-Sidecar 在云原生环境下的数据治理能力,方便用户在云上环境中使用 ShardingSphere。

Pisanix 项目地址:https://github.com/database-mesh/pisanix

对于 Database Mesh 而言,Sidecar 并不是它的内核。Database Mesh 的内核一定是面向某个具体的、工程化的问题,Sidecar 只是 Database Mesh 概念其中的一种部署形式。有可能未来有一天 Pisanix-Proxy 就不是 Sidecar 的形式了,也有可能会演化成一个很薄的中间层。总而言之,Sidecar 只是实现治理能力的一个手段。

Database Mesh 真正的内核在于对用户体验、数据库服务治理等层面的拓展。如果未来有更多数据库类型的出现,有更多云上云下的场景出现,Database Mesh 的概念也会进一步实现扩展,这才是 Database Mesh 正在追求的方向。

Database Mesh 想做的是把各种云上的因素屏蔽掉,统一将上层数据库的各类行为治理起来。但不同数据库的协议和运维特性是千差万别的,困难就在于能否抽象出标准的治理行为。技术方案本身是多种选择中的一种,最核心的部分是用户体验。至于选择 Java 还是 Rust 或是 Python,都只是技术方案中的一部分,通过选择合适的语言的来保持项目的生命力以及生态,这些都是必须要考虑的部分。

四、数据库未来全景图:ShardingSphere + Database Mesh +....

Database Mesh 可以治理 ShardingSphere 吗?

如果把 ShardingSphere 看作为一个高性能的分布式数据库,对于 Database Mesh 而言,治理 ShardingSphere 与治理 MySQL、TiDB 等数据库都是一样的。

因此尽管可以治理,但 ShardingSphere 本身并不额外需要其它理念的影响,因为对 ShardingSphere 的设计哲学 Database Plus 而言,是通过连接、增强、可插拔的特性将 MySQL 本身不具备的能力增强出来。这种增强是原生数据库不具备的能力,而通过 ShardingSphere 则能够与底层数据库结合,将较强的计算能力以某种方式部署在应用端,变成一个高性能的分布式数据库,避免资源浪费,提供相较于其它分布式数据库更加高性价比的解决方案。

云原生的场景下的机遇

接下来,让我们把眼光着眼于行业。众所众知,云是代表着未来,代表着不可逆的方向。因此,一个项目、一款产品、一个理念,能否服务于这个『不可逆』的未来,将直接影响到自己的生命周期与影响力。这也是 ShardingSphere 规划上云、也一定会上云的根本原因。

在 Database Plus 理念的指导下,Apache ShardingSphere 可以在云数据库现有基础上拓展更多功能,为企业、云计算平台提供更加强大的跨不同数据库产品本身的能力,底层兼容多个数据库,兼容云端各类数据库产品,研发侧无需感知;另外,以保持云中立的身份,确保云端体验与本地体验相同,支持多云架构,在不同云的基础设施下提供同样的体验,这正是 ShardingSphere 在云原生场景下的机会与能力。

作为两款完全独立的设计哲学,Database Plus 与 Database Mesh 之间并不是竞争关系。相反,Database Mesh 与 Database Plus 之间可以产生很好的化学反应。这两者都是基于数据库现有的碎片化生态、用户所面临的痛点来提供解决方案。尽管方向不同,但均代表了时下对于解决不同场景下数据治理难题的最佳思路。

目前 Database Mesh 官网 已上线,相应的规范定义也开源在( https://github.com/database-mesh/database-mesh )仓库里。同时 Database Mesh 的具体实践 Pisanix 也已开源,欢迎大家的关注。

项目地址:https://github.com/database-mesh/pisanix

官网地址:https://www.pisanix.io/

Database Mesh:https://www.database-mesh.io/

SphereEx 官网:https://www.sphere-ex.com/

...全文

相关推荐

ShardingSphere学习分享(一).pptx

ShardingSphere学习分享(一).pptx

码农汉子

3-2.Apache+ShardingSphere的蓝海探索.pdf

3-2.Apache+ShardingSphere的蓝海探索.pdf

文宇肃然

Apache ShardingSphere分布式数据库中间层生态圈-其他

Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由JDBC、Proxy和Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。 Apache ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。 Apache ShardingSphere 5.x版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及对MySQL、PostgreSQL、SQLServer、Oracle等SQL与协议的支持,均通过插件的方式织入项目。开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere目前已提供数十个SPI作为系统的扩展点,而且仍在不断增加中。 ShardingSphere特点: ShardingSphere-JDBC 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 适用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。 支持任意实现JDBC规范的数据库,目前支持MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92标准的数据库。 ShardingSphere-Proxy 定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供MySQL和PostgreSQL版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat等)操作数据,对DBA更加友好。 向应用程序完全透明,可直接当做MySQL/PostgreSQL服务端使用。 适用于任何兼容MySQL/PostgreSQL协议的的客户端。 ShardingSphere-Sidecar(TODO) 定位为Kubernetes的云原生数据库代理,以Sidecar的形式代理所有对数据库的访问。通过无中心、零侵入的方案提供与数据库交互的的啮合层,即Database Mesh,又可称数据库网格。 Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注的是交互,是将杂乱无章的应用与数据库之间的交互进行有效地梳理。使用Database Mesh,访问数据库的应用和数据库终将形成一个巨大的网格体系,应用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。 混合架构 ShardingSphere-JDBC采用无中心化架构,适用于Java开发的高性能的轻量级OLTP应用;ShardingSphere-Proxy提供静态入口以及异构语言的支持,适用于OLAP应用以及对分片数据库进行管理和运维的场景。 Apache ShardingSphere是多接入端共同组成的生态圈。 通过混合使用ShardingSphere-JDBC和ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合与当前业务的最佳系统架构。 功能列表: 1、数据分片 分库 & 分表 读写分离 分片策略定制化 无中心化分布式主键 2、分布式事务 标准化事务接口 XA 强一致事务 柔性事务 3、数据库治理 分布式治理 弹性伸缩 可观测性(分布式跟踪、指标度量) 数据加解密 影子表压测

weixin_38690089

Apache ShardingShpere的云原生之道.pdf

Apache ShardingShpere的云原生之道.pdf

科技互联人生

2024全球软件研发技术大会

高洪涛-基于BanyanDB的可观测性最佳实践

qq_34043145
评论
收藏 已收藏
分享
返回顶部
SphereEx
SphereEx 企业官方账号 企业官方账号
SphereEx 18 成员 19 内容