zoukankan      html  css  js  c++  java
  • 解决分布式一致性问题 学习2

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

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

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

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

      3.缓存一致性模式

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

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

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

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

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

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

      

  • 相关阅读:
    firewalld防火墙
    MariaDB
    if,for,while
    自定义带图标input样式
    display:inline-block 和 float 水平排列区别?
    css中块元素和行内元素区别
    margin-top 为什么会影响父元素的 margin-top
    vertical-align 的理解
    什么是HTTP协议?
    Grunt 自动编译 Less 文件配置
  • 原文地址:https://www.cnblogs.com/holyshengjie/p/8758858.html
Copyright © 2011-2022 走看看