ShardingSphere初探1 -- 概览

 

 

知道这个框架是通过一期QQ课堂

https://shardingsphere.apache.org 官网

https://github.com/apache/incubator-shardingsphere github库

https://shardingsphere.apache.org/document/current/cn/overview/ 中文文档

https://shardingsphere.apache.org/community/cn/contribute/ 社区

介绍:

Apache ShardingSphere (Incubator) 是一套开源的分布式数据库中间件解决方案组成的生态圈, 它由Sharding-JDBC, Sharding-Proxy和 Sharding-Sidecar (规划中) 这3款相互独立,

却又能够混合部署使用的产品组成. 它们均提供标准化的数据分片, 分布式事务和数据库治理功能,可适用于如Java同构, 异构语言,容器, 云原生等各种多样化的应用场景.

 

ShardingSphere定位为关系型数据库中间件, 旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力, 而并非实现一个全新的关系型数据库. 它通过关注不变, 进而抓住

事物本质. 关系型数据库当今依然占有巨大市场, 是各个公司核心业务的基石, 未来也难以撼动, 我们目前阶段更加关注在原有基础上的增量, 而非颠覆.

 

目前所有的可用发布都是进入Apache孵化器之前的发布版本, Apache官方发布将从4.0.0版本开始.

 

## 数据分片

分库 & 分表

读写分离

分片策略定制化

无中心化分布式主键

 

## 分布式事务

从本地事务接口自动对接分布式事务

XA事务和柔性事务自由切换

原生数据源接口自动转换XA接口

柔性事务自动补偿, 无需用户实现补偿接口

 

## 数据库治理

服务治理

* 配置动态化

* 高可用

* 熔断 & 禁用

数据治理

* 数据脱敏

* 权限

可观察性

* APM

* 链路追踪

* 调用拓扑

* OpenTracing对接

弹性伸缩(规划中)

 

其github库更新也是比较活跃,我关注时最新更新是 2 days ago

 

在社区中查看采用公司,可以看到有 当当, 唯品会, 58同城, 京东金融, 天涯社区, 广西壮族自治区国土资源信息中心, 开课啦 ... 等比较知名公司.

其中该框架是最早由 当当 提供给了Apache基金会.

 

概览:

 

 

Sharding-JDBC

该组件定位为轻量级Java框架, 在Java的JDBC层提供的额外服务. 它适用客户端直连数据库,以jar包形式提供服务,

无需额外部署和依赖, 可理解为增强版的JDBC驱动, 完全兼容JDBC和各种ORM框架.

### 特点

* 适用于任何基于Java的ORM框架,如: JPA, Hibernate, MyBatis, Spring JDBC Template 或直接适用JDBC.

* 基于任何第三方的数据库连接池, 如: DBCP, C3P0, BoneCP, Druid, HikariCP 等.

* 支持任意实现JDBC规范的数据库. 目前支持MySQL, Oracle, SQLServer 和 PostgreSQL.

Sharding-Proxy

定位为透明化的数据库代理端, 提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持. 目前先提供MySQL版本,

它可以使用任何兼容MySQL协议的访问客户端(如: MySQL Command Client, MySQL Workbench等)操作数据, 对DBA更加友好.

* 向应用程序完全透明, 可直接当作MySQL使用.

* 适用于任何兼容MySQL协议的客户端.

Sharding-Sidecar(TBD)

定位为Kubernetes或Mesos的云原生数据库代理, 以DaemonSet的形式代理所有对数据库的访问.

通过无中心, 零侵入的方案提供与数据库交互的啮合层, 即 Database Mesh , 又可称数据网格.

Database Mesh的关注重点在于如何将分布式的数据访问应用与数据库有机串联起来,它更加关注

的是交互, 是将杂乱无章的应用与数据库之间的交互有效的梳理. 使用Database Mesh,访问数据库

的应用和数据库终将形成一个巨大的网格体系, 应用和数据库只需在网格体系中对号入座即可,它们

都是被啮合层所治理的对象.

模块区别点:

 

混合架构

Sharding-JDBC采用无中心化架构,适用于Java开发的高性能的轻量级OLTP应用;

Sharding-Proxy提供静态入口以及异构语言的支持,适用于OLAP应用以及对分片数据库进行管理和运维的场景.

ShardingSphere是多接入端共同组成的生态圈. 通过混合使用Sharding-JDBC和Sharding-Proxy,并采用同一注册中心统一配置分片策略,

能够灵活的搭建适用于各种场景的应用系统,架构师可以更加自由的调整适用于当前业务的最佳系统架构.

规划线路图

 

 

 

下一篇:着重介绍Sharding-JDBC 以及 简单demo

posted @ 2019-07-28 16:00  ukyo--君君小时候  阅读(1242)  评论(0编辑  收藏  举报