Sharding-Sphere 3.X万众瞩目登场,如约而至!

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

从Sharding-JDBC到Sharding-Sphere,老铁粉陪它一同走过,新朋友也在陆续加入。Sharding-Sphere是什么?做什么?做的如何?三大经典提问帮助新老朋友一同温故知新。

Sharding-Sphere是什么?

Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBCSharding-ProxySharding-Sidecar这3款相互独立的产品组成。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。

Sharding-Sphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿,是非常值得推荐的。而Sharding-Sphere关注未来不变的东西,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,我们目前阶段更加关注在原有基础上的增量,而非颠覆。其架构如下图所示:

d00c8b079f097d64f4b4aaba97b5477a725c81dd

Sharding-Sphere家族都有谁?

Sharding-JDBC, Sharding-Proxy以及Sharding-Sidecar 共同组成了Sharding-Sphere。他们分别定位、适用于不同的应用场景。您也可以将他们组合使用以得到增益的性能表现。

1. Sharding-JDBC

Sharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身。 它定位为轻量级Java框架,在Java的JDBC层提供分库分表、读写分离、数据库治理、柔性事务等服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。

2. Sharding-Proxy

Sharding-Proxy是Sharding-Sphere的第二个产品。 它定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 Sharding-Proxy屏蔽了底层的分库分表,您可以像使用一个简单的数据库一样来操作分库分表的数据。目前提供MySQL版本,它可以使用任何兼容MySQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench等)来访问Sharding-Proxy,进而进行DDL/DML等操作来变更数据,对DBA更加友好。

3. Mixed scheme of Sharding-JDBC & Sharding-Proxy

为了得到更好的性能以及友好的交互体验,您可以同时使用Sharding-JDBC和Sharding-Proxy。

线上应用使用Sharding-JDBC直连数据库以获取最优性能,使用MySQL命令行或UI客户端连接Sharding-Proxy方便的查询数据和执行各种DDL语句。它们使用同一个注册中心集群,通过管理端配置注册中心中的数据,即可由注册中心自动将配置变更推送至JDBC和Proxy应用。若数据库拆分的过多而导致连接数会暴涨,则可以考虑直接在线上使用Sharding-Proxy,以达到有效控制连接数的目的。其架构如下如所示:

5a2ae2c2f4ace1b474a85f17ec83e08a214e7426

4. Sharding-Sidecar

Sharding-Sidecar是Sharding-Sphere的第三个产品,目前仍处在孵化中。 定位为Kubernetes或Mesos的云原生数据库代理。其核心思想是Database Mesh,即通过无中心、零侵入的方案提供与数据库交互的啮合层。关注重点在于如何将分布式的数据访问应用与数据库有机串联起来

Sharding-Sphere的功能特性

1. 分库分表

为解决关系型数据库面对海量数据由于数据量过大而导致的性能问题,将数据进行分片是行之有效的解决方案,而将集中于单一节点的数据拆分并分别存储到多个数据库或表,称为分库分表。作为分布式数据库中间件,我们的目标是透明化分库分表所带来的影响,让使用方尽量像使用一个数据库一样使用水平拆分之后的数据库。

2. 读写分离

面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时间有大量并发读操作和较少写操作类型的应用系统来说,将单一的数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样使用主从数据库,是读写分离中间件的主要功能。

3. 柔性事务

对于分布式的数据库来说,强一致性分布式事务在性能方面存在明显不足。追求最终一致性的柔性事务,在性能和一致性上则显得更加平衡。 Sharding-Sphere目前支持最大努力送达型柔性事务,未来也将支持TCC柔性事务。若不使用柔性事务,Sharding-Sphere也会自动包含弱XA事务支持。

4. 数据治理

Sharding-Sphere提供注册中心、配置动态化、数据库熔断禁用、调用链路等治理能力。

本期看点

相信很多朋友都想知道今天与大家隆重见面的3.X究竟给大家带来了什么新体验,下面让我们一睹为快吧~

Sharding-Sphere 3.X新功能:

  1. Sharding-Proxy MySQL版本上线,支持DML/DDL/DAL/DQL等基本 SQL。屏蔽底层所有分库分表,可像使用单一MySQL数据库一样处理分库分表数据。

  2. 新增对OR SQL语句的支持,例如:select * from t_order where (id>10 and id<20) or status=‘init’;

  3. 新增对INSERT批量插入的支持,例如 insert into t_order(order_id, user_id, status) values (1, 2, ‘init’), (2, 3, ‘init’), (3, 4, ‘init’);

  4. 优化对INSERT SQL语句的支持,主要包括不指定具体列进行INSERT操作,例如:insert into t_order values(1, 2,‘init’);

  5. 增加解析引擎对SQL的缓存,进一步提升解析性能。

  6. Sharding-JDBC新增对InlineExpression占位符$->{}的支持。

新的产品、新的特性、新的优化是不是让你眼前一亮?那就赶快把Sharding-Sphere 3.X用起来吧!

暖心Tips:

