“ShardingSphere 作为 openGauss 生态的开源分布式数据库解决方案,将持续助力于 openGauss,满足千行百业广大客户分布式场景需求。”

5月29日,由 openGauss 社区主办,北京鲲鹏联合创新中心、云和恩墨、深信服、SphereEx 合力承办的“【北京】openGauss Meetup”活动在北京海淀区中关村智能制造创新中心成功举行,此次 Meetup 也是 SphereEx 正式加入 openGauss 社区后的首次联合活动。在 Meetup 现场, SphereEx CEO 张亮从产品形态、部署架构、性能测试、未来规划等方面为大家带来了 《ShardingSphere 与 openGauss 的化学反应》主题分享。

​SphereEx CEO 张亮

ShardingSphere 是完全面向广度的生态类项目

分享伊始,张亮首先展示了 ShardingSphere 的数据报告。ShardingSphere 是 Apache 软件基金会的顶级项目,目前在 GitHub 上 收获 14k 以上的 star 数目,超过 200 位贡献者参与社区开发,拥有 100 个以上模块。整体而言, ShardingSphere 是一个完全面向广度的生态类项目。

在谈到成立 SphereEx 公司的核心理论基础时,张亮认为,“基于目前的行业现状,数据库碎片化的时代已经来临,未来不再会出现大一统的数据库去解决所有问题,众多数据库将在各行各业发挥各自擅长的能力。基于此, SphereEx 公司将主导把 ShardingSphere 打造成为 Database Plus 的产品形态,致力于搭建数据库上层的标准化增量,而非做一个 n+1 的数据库。”

ShardingSphere 具备可插拔的强大架构体系。多种数据库协议和 SQL 方言,及其提供的功能都是它可插拔的一部分。ShardingSphere 最常见的数据分片能力,即是其中的一个可插拔功能。除了数据分片,读写分离、数据加密、高可用、弹性伸缩,以及未来计划的 SQL 审计相关功能均通过可插拔的标准接口织入到系统中。在可插拔架构之上,ShardingSphere 提供 DistSQL 功能,用于控制可插拔功能规则的创建,以便于每个功能均可通过 SQL,以数据库原生的方式进行操作,用户无需像使用传统中间件一样,通过配置启动功能。

ShardingSphere 是一个面向开发者的可定制化编程平台

可插拔架构是 ShardingSphere 长期以来一直致力于打造的“微内核,强生态”架构模式。它追求各个模块的相互独立和互无感知,并且通过一个高灵活度,可插拔和可扩展内核,以叠加的方式将各种功能组合使用。

ShardingSphere 的可插拔的架构共分为三层。

L1 内核层面向数据库内核,包括数据库事务引擎,查询优化器等。当数据库有较为适当的查询优化能力时,ShardingSphere 可直接下推至数据库的方式去执行。在 SphereEx 公司为 ShardingSphere 的产品规划中,当数据库缺失查询优化的相应能力时,比如 KV 数据库,则会调用内置的查询优化器,在其上进行标准查询。

L2 功能层是 ShardingSphere 最核心所在。在功能层完全缺失的情况下,ShardingSphere 会表现成为一个空白的框架,将 SQL 直接透穿至数据库。功能层的每个模块均独立存在,在模块内部的代码开发,不会影响其它模块的稳定性。与此同时,ShardingSphere 可以将各种功能以可叠加的方式组合使用。譬如:开发者既可以同时使用数据分片、读写分离和数据加密,也可以独立使用数据加密,所有功能的排列组合都是自由扩展的。ShardingSphere 不仅是一个面向数据库某项能力所打造的数据库中间件产品,广义上它更是一个面向开发者的可定制化编程平台。

L3 生态层通过三个接口分别实现数据库协议、 SQL 方言和数据库存储对接,用于打造异构数据网关。ShardingSphere 未来会考虑开发 SQL 方言转换模块,在真正意义上实现在异构的数据库中自由的穿梭,并管控所有对数据库的访问流量。

在谈到 ShardingSphere 的部署架构图时,张亮表示: “ShardingSphere 是由两个产品形态组成的多接入端混合架构”。

ShadingSphere-Proxy 的使用方式与数据库一模一样,目前支持 MySQL 和 PostgreSQL 协议,可以直接使用 MySQL/PostgreSQL Cli 命令行,Navicat 等图形界面、以及任何异构语言连接。

