zoukankan      html  css  js  c++  java
  • 限流, 熔断,降级笔记

    数据库主从复制包括四种:

    一主一从

    一主多从

    互为主从

    级联主从

    主从复制会有延迟, 其实现方式如下, 首先主库要开启binary log, 从库开启异步IO线程同步主库日志到本地Relay日志, 开启另外线程轮询relay log, 经筛选的日志同步到从库中, 鉴于主库日志增长速度,网络,IO等原因, 从库可能数据同步有延迟.

      

    CAP理论: 互联网公司更多的是追求AP, 牺牲C,来提高系统响应时间, 它们追求的是最终一致性. 

    分布式事务: 由X/Open公司提供的DTP标准(分布式事务协议), 

    JTA: JAVA版的DTP标准, 主要包括TM,AP,XA组成. 其中TM是核心(分布式事务管理组件)

    目前开源的分布式事务主要有Atomikos/JoTM , 

    分布式事务效率不高, 目前互联网公司大多避免使用, 或者绕道使用, 而是追求最终一致性, 

    Base理论: 是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写, BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性

    软服务:对于未知状态提供两种方式: 

    1. 最大化重试

    2. 衰减重试: 15S->3m->10m->30m->1h->2h->6h->15h

    弱一致性可以由消息队列辅助实现.

    消息队列实现时要主语幂等性, 

    幂等性的实现方式: 

    1. 数据库加上唯一性约束

    2. 传参是带上token,并判断token是否重复.

    3. 使用状态机, 即每次更新时检查状态机状态.

    Openrestry+lua+DB实现缓存, 限流, 熔断,降级等功能.

    熔断是限流的一种方式. 

    常见的限流算法有:

    漏桶算法: 无预留容量, 能保证输出数据的稳定, 容量慢了之后直接抛弃

    令牌桶算法:有预留容量, 可以容纳一定的突发容量

    使用方式:

    1. 使用Guava库, 直接使用两种限流算法

    2. 可以由第三方中间件实现, 如Redission,(其核心是由lua脚本模拟实现)

    其他限流措施包括: SQL连接池, 线程池等

    线程池四种拒绝策略: Abort, Discard,DiscardOldest , Caller run

  • 相关阅读:
    并查集的来龙去脉
    改变像素
    PHP自学之路-----javascript基础入门
    推荐管理类图书
    ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
    PHP文件包含漏洞剖析
    文件上传漏洞总结
    服务器软件解析漏洞总结
    JAVA环境变量配置
    Python2.x与Python3.x的区别
  • 原文地址:https://www.cnblogs.com/snow-man/p/9837867.html
Copyright © 2011-2022 走看看