构建基于ApacheShardingSphere的分布式PostgreSQL数据库 江龙滔 1ApacheShardingSphere简介 目2构建分布式PostgreSQL数据库 Contents 录3分布式数据库的动态管理 4全新的异构查询方案 01 内核层 功能层 查询优化器 分布式事务 执行引擎 数据分片 读写分离 弹性伸缩 权限引擎 分布式治理 调度引擎 高可用 数据加密 影子库 其它 其它 ShardingSphere是一款开源的「数据服务能力增强引擎」,提供数据分片、读写分离、数据加密、数据脱敏、分布式事务等多种能力。 ShardingSphere遵循DatabasePlus理念 旨在构建「异构数据库」上层的「服务标准」和「生态」,从而屏蔽数据库碎片化对上层业务带来的差异化影响。 SQL/DistSQL 高性能&单元化 JavaSDK具备极致高并发能力,与业务应用绑 定部署,更加适合微服务后端的数据单元化架构。 零侵入&低耦合 使用方式与数据库和原生SDK一致,零学习成本,对遗留系统无侵入;增强功能与业务应用和 数据库完全解耦,防止被数据库和云供应商绑定,对异构数据库、多云和混合云天然友好。 多端访问&易运维 多类型接入端可同时在线并组成一体化集群,方便监控和运维。接入端之间可以根据SQL规则横向路由,有效梳理集群流量。 L1内核层:面向数据库内核,包括数据库事务引擎,查询优化器等; L2功能层:ShardingSphere最核心所在,可定制化开发平台。具有高定制化、高度内聚、灵活扩展等特点; L3生态层:通过三个接口分别实现数据库协议、SQL方言和数据库存储对接,用于打造异构数据网关; 基于ShardingSphere的可插拔架构底座,将分布式数据库的核心能力中,与企业业务贴近的垂直功能排列组合,在数据库替换、海量数据存储、高并发访问与数据安全存储等场景,提供对应的解决方案。 面向分布式的解决方案 分布式数据库解决方案 面向数据控制的解决方案 数据安全解决方案 面向流量控制的解决方案 全链路压测解决方案 功能特性 •极致性能&多接入端 •多数据库方言&访问协议支持 •水平拆分/内置&自定义算法 •垂直拆分/联邦查询 •分布式事务/多类型灵活切换 •弹性伸缩/数据迁移 •读写分离/高可用 •分布式管控/监控 分布式数据库解决方案:为解决原有方案的技术瓶颈,降低更换架构带来的复杂性风险,在不更换原有架构前提下,实现数据库同步,管理多个异构数据库集群,线性提升数据存储容量及并发吞吐。为用户提供基于数据分片,分布式事务、弹性伸缩的分布式数据库解决方案,兼具单机交易型数据库稳定性和分布式数据库的扩展能力。 数据安全解决方案:为了防止数据泄露,保护数据安全,提供基于产品的数据加密和数据脱敏功能。在不改动原有代码的前提下,为企业提供跨平台、异构环境的数据安全解决方案。 功能特性 •极致性能&多接入端 •多数据库方言&访问协议支持 •数据加密/国密支持 •密态计算 •在线加密/转加密 •权限控制/对接LDAP&第三方 全链路压测解决方案:基于内核的SQL解析能力,以及可插拔平台架构,实现压测数据与生产数据的隔离,帮助应用自动路由,支持全链路压测。帮助用户实现在生产环境进行压测,所获得较为准确地反应系统真实容量水平和性能的测试结果。 功能特性 •极致性能&多接入端 •多数据库方言&访问协议支持 •内置&自定义影子库算法 •可观察性/Metric&Tracing •金丝雀测试 •灰度上线 ProjectsbyNumberofCommits,2021 •全球最顶级的开源软件基金会 •管理超过两亿行代码 •成功孵化300+顶级开源项目 18000+Stars 6000+Forks 400+Contributors 15000+PullRequests ShardingSphere是Apache软件基金会顶级项目 2021年度Apache基金会全球最活跃项目Top10 OpenRank2022年基金会中国项目排行榜第一名 金融业 新零售 物流 制造业 通信 新闻资讯 软件开发及服务 生态伙伴 互联网 02 前置步骤: 启动ShardingSphere-Proxy 在PostgreSQL中创建2个database: demo_ds_0 demo_ds_1 说明: 为表t_order创建分片规则; 分片键是order_id; 使用MOD取模算法; 分片数量为4; 03 •通过YAML维护存储资源 •通过YAML管理规则 •多个database需要多个YAML •查看配置需要登录服务器 •修改配置需要服务器写权限 •更新配置需要重启Proxy •通过DistSQL维护存储资源 •通过DistSQL管理规则 •只有一个server.yaml文件 •通过SQL客户端查询规则 •修改配置不需要文件权限 •更新配置不需要重启Proxy 04 04