ShadingSphere-JDBC 则是一个 Java 端的驱动,与 Proxy 的两次网络调用不同,它采用直连数据库的方式以达到性能的最大化。Proxy 的性能损失大概在 20% 左右,而 JDBC 则在 2%-3% 之间。对于用户来说,选用 JDBC 或 Proxy 都是可以的,同时 ShardingSphere 还提供了 Proxy 和 JDBC 混合使用的架构模型。在对性能要求比较极致的 Java 开发线上应用场景,可使用 JDBC 直连数据库,并且搭建一个 Proxy 便捷 DBA 对数据库的运维操作;对性能要求非敏感的场景,则可以直接使用 Proxy。

ShardingSphere 的分片能力从本质来看,是基于对 SQL 修改,以及对分布式事务的协调进而达成对水平扩展要求的。通过 ShardingSphere 和 openGauss 所组合成的新的产品形态,到底能产生什么样的化学反应呢?

ShardingSphere + openGauss 产生的化学反应

openGauss 是一个性能强劲的交易型数据库,通过 ShardingSphere 可以便捷地实现其水平扩展能力。ShardingSphere 的可插拔能力在此可以更好体现,它可以非常方便的对接 openGauss 协议,而无需改动内核代码。

用户使用 ShardingSphere 与直接使用 openGauss 没有区别。但从配置来说, ShardingSphere 的分片算法是面向开发者的,配置非常灵活,如果封装成为一体化的分布式数据库,通过 Java 类进行分片规则的方式在使用体验上较差。开发者可以使用 ShardingSphere 的模板化分片算法(如:MOD、HASH、RANGE),完全屏蔽分片键以及算法的配置,未来 ShardingSphere 会在配置模版的易用性上做较大提升。

除此之外,ShardingSphere 还将提供高可用切换探测能力。当 openGauss 发生主从切换后,可通过 DistSQL 通知 ShardingSphere 切换读写分离配置。

另外,张亮还展示了 ShardingSphere 在 openGauss 之上所做的性能测试报告。

从图中可以看出,当直连 openGauss 在 TPS 达到 19 w 时,通过 ShardingSphere-Proxy 代理连接的 TPS 则可以达到 15.5 w,接近 20% 的性能损耗。张亮表示未来的测试场景将会更加细化,将添加 MySQL 和 PostgreSQL 的比对测试。

最后张亮分享了 ShardingSphere 和 openGauss 在拓展生态和社区未来发展中的一些规划。首先,将性能提升至极致。未来双方的合作中有大量可提升的空间,会持续的进行优化提升。

其次,通过 ShardingSphere 的可插拔的架构赋予 openGauss 更多能力,如:数据加密、SQL 审计等。

第三,对 openGauss 数据库管控方言的全面支持。ShardingSphere 在之前对 MySQL 的支持较多,未来会对 openGauss 做更强的支持。

最后,通过 DistSQL 对接分布式的管控。目前 ShardingSphere 可以直接对接 MySQL 的 MGR,未来会内置支持 openGauss 的高可用切换方案。

分享最后,张亮总结到:“目前 SphereEx 公司正着力于将 ShardingSphere 和 openGauss 更好地对接和联合优化,使其在高性能的基础之上,增加水平扩展的分布式能力。ShardingSphere 将完全兼容 openGauss 协议,透明化用户使用。在 ShardingSphere 未来的规划中,会不断尝试将其各方面的能力与 openGauss 相结合,使整个数据库产品在水平扩展之外,在数据库灰度迁移和升级、数据安全、压测数据导流、分布式治理等能力上进一步提升。” 希望 ShardingSphere 与 openGauss 携手,带动国内新兴数据库生态不断壮大,助力数据库产业不断前行。

openGauss 北京用户组成立

本次 Meetup 最后进行了 openGauss 北京用户组成立仪式。openGauss User Group,简称 oGUG,是一个让开发者就 openGauss 技术特性、最佳实践、运营进展等方向交流的公益性本地社区,大家共同努力,一起进行原创性、引领性的技术攻关,构建数据库根技术,从而打造数据库根社区和主流生态。SphereEx CEO 张亮成为北京用户组首批成员。

更多精彩视频回顾,请点击“链接”查看。

