auto commit

This commit is contained in:
CyC2018 2018-03-27 16:45:59 +08:00
parent ea6ec0d38e
commit 98a00895e0

View File

@ -29,7 +29,7 @@
分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份(高可用性)。
至于分布式计算,就是将一个大的计算任务分解成小任务分配到多节点上去执行再汇总每个小任务的执行结果得到最终结果。MapReduce 是分布式计算最好例子。
至于分布式计算,就是将一个大的计算任务分解成小任务分配到多节点上去执行再汇总每个小任务的执行结果得到最终结果。MapReduce 是分布式计算最好例子。
# 二、分布式事务
@ -42,16 +42,16 @@
## 应用场景
- 下单:减少库存、更新订单状态。库存和订单不在同一个数据库,因此涉及分布式事务。
- 支付:买家账户扣款、卖家账户入账。买家和卖家账户信息不在同一个数据库,因此涉及分布式事务。
- 下单:减少库存、更新订单状态。库存和订单如果不在同一个数据库,就涉及分布式事务。
- 支付:买家账户扣款、卖家账户入账。买家和卖家账户信息如果不在同一个数据库,就涉及分布式事务。
## 解决方案
### 1. 两阶段提交协议
[两阶段提交](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E4%B8%80%E8%87%B4%E6%80%A7%E5%8D%8F%E8%AE%AE.md#%E4%B8%A4%E9%98%B6%E6%AE%B5%E6%8F%90%E4%BA%A4%E5%8D%8F%E8%AE%AE)
> [两阶段提交](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E4%B8%80%E8%87%B4%E6%80%A7%E5%8D%8F%E8%AE%AE.md#%E4%B8%A4%E9%98%B6%E6%AE%B5%E6%8F%90%E4%BA%A4%E5%8D%8F%E8%AE%AE)
两阶段提交协议可以很好得解决分布式事务问题,它可以使用 XA 来实现XA 它包含两个部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如 Oracle、DB2 这些商业数据库都实现了 XA 接口;而事务管理器作为全局的协调者,负责各个本地资源的提交和回滚。
两阶段提交协议可以很好地解决分布式事务问题。它可以使用 XA 来实现XA 包含两个部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如 Oracle、DB2 这些商业数据库都实现了 XA 接口;而事务管理器作为全局的协调者,负责各个本地资源的提交和回滚。
### 2. 消息中间件
@ -59,25 +59,25 @@
#### 2.1 消息处理模型
**(一)点对点**
(一)点对点
<div align="center"> <img src="../pics//96b63e13-e2d8-4ddb-9aa1-a38959ca96e5.jpg" width="600"/> </div><br>
**(二)发布/订阅**
(二)发布/订阅
<div align="center"> <img src="../pics//654acfed-a6a5-4fc7-8f40-3fdcae57bae8.jpg" width="700"/> </div><br>
#### 2.2 消息的可靠性
消息的发送端的可靠性:发送端完成操作后一定能将消息成功发送到消息系统。
(一)发送端的可靠性
消息的接收端的可靠性:接收端仅且能够从消息中间件成功消费一次消息。
**(一)发送端的可靠性**
发送端完成操作后一定能将消息成功发送到消息系统。
在本地数据建一张消息表,将消息数据与业务数据保存在同一数据库实例里,这样就可以利用本地数据库的事务机制。事务提交成功后,将消息表中的消息转移到消息中间件,若转移消息成功则删除消息表中的数据,否则继续重传。
**(二)接收端的可靠性**
(二)接收端的可靠性
接收端仅且能够从消息中间件成功消费一次消息。
保证接收端处理消息的业务逻辑具有幂等性:只要具有幂等性,那么消费多少次消息,最后处理的结果都是一样的。