① 使用Sharding-JDBC可加入以下Maven依赖:


<dependency>
<groupId>io.shardingsphere</groupId
<artifactId>sharding-sphere</artifactId>
<version>3.0.0.M1</version>
</dependency>

② 使用Sharding-Proxy,可在这里下载:

https://github.com/sharding-sphere/sharding-sphere-doc/raw/master/dist/sharding-proxy-3.0.0.M1.tar.gz

此外,我们的DOCKER下载命令如下所示:

docker pull shardingsphere/sharding-proxy

星路历程

Sharding-Sphere自2016开源以来,不断精进、不断发展,被越来越多的企业和个人认可:在Github上收获4000+的star,1700+forks,60+的各大公司企业使用它,为Sharding-Sphere提供了重要的成功案例。此外,越来越多的企业伙伴和个人也加入到Sharding-Sphere的开源项目中,为它的成长和发展贡献了巨大力量。

未来,我们将不断优化当前的特性,精益求精;同时,大家关注的柔性事务、数据治理等更多新特性也会陆续登场。Sharding-Sidecar也将成为云原生的数据库中间件!


原文发布时间为:2018-05-22

本文作者:潘娟

本文来自云栖社区合作伙伴“中生代技术”,了解相关信息可以关注“中生代技术”。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
631 0
|
1月前
|
存储 监控 物联网
【Clickhouse 探秘】Clickhouse 投影技术到底能做什么?怎么实现的?
ClickHouse 投影是一种数据结构,用于提高特定查询模式下的性能。通过预处理数据,投影可以显著减少查询的执行时间,特别是在复杂的聚合和排序查询中。投影自动与基础表数据保持同步,支持多投影,适用于实时分析、用户行为分析、日志分析等场景。虽然投影能显著提升查询性能,但也会增加存储开销和写入性能的影响。
63 0
|
4月前
|
SQL 算法 Java
(二十六)MySQL分库篇:Sharding-Sphere分库分表框架的保姆级教学!
前面《MySQL主从原理篇》、《MySQL主从实践篇》两章中聊明白了MySQL主备读写分离、多主多写热备等方案,但如果这些高可用架构依旧无法满足业务规模,或业务增长的需要,此时就需要考虑选用分库分表架构。
2740 4
|
运维 Dubbo 中间件
Dubbo3 源码解读-宋小生-13:全局视野来看Dubbo3的服务启动生命周期
> 完整电子书下载地址: https://developer.aliyun.com/ebook/7894 > Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双十一基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实
258 0
Dubbo3 源码解读-宋小生-13:全局视野来看Dubbo3的服务启动生命周期
|
运维 Dubbo 中间件
Dubbo3 源码解读-宋小生-12:全局视野来看Dubbo3的服务启动生命周期
> Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双十一基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实践和统一标准,同时将规模化实践经验与技术创新贡献开源社区,极大的推动了开源技术与标准的发展。 > 本文是
220 0
Dubbo3 源码解读-宋小生-12:全局视野来看Dubbo3的服务启动生命周期
|
消息中间件 存储 NoSQL
三歪吐血总结了各个中间件是如何实现持久化的
到目前为止,三歪也已经接触到了不少的中间件了,比如说「Elasticsearch」「Redis」「HDFS」「Kafka」「HBase」等等。 可以发现的是,它们的持久化机制都差不得太多。今天想来总结一下,一方面想来回顾一下这些组件,一方面给还没入门过这些中间件的同学总结一下持久化的”套路“,后面再去学习的时候就会轻松很多。
210 7
三歪吐血总结了各个中间件是如何实现持久化的
|
SQL 监控 关系型数据库
ShardingSphere -读写分离(概念)| 学习笔记
快速学习ShardingSphere -读写分离(概念)。
ShardingSphere -读写分离(概念)|  学习笔记
|
SQL 存储 算法
【ShardingSphere技术专题】「ShardingJDBC」(2) 进阶领略一下数据分片的核心概念
【ShardingSphere技术专题】「ShardingJDBC」(2) 进阶领略一下数据分片的核心概念
140 0
|
运维 Java 关系型数据库
【ShardingSphere技术专题】「ShardingJDBC」(1)带你一同认识一下ShardingJDBC是什么?(高手勿入)
【ShardingSphere技术专题】「ShardingJDBC」(1)带你一同认识一下ShardingJDBC是什么?(高手勿入)
208 0
|
设计模式 运维 Dubbo
Dubbo3 源码解读-宋小生-5:自适应扩展对象的创建getAdaptiveExtension方法
> Dubbo3 已经全面取代 HSF2 成为阿里的下一代服务框架,2022 双 11 基于 Dubbo3 首次实现了关键业务不停推、不降级的全面用户体验提升,从技术上,大幅提高研发与运维效率的同时地址推送等关键资源利用率提升超 40%,基于三位一体的开源中间件体系打造了阿里在云上的单元化最佳实践和统一标准,同时将规模化实践经验与技术创新贡献开源社区,极大的推动了开源技术与标准的发展。 > 本文
206 0