活动回顾|ShardingSphere X openGauss,将会产生怎样的化学反应?的更多相关文章

  1. 活动回顾|Apache DolphinScheduler x Pulsar 在线 Meetup

    关于 Apache DolphinScheduler: " Apache DolphinScheduler(Incubating) 是一个分布式去中心化.易扩展的可视化工作流任务调度系统,致 ...

  2. 你在为谁工作——IT帮深圳分站2019年3月线下活动回顾

    对于工作,在每个人的心中,它所占的份量都是不一样的.有的人活着是为了工作,有的人工作是为了更好的生活. 在3月24日下午,北京.上海与深圳三地我们同步举办了关于工作这个话题的沙龙活动. 我们深圳分站参 ...

  3. 定义工作,解读自我——IT帮2019年2月线下活动回顾

    本次活动是在北京和深圳两个分站同步进行的,IT团建委员会负责策划和组织,北京站由帮主周老师.王兵老师主导,深圳站由副帮主兼深圳站长陈焕老师主导. 几位老师都是有着丰富的工作经历和人生体验的导师,他们不 ...

  4. 活动回顾丨ALC Beijing 首场 Meetup:《开源到底有多难?》

    8月16日,ALC Beijing 的首次线下沙龙活动 -- <开源到底有多难?>在微软大厦如期举行.本次沙龙主要是分享开源开发经验.探讨如何让开源项目更加茁壮成长,以及分享 ASF 管理 ...

  5. 被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾

    前天, 2018年11月10日, 广州图书馆\微软云开发者社区\广东职业教育信息化研究会\珠三角技术沙龙在广州图书馆负一层1号报告厅搞了一场”微软最有价值专家(MVP)广州分享会 - MonkeyFe ...

  6. [2018-11-03]2018年10月28日宁波dotnet社区活动回顾及下次活动预告

    离上次活动,有半年了,汗.之后尽量保证每月一次,以组织为主,多邀请嘉宾来分享. 本次活动不足之处 人手不足:由于活动组织事项受限于人手(目前就我一个,这次活动前后我又应邀给大红鹰学院应届生介绍dotn ...

  7. 广州地区.net相关活动的文章

    此文正在更新中... 复活广州.net俱乐部 office365的开发者训练营,免费,在微软广州举办 被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾

  8. 广州.net俱乐部12月份ABP框架活动场地征集、志愿者征集、合作讲师\副讲师征集

    大家好,我在<被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾>一文中提到,我将在12月份搞一场ABP框架活动,现向大家征集活动场地.志愿者.合作讲师\副讲 ...

  9. 大合集 | 9 场 Dubbo Meetup 回顾视频和PPT下载

    2018年2月16日,Dubbo 加入 Apache 基金会孵化器,在随后的那个夏天,我们开始在全国(北京.上海.深圳.成都.杭州)和社区的用户们见面.认识.交个朋友,将社区的最新动态.Dubbo 的 ...

随机推荐

  1. mac下编译安装grafana

    下载grafana源码 从grafana git 仓库下载指定的分支. 编译后端 我下载的时候,grafana的最新release是7.3.7,其需要安装go 1.15版本 生成可执行文件 进入项目根 ...

  2. go语言 切片表达式

    切片表达式 切片的底层就是一个数组,所以我们可以基于数组通过切片表达式得到切片. 切片表达式中的low和high表示一个索引范围(左包含,右不包含),得到的切片长度=high-low,容量等于得到的切 ...

  3. Spring笔记(1)

    Spring快速入门 开发步骤 导入坐标 <dependency> <groupId>org.springframework</groupId> <artif ...

  4. centos7 shell 计算器 bc 命令

    2021-08-03 1. 安装 yum -y install bc 2. 简介 bc 命令是任意精度计算器语言,通常在 linux 下当计算器使用 类似基本的计算器, 使用这个计算器可以做基本的数学 ...

  5. DNS重新绑定攻击

    来自微信外挂的安全风险 DNS重新绑定攻击 DDNS 动态域名设置

  6. RGB 与 HSB/HSV 的关系

    能理解 RGB 模式中确定数值的各种颜色,但怎么理解「明度」.「饱和度」.「色相」等概念? 从第一张图可以简单得出以下结论: 明度--这个最简单,rgb中,三色光的值,其加起来的和越大,明度就越大. ...

  7. 动环监控系统中B接口的实现

    动环监控系统简述 1.术语介绍 1.1 省集中监控中心-Province Supervision Center(PSC) 面向多FSU管理的高级监控层次,即省集中监控中心,通过开放的数据协议,连接监控 ...

  8. Python - 如何将 list 列表作为数据结构使用

    列表作为栈使用 栈的特点 先进后出,后进先出 如何模拟栈? 先在堆栈尾部添加元素,使用 append() 然后从堆栈顶部取出一个元素,使用 pop() # 模拟栈 stack = [1, 2, 3, ...

  9. Spring AOP框架 AspectJ

    1 AspectJ简介 v  AspectJ是一个基于Java语言的AOP框架 v  Spring2.0以后新增了对AspectJ切点表达式支持 v  @AspectJ 是AspectJ1.5新增功能 ...

  10. 使用Git上传项目到GitHub仓库

    GitHub账号注册很长时间了,但是没怎么上传过东西.今天学习如何利用Git工具将代码上传到GitHub,了解了一些常用命令 $ git config --global user.name " ...