前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式事务的通用原则

分布式事务的通用原则

作者头像
春哥大魔王
发布2019-09-24 14:50:47
5150
发布2019-09-24 14:50:47
举报

周末来篇短的。

当我们采用分布式来提高系统性能时,首先面对的问题是面对和处理分布式事务。

分布式系统处理数据:

  • 数据分区:把数据块放在不同的服务器上,采用一致性hash;
  • 数据镜像:让所有服务器都有相同的数据,提供相同的服务;

第一种问题,单台机器出现问题,会存在数据丢失的问题。

数据服务的高可用只能通过第二种方式完成数据冗余存储。存储节点越多,跨服务的事务数据一致性就越复杂。

数据不丢失,通过冗余手段,数据的分区都需要数据冗余处理。

这就是数据副本:出现某个节点的数据丢失时可以从副本读到,数据副本是分布式系统解决数据丢失的唯一手段。

结论:

  • 数据高可用,需要写多份数据;
  • 多份数据存在数据一致性问题;
  • 数据一致性引发性能问题;

一致性模型:

  • 弱一致性:写入一个新值,读操作在数据副本上可能读出来,也可能读不出来。
  • 最终一致性:写入新值,可能读不出来,在某个时间窗口保证能读出来。
  • 强一致性:数据一旦写入,任意副本都能读到新值。

前两种一般通过异步方式,最后一种是同步方式。异步代表更好的性能,带来了复杂性。同步代表了简单,但是要考虑性能。

方式:

  • M/S方式,读写分离,主从;
  • M/M方式,多个主节点,都做读写;
  • 2PC/3PC,阶段提交,每个节点都知道自己成功失败,无法知道其他节点状态,需要引入一个协调者统一掌控所有节点的操作结果,最终指示节点是否把操作结果进行真正的提交。
  • Paxos算法;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档