失效链接处理 |
分布式面试题(附答案)PDF 下载
本站整理下载:
提取码:d2m5
相关截图:
主要内容:
指事务的每个操作步骤都位于不同的节点上,需要保证事务的 AICD 特性。
1. 产生原因
数据库分库分表;
SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不同的节点上。
2. 应用场景
下单:减少库存同时更新订单状态。库存和订单不在不同一个数据库,因此涉及分布式事务。
支付:买家账户扣款同时卖家账户入账。买家和卖家账户信息不在同一个数据库,因此涉及分布式事务。
3. 解决方案
3.1 两阶段提交协议
两阶段提交协议可以很好得解决分布式事务问题,它可以使用 XA 来实现,XA 它包含两个部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如 Oracle、DB2 这些商业数据库都实现了 XA 接口,而事务管理器作为全局的协调者,负责各个本地资源的提交和回滚。
3.2 消息中间件
消息中间件也可称作消息系统 (MQ),它本质上是一个暂存转发消息的一个中间件。在分布式应用当中,我们可以把一个业务操作转换成一个消息,比如支付宝的余额转如余额宝操作,支付宝系统执行减少余额操作之后向消息系统发一个消息,余额宝系统订阅这条消息然后进行增加账户金额操作。
3.2.1 消息处理模型
点对点
.
发布/订阅
.
3.2.2 消息的可靠性
消息的发送端的可靠性:发送端完成操作后一定能将消息成功发送到消息系统。
消息的接收端的可靠性:接收端仅且能够从消息中间件成功消费一次消息。
发送端的可靠性
在本地数据建一张消息表,将消息数据与业务数据保存在同一数据库实例里,这样就可以利用本地数据库的事务机制。事务提交成功后,将消息表中的消息转移到消息中间件,若转移消息成功则删除消息表中的数据,否则继续重传。
|