孟浩然-Apache ShardingSphere 架构解析&应用实践Apache ShardingSphere 架构解析与应用实践 孟浩然 2021/12/11 01 孟浩然 SphereEx 高级研发工程师 Apache ShardingSphere PMC 曾就职京东科技,负责数据库产品研发,热爱开源,关注数据库生态,目前就职 SphereEx , 专 注于 Apache ShardingSphere 分布式数据库中间件研发以及开源社区建设 1 1. Apache ShardingSphere 5.0.0 架构解析 2. 5.0.0 应用实践 3. Database Plus 解决方案 目录 产 品 定 位 l 构建异构数据库的上层标准和生态 l 提供精准化和差异化的能力 产 品 定 位 4.X 5.X 定位 分 库 分 表 中 间 件 分 布 式 数 据 库 生 态 系 统 功能 提 供 基 础 功 能 提 供 基 础 基于扩展点,ShardingSphere 默认 实现了数据分片、读写分离、数据加 密、影子库压测、高可用等功能; 1. Apache ShardingSphere 5.0.0 架构解析 2. 5.0.0 应用实践 3. Database Plus 解决方案 目录 灵活可扩展 覆盖开发/测试/生产部署需求 运 行 模 式 D i s t S Q L 标准化 体系化 功能特色 • RDL(Resource0 码力 | 31 页 | 2.36 MB | 1 年前3
Apache ShardingSphere 中文文档 5.2.0元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。 适用于工程师在本地搭建 Apache ShardingSphere 环境。 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。它能够提 ShardingSphere 提供了多样化的功能,涵盖范围从数据库内核、数据库分布式到贴近数据库上 层的应用,为用户提供了大量的功能池。 功能并无边界,只要满足数据库服务和生态的共性需求即可,期待更多的开源工程师参与 Apache Shard‐ ingSphere 社区,提供新颖思路和令人兴奋的功能。 3.1 数据分片 3.1.1 背景 传统的将数据集中存储至单一节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足海量 据分片的标准解决方案。 3.1.2 挑战 虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也 引入了新的问题。 面对如此散乱的分片之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其 中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的子表中获取。 另一个挑战则是,能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确0 码力 | 449 页 | 5.85 MB | 1 年前3
Apache ShardingSphere 中文文档 5.4.1元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。 适用于工程师在本地搭建 Apache ShardingSphere 环境。 4.2 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。它能够提 ShardingSphere 提供了多样化的功能,涵盖范围从数据库内核、数据库分布式到贴近数据库上 层的应用,为用户提供了大量的功能池。 功能并无边界,只要满足数据库服务和生态的共性需求即可,期待更多的开源工程师参与 Apache Shard‐ ingSphere 社区,提供新颖思路和令人兴奋的功能。 8.1 数据分片 8.1.1 背景 传统的将数据集中存储至单一节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足海量 据分片的标准解决方案。 8.1.2 挑战 虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也 引入了新的问题。 面对如此散乱的分片之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其 中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的子表中获取。 另一个挑战则是,能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确0 码力 | 530 页 | 4.49 MB | 1 年前3
Apache ShardingSphere 中文文档 5.3.2元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。 适用于工程师在本地搭建 Apache ShardingSphere 环境。 4.2 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。它能够提 ShardingSphere 提供了多样化的功能,涵盖范围从数据库内核、数据库分布式到贴近数据库上 层的应用,为用户提供了大量的功能池。 功能并无边界,只要满足数据库服务和生态的共性需求即可,期待更多的开源工程师参与 Apache Shard‐ ingSphere 社区,提供新颖思路和令人兴奋的功能。 8.1 数据分片 8.1.1 背景 传统的将数据集中存储至单一节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足海量 据分片的标准解决方案。 8.1.2 挑战 虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也 引入了新的问题。 面对如此散乱的分片之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其 中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的子表中获取。 另一个挑战则是,能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确0 码力 | 508 页 | 4.44 MB | 1 年前3
Apache ShardingSphere v5.5.0 中文文档元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。 适用于工程师在本地搭建 Apache ShardingSphere 环境。 4.2 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。它能够提 ShardingSphere 提供了多样化的功能,涵盖范围从数据库内核、数据库分布式到贴近数据库上 层的应用,为用户提供了大量的功能池。 功能并无边界,只要满足数据库服务和生态的共性需求即可,期待更多的开源工程师参与 Apache Shard‐ ingSphere 社区,提供新颖思路和令人兴奋的功能。 8.1 数据分片 8.1.1 背景 传统的将数据集中存储至单一节点的解决方案,在性能、可用性和运维成本这三方面已经难于满足海量 据分片的标准解决方案。 8.1.2 挑战 虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也 引入了新的问题。 面对如此散乱的分片之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其 中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的子表中获取。 另一个挑战则是,能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确0 码力 | 557 页 | 4.61 MB | 1 年前3
Apache ShardingSphere 中文文档 5.1.1ShardingSphere document, v5.1.1 3.2 运行模式 3.2.1 背景 Apache ShardingSphere 是一套完善的产品,使用场景非常广泛。除生产环境的集群部署之外,还为工程 师在开发和自动化测试等场景提供相应的运行模式。Apache ShardingSphere 提供的 3 种运行模式分别 是内存模式、单机模式和集群模式。 3.2.2 内存模式 初始化配置或执行 法将元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。适用于工程师在本地搭建 Apache ShardingSphere 环境。 3.2.4 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。在真实部 ShardingSphere 的特点之一。在使用 4.x 及其之前版本时,开 发者虽然可以像使用原生数据库一样操作数据,但却需要通过本地文件或注册中心配置资源和规则。然 而,操作习惯变更,对于运维工程师并不友好。 DistSQL 让用户可以像操作数据库一样操作 Apache ShardingSphere,使其从面向开发人员的框架和中间 件转变为面向运维人员的数据库产品。 DistSQL 细分为0 码力 | 409 页 | 4.47 MB | 1 年前3
Apache ShardingSphere 中文文档 5.1.0ShardingSphere document, v5.1.0 3.2 运行模式 3.2.1 背景 Apache ShardingSphere 是一套完善的产品,使用场景非常广泛。除生产环境的集群部署之外,还为工程 师在开发和自动化测试等场景提供相应的运行模式。Apache ShardingSphere 提供的 3 种运行模式分别 是内存模式、单机模式和集群模式。 3.2.2 内存模式 初始化配置或执行 法将元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。适用于工程师在本地搭建 Apache ShardingSphere 环境。 3.2.4 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。在真实部 ShardingSphere 的特点之一。在使用 4.x 及其之前版本时,开 发者虽然可以像使用原生数据库一样操作数据,但却需要通过本地文件或注册中心配置资源和规则。然 而,操作习惯变更,对于运维工程师并不友好。 DistSQL 让用户可以像操作数据库一样操作 Apache ShardingSphere,使其从面向开发人员的框架和中间 件转变为面向运维人员的数据库产品。 DistSQL 细分为0 码力 | 406 页 | 4.40 MB | 1 年前3
Apache ShardingSphere 中文文档 5.1.2ShardingSphere document, v5.1.2 3.2 运行模式 3.2.1 背景 Apache ShardingSphere 是一套完善的产品,使用场景非常广泛。除生产环境的集群部署之外,还为工程 师在开发和自动化测试等场景提供相应的运行模式。Apache ShardingSphere 提供的 3 种运行模式分别 是内存模式、单机模式和集群模式。 3.2.2 内存模式 初始化配置或执行 法将元数据同步至多个 Apache ShardingSphere 实例,无 法在集群环境中相互感知。通过某一实例更新元数据之后,会导致其他实例由于获取不到最新的元数据 而产生不一致的错误。适用于工程师在本地搭建 Apache ShardingSphere 环境。 3.2.4 集群模式 提供了多个 Apache ShardingSphere 实例之间的元数据共享和分布式场景下状态协调的能力。在真实部 ShardingSphere 的特点之一。在使用 4.x 及其之前版本时,开 发者虽然可以像使用原生数据库一样操作数据,但却需要通过本地文件或注册中心配置资源和规则。然 而,操作习惯变更,对于运维工程师并不友好。 DistSQL 让用户可以像操作数据库一样操作 Apache ShardingSphere,使其从面向开发人员的框架和中间 件转变为面向运维人员的数据库产品。 DistSQL 细分为0 码力 | 446 页 | 4.67 MB | 1 年前3
Apache ShardingSphere 中文文档 5.0.0ShardingSphere‐Proxy 时,开发者虽然可以像使用数据库一样操作数据,但却需要通过 YAML 文件(或注册中心)配置资源和 规则。然而,YAML 格式的展现形式,以及注册中心动态修改带来的操作习惯变更,对于运维工程师并不 友好。 DistSQL 让用户可以像操作数据库一样操作 Apache ShardingSphere,使其从面向开发人员的框架和中间 件转变为面向运维人员的数据库产品。 DistSQL ShardingSphere 提供了多样化的功能,涵盖范围从数据库内核、数据库分布式到贴近数据库上 层的应用,为用户提供了大量的功能池。 功能并无边界,只要满足数据库服务和生态的共性需求即可,期待更多的开源工程师参与 Apache Shard‐ ingSphere 社区,提供新颖思路和令人兴奋的功能。 4.1 数据库兼容 4.1.1 背景 随着通信技术的革新,全新领域的应用层出不穷,推动和颠覆整个人类社会协作模式的革新。数据存量 据分片的标准解决方案。 4.2.2 挑战 虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也 引入了新的问题。 面对如此散乱的分片之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其 中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的子表中获取。 另一个挑战则是,能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确0 码力 | 385 页 | 4.26 MB | 1 年前3
Apache ShardingSphere 中文文档 5.0.0-alpha表的标准解决方案。 3.1.2 挑战 虽然数据分片解决了性能、可用性以及单点备份恢复等问题,但分布式的架构在获得了收益的同时,也 引入了新的问题。 面对如此散乱的分库分表之后的数据,应用开发工程师和数据库管理员对数据库的操作变得异常繁重就 是其中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的分表中获取。 另一个挑战则是,能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确 Schema 的命令发送至数据库中。 路由引擎的整体结构划分如下图。 3.1. 数据分片 30 Apache ShardingSphere document, v5.0.0-beta 改写引擎 工程师面向逻辑库与逻辑表书写的 SQL,并不能够直接在真实的数据库中执行,SQL 改写用于将逻辑 SQL 改写为在真实数据库中可以正确执行的 SQL。它包括正确性改写和优化改写两部分。 正确性改写 方法将无需取出的数据全部跳过,并不会将其存入内存。 但同时需要注意的是,由于排序的需要,大量的数据仍然需要传输到 ShardingSphere 的内存空间。因此, 采用 LIMIT 这种方式分页,并非最佳实践。由于 LIMIT 并不能通过索引查询数据,因此如果可以保证 ID 的连续性,通过 ID 进行分页是比较好的解决方案,例如: SELECT * FROM t_order WHERE id > 1000000 码力 | 301 页 | 3.44 MB | 1 年前3
共 17 条
- 1
- 2













