微服务场景下的数据一致性解决方案 - 殷湘和平统一 微服务场景下的数据一致性解决方案 殷湘 华为PaaS微服务架构师 开源能力中心 大纲 •离 数据一致性的起因 •合 数据一致性的解决方案 •断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 C1 • 1987年Hector & Kenneth 发表论文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Saga transact transact transact B C A Saga compensate compensate 和平统一 减少业务代码集成/运维难度 剥离业务与数据一致性复杂度 和平:低侵入 让运维监控更加简单 可视化事务、调用链 统一:集中式 无状态、可集群、可分片 Event Sourcing架构 高可用 系统架构 – 基于图形 requests0 码力 | 31 页 | 4.28 MB | 1 年前3
Apache ShardingSphere 中文文档 5.1.1平分片和读写分离联合使用,能够更加有效的提升系统性能。 4.5.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。 高可用是现代系统的最基本诉求,作为系统基石的数据库,对于高可用的要求也是必不可少的。 在存算分离的分布式数据库体系中,存储节点和计算节点的高可用方案是不同的。对于有状态的存储节 点来说,需要其自身具备数据一致性同步、探活、主节点选举等能力;对于无状态的计算节点来说,需要 感知存储节点的变化的同时,还需要独立架设负载均衡器,并具备服务发现和请求分发的能力。 Apache ShardingSphere 数据读取配置 output 数据写入配置 stream_channel 数据通道配置 completion_detector 作业完成检测算法配置 data_consistency_checker 数据一致性校验算法配置 示例 Sharding Table Rule SHOW SHARDING TABLE RULES mysql> SHOW SHARDING TABLE RULES; +--0 码力 | 409 页 | 4.47 MB | 1 年前3
Apache ShardingSphere 中文文档 5.1.0平分片和读写分离联合使用,能够更加有效的提升系统性能。 4.5.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。 高可用是现代系统的最基本诉求,作为系统基石的数据库,对于高可用的要求也是必不可少的。 在存算分离的分布式数据库体系中,存储节点和计算节点的高可用方案是不同的。对于有状态的存储节 点来说,需要其自身具备数据一致性同步、探活、主节点选举等能力;对于无状态的计算节点来说,需要 感知存储节点的变化的同时,还需要独立架设负载均衡器,并具备服务发现和请求分发的能力。 Apache ShardingSphere 数据读取配置 output 数据写入配置 stream_channel 数据通道配置 completion_detector 作业完成检测算法配置 data_consistency_checker 数据一致性校验算法配置 示例 Sharding Table Rule SHOW SHARDING TABLE RULES mysql> SHOW SHARDING TABLE RULES; +--0 码力 | 406 页 | 4.40 MB | 1 年前3
Apache ShardingSphere 中文文档 5.1.2平分片和读写分离联合使用,能够更加有效的提升系统性能。 4.5.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。 高可用是现代系统的最基本诉求,作为系统基石的数据库,对于高可用的要求也是必不可少的。 在存算分离的分布式数据库体系中,存储节点和计算节点的高可用方案是不同的。对于有状态的存储节 点来说,需要其自身具备数据一致性同步、探活、主节点选举等能力;对于无状态的计算节点来说,需要 感知存储节点的变化的同时,还需要独立架设负载均衡器,并具备服务发现和请求分发的能力。 Apache ShardingSphere 数据读取配置 output 数据写入配置 stream_channel 数据通道配置 completion_detector 作业完成检测算法配置 data_consistency_checker 数据一致性校验算法配置 示例 Sharding Table Rule SHOW SHARDING TABLE RULES mysql> SHOW SHARDING TABLE RULES; +--0 码力 | 446 页 | 4.67 MB | 1 年前3
Apache ShardingSphere 中文文档 5.0.0平分片和读写分离联合使用,能够更加有效的提升系统性能。 4.4.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。 query (?) 属 性 每个物理数据库为每次查询分配的最大连接数量。默认值: 1 c heck.table.metadata.enabled (?) 属 性 是否在启动时检查分表元数据一致性,默认值: false4.0.0‐RC2 版本添加 名称 类型 说明 id 属性 Spring Bean Id 移除任务,xx:任务 id drop scaling 1234 reset scaling xx 重置任务进度,xx:任务 id reset scaling 1234 check scaling xx 数据一致性校验,使用 server.yaml 里的校验算法,xx:任务 id check scaling 1234 show scaling check algorithms 展示可用的一致性校验算法 0 码力 | 385 页 | 4.26 MB | 1 年前3
Apache ShardingSphere 中文文档 5.4.1三种模式中,选择适合自己的分布式事务 解决方案。 ShardingSphere XA 事务使用场景 对于 XA 事务,提供了分布式环境下,对数据强一致性的保证。但是由于存在同步阻塞问题,对性能会有 一定影响。适用于对数据一致性要求非常高且对并发性能要求不是很高的业务场景。 ShardingSphere BASE 事务使用场景 对于 BASE 事务,提供了分布式环境下,对数据最终一致性的保证。由于在整个事务过程中,不会像 ShardingSphere LOCAL 事务使用场景 对于 LOCAL 事务,在分布式环境下,不保证各个数据库节点之间数据的一致性和隔离性,需要业务方自 行处理可能出现的不一致问题。适用于用户希望自行处理分布式环境下数据一致性问题的业务场景。 8.2.6 相关参考 • 分布式事务的 YAML 配置 8.2. 分布式事务 33 Apache ShardingSphere document 8.2.7 核心概念 Apache ShardingSphere document 8.3.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。0 码力 | 530 页 | 4.49 MB | 1 年前3
Apache ShardingSphere 中文文档 5.3.2三种模式中,选择适合自己的分布式事务 解决方案。 ShardingSphere XA 事务使用场景 对于 XA 事务,提供了分布式环境下,对数据强一致性的保证。但是由于存在同步阻塞问题,对性能会有 一定影响。适用于对数据一致性要求非常高且对并发性能要求不是很高的业务场景。 ShardingSphere BASE 事务使用场景 对于 BASE 事务,提供了分布式环境下,对数据最终一致性的保证。由于在整个事务过程中,不会像 ShardingSphere LOCAL 事务使用场景 对于 LOCAL 事务,在分布式环境下,不保证各个数据库节点之间数据的一致性和隔离性,需要业务方自 行处理可能出现的不一致问题。适用于用户希望自行处理分布式环境下数据一致性问题的业务场景。 8.2.6 相关参考 • 分布式事务的 YAML 配置 8.2. 分布式事务 33 Apache ShardingSphere document 8.2.7 核心概念 Apache ShardingSphere document 8.3.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。0 码力 | 508 页 | 4.44 MB | 1 年前3
Apache ShardingSphere v5.5.0 中文文档三种模式中,选择适合自己的分布式事务 解决方案。 ShardingSphere XA 事务使用场景 对于 XA 事务,提供了分布式环境下,对数据强一致性的保证。但是由于存在同步阻塞问题,对性能会有 一定影响。适用于对数据一致性要求非常高且对并发性能要求不是很高的业务场景。 ShardingSphere BASE 事务使用场景 对于 BASE 事务,提供了分布式环境下,对数据最终一致性的保证。由于在整个事务过程中,不会像 ShardingSphere LOCAL 事务使用场景 对于 LOCAL 事务,在分布式环境下,不保证各个数据库节点之间数据的一致性和隔离性,需要业务方自 行处理可能出现的不一致问题。适用于用户希望自行处理分布式环境下数据一致性问题的业务场景。 8.2.6 相关参考 • 分布式事务的 YAML 配置 8.2. 分布式事务 33 Apache ShardingSphere document 8.2.7 核心概念 Apache ShardingSphere document 8.3.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。0 码力 | 557 页 | 4.61 MB | 1 年前3
华为微服务框架ServiceCombJava/Go 微服务框架 • 提供微服务注册发现以及限流降级,容错熔断等治理功能 • Service Center • 高性能,高可用服务注册中心 • Saga • 微服务数据一致性问题解决方案 • 提供一个集中式的事务协调器,协调微服务乊间的事务,保证事务最终一致性 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C commit rollback 2018 Building Microservice NO.1 深圳站: Cloud Native 架构下的 K8S 和微服务实践 微服务数据一致性问题 A B C 2018 Building Microservice NO0 码力 | 28 页 | 1.53 MB | 1 年前3
Apache ShardingSphere 中文文档 5.2.0三种模式中,选择适合自己的分布式事务 解决方案。 ShardingSphere XA 事务使用场景 对于 XA 事务,提供了分布式环境下,对数据强一致性的保证。但是由于存在同步阻塞问题,对性能会有 一定影响。适用于对数据一致性要求非常高且对并发性能要求不是很高的业务场景。 ShardingSphere BASE 事务使用场景 对于 BASE 事务,提供了分布式环境下,对数据最终一致性的保证。由于在整个事务过程中,不会像 ShardingSphere LOCAL 事务使用场景 对于 LOCAL 事务,在分布式环境下,不保证各个数据库节点之间数据的一致性和隔离性,需要业务方自 行处理可能出现的不一致问题。适用于用户希望自行处理分布式环境下数据一致性问题的业务场景。 3.2.6 相关参考 • 分布式事务的 YAML 配置 3.2. 分布式事务 28 Apache ShardingSphere document, v5.2.0 3.2 平分片和读写分离联合使用,能够更加有效的提升系统性能。 3.3.2 挑战 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题。这包括多个主库之 间的数据一致性,以及主库与从库之间的数据一致性的问题。并且,读写分离也带来了与数据分片同样 的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。下图展现了将数据分 片与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。0 码力 | 449 页 | 5.85 MB | 1 年前3
共 87 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9













