解决分布式一致性问题 学习2

  1.保证最终一致性的模式

  查询模式;补偿模式,根据发起行驶分为 自动回复、通知运营、技术运营 形式;一步确保模式;定期校对模式,其中一个关键就是分布式系统需要有一个自始至终唯一的ID,生成ID有两种方法,为 持久型和时间型;

  2.可靠消息模式-- 分为 消息的可靠发送和消息处理的幂等性。

  保证操作的幂等性的常用方法:使用数据库表的唯一键进行滤重,拒绝重复的请求;使用分布式表对请求进行滤重;使用状态流转的方向性来滤重,通常使用数据库的行级锁来实现;根据业务的特点,操作本身就是幂等的,例如,删除一个资源、增加一个资源、获得一个资源等。

  3.缓存一致性模式

  互联网经典做法:如果性能要求不是很高,则尽量使用分布式缓存,而不要使用本地换成。

          写缓存是数据一定要完整,如果缓存数据的一部分有效,另一部分无效,则宁可在需要时回 源数据库,也不要把部分数据放入缓存中。

          使用缓存牺牲了一致性,未来提高性能,数据库与缓存只需要保持弱一致性,而不需要保持强一致性,否则违背了使用缓存的初衷。

          读顺序是先读缓存,后读数据库;写顺序要先写数据库,后写缓存。

  4.微服务的交互模式--同步调用和接口异步调用、消息队列异步处理。

  同步调用适用于大规模、高并发的短小操作,而不适用于后端负载较高的场景,eg,几乎所有JDBC的实现完全适用BIO同步阻塞模式。原则:从业务功能看,尽量使用异步来替换同步;在技术和架构的角度看,能使用同步解决的,不要引入异步。

  

原文地址:https://www.cnblogs.com/holyshengjie/p/8758858.html