没有合适的资源?快使用搜索试试~ 我知道了~
首页分布式面试题(含解答)1.doc
资源详情
资源评论
资源推荐

分布式事务
指事务的每个操作步骤都位于不同的节点上,需要保证事务的 AICD
特性。
1. 产生原因
数据库分库分表;
SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不
同的节点上。
2. 应用场景
下单:减少库存同时更新订单状态。库存和订单不在不同一个数据库,
因此涉及分布式事务。
支付:买家账户扣款同时卖家账户入账。买家和卖家账户信息不在同
一个数据库,因此涉及分布式事务。
3. 解决方案
3.1 两阶段提交协议
两阶段提交协议可以很好得解决分布式事务问题,它可以使用 XA 来
实现,XA 它包含两个部分:事务管理器和本地资源管理器。其中本地
资源管理器往往由数据库实现,比如 Oracle、DB2 这些商业数据库

都实现了 XA 接口,而事务管理器作为全局的协调者,负责各个本地
资源的提交和回滚。
3.2 消息中间件
消息中间件也可称作消息系统 (MQ),它本质上是一个暂存转发消息的
一个中间件。在分布式应用当中,我们可以把一个业务操作转换成一
个消息,比如支付宝的余额转如余额宝操作,支付宝系统执行减少余
额操作之后向消息系统发一个消息,余额宝系统订阅这条消息然后进
行增加账户金额操作。
3.2.1 消息处理模型
点对点
.
发布/订阅

.
3.2.2 消息的可靠性
消息的发送端的可靠性:发送端完成操作后一定能将消息成功发送到
消息系统。
消息的接收端的可靠性:接收端仅且能够从消息中间件成功消费一次
消息。
发送端的可靠性
在本地数据建一张消息表,将消息数据与业务数据保存在同一数据库
实例里,这样就可以利用本地数据库的事务机制。事务提交成功后,

将消息表中的消息转移到消息中间件,若转移消息成功则删除消息表
中的数据,否则继续重传。
接收端的可靠性
保证接收端处理消息的业务逻辑具有幂等性:只要具有幂等性,那么
消费多少次消息,最后处理的结果都是一样的。
保证消息具有唯一编号,并使用一张日志表来记录已经消费的消息编
号。
负载均衡的算法与实现
1. 算法
1.1 轮询(Round Robin)
轮询算法把每个请求轮流发送到每个服务器上。下图中,一共有 6 个
客户端产生了 6 个请求,这 6 个请求按 (1, 2, 3, 4, 5, 6) 的顺序发
送。最后,(1, 3, 5) 的请求会被发送到服务器 1,(2, 4, 6) 的请求会
被发送到服务器 2。

.
该算法比较适合每个服务器的性能差不多的场景,如果有性能存在差
异的情况下,那么性能较差的服务器可能无法承担多大的负载。下图
中,服务器 2 的性能比服务器 1 差,那么服务器 2 可能无法承担多
大的负载。
剩余29页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0