互联网架构中海量数据一致性

2019-07-29  本文已影响0人  小螺丝钉cici

1.数据不一致性产生原因
2.基于分布式事务彻底解决数据库数据一致性 (XA/2PC/BASE/TCC/Saga/MQ/同步场景/异步 场景等实践)
3.分布式缓存和数据库数据一致性实践(是否高可用 /跨机房等架构实践和背后哲学思考)
原作者:孙玄

1.数据不一致性产生原因

1.1数据一致性的定义:
任何人,任何时间,任何地点,任何接入方式,任何服务,数据都是一致的

1.2数据不一致性产生的原因
a.数据分散在多处 「多个DB,DB和缓存」
b.二手交易平台案例「用户,商品,交易等功能」

image.png

2.基于分布式事务彻底解决数据库数据一致性 (XA/2PC/BASE/TCC/Saga/MQ/同步场景/异步 场景等实践)
案例:以电商平台购买商品 下单->减库存->支付

image.png

2.1分布式事务分类:

a.刚性分布式事务(强一致性,XA模型)
b.柔性分布式事务(最终一致性,CAP/BASE理论)

2.1.1刚性分布式事务

a.满足传统事务特性
(ACID (Atomicity-原子性、Consistency-一致性、Isolation-隔离性、Durability-持久性)

b.XA模型
(1).XA 是 X (Dpen CAE Specification (Distributed Transaction Processing)模型中定义,XA 规范由 AP, RM, TM 组成
(2)其中应用程序(Application Program,简称 AP): AP 定义事务边界(定义事务开始和结東)并访问事务边界内的资源
(3)资源管理器 RM(Resource Manager,简称 RM): 管理计算机共享的资源,资源即数据库等
(4)事务管理器(Transaction Manager,简称 TM):负责管理全局事务,分配事务唯一标识,监控事务的执行进度,并负责事务的提交、回滚、失败恢复等

image.png image.png

二次提交

2.1.2 柔性分布式事务

CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

(1)CAP 分布式环境下P一定需要,CA权衡折中
(2)BASE理论 基本可用/柔性状态/最终 一致性
(3)架构思考
柔性事务是对XA协议的妥协,它通过降低强一致性要求,从而降低数据化库资源锁定时间,提升可用性
(4)典型架构实现
TCC模型/Saga模型

image.png

备注:

image.png
2.1.3 如何实战柔性分布式事务

通用处理思路:
本地事务-》短事务
分布式事务-》长事务
转变成多个短事务

业务场景
异步场景:基于 MQ 消息驱动分布事务
同步场景:基于异步补偿分布

案例:异步场景-商品交易 下单-支付

image.png image.png image.png

方案一:业务方提供本地操作成功回查功能

image.png

优点:通用
缺点:
业务万需提供回查接口,対业务侵入大
发送消息非幂等
消费端需要处理幂等

方案二:本地事务消息表

image.png image.png

实际异步场景使用较多的是方案二:本地事务消息表

案例:同步场景分布式事务设计

同步场景-首页推荐商品列表/商品信息/用户信息/社交信息
购买商品:下单-> A ; 减库存-> B ;支付-> C

image.png

分布式缓存和数据库数据一致性实践

缓存作用:1.降低请求的响应时间,提升用户体验:2.减少对固化存储的读压力
缓存适合场景:

缓存不适合场景:频繁更新 / 读少写多

image.png image.png image.png
上一篇下一篇

猜你喜欢

热点阅读