Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
周末一天能干啥?
于是,我将 Apache ShardingSphere 产品介绍与开发入门通篇阅读了一遍。
那么,本周将围绕 “Apache ShardingSphere” 进行展开。
1. 为什么要关注 ShardingSphere
最近发现自己关注的公众号,很多都喜欢重新造轮子。先不说喜不喜欢,我还在为轮子用什么螺丝伤脑筋。
没错,我也喜欢重新造轮子。
我想造一个分布式系统的轮子,于是我大体分析了一下需要的架构。整个骨干必须要有:分布式数据库、微服务、负载前端、共享缓存。
如何存取不同数据库的数据?
如何保证数据的完整与正确?
如何治理这么多的数据库?
ShardingSphere 提供了数据分片、读写分离、编排治理、分布式事务的能力,然后完美的解决了上述的问题。
2. Apache ShardingSphere 简介
它从2016年开源,到2020年4月16日成为 Apache 软件基金会的顶级项目。目前已经有 147 家公司在使用 ShardingSphere,涉及了金融、电子商务、数字化云与服务、出行、物流、互联网教育、互联网文娱等行业。
3. Apache ShardingSphere 架构
ShardingSphere 由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
ShardingSphere-JDBC 采用无中心化架构,适用于 Java 开发的高性能的轻量级 OLTP 应用;ShardingSphere-Proxy 提供静态入口以及异构语言的支持,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。
4. Apache ShardingSphere 功能列表
- 数据分片
- 分库 & 分表
- 读写分离
- 分片策略定制化
- 无中心化分布式主键
- 分布式事务
- 标准化事务接口
- XA 强一致事务
- 柔性事务
- 数据库治理
- 分布式治理
- 弹性伸缩
- 可视化链路追踪
- 数据加密
5. 简单入门
以下内容是一个简单的、分库分表的、查询示例。
创建分库与分表
引入 Maven 依赖
分库分表规则配置
数据源配置
测试类
查询测试结果
6. 总结
最后,本文只是简单了测试了分片查询,其他的例如:分片新增、分片修改、分布式事务与数据库治理都还没去了解。