
分布式
文章平均质量分 95
皮皮皮的代码
一点点来
展开
-
限流-滑动窗口
1. 背景1.1 为什么需要限流大量正常用户高频访问导致服务器宕机 恶意用户高频访问导致服务器宕机 网页爬虫 ,对于这些情况我们需要对用户的访问进行限流访问2. 介绍目前主流的限流算法:令牌、漏桶、滑动窗口。Nginx都实现了漏桶算法,Springcloud Gateway和Guava Ratelimiter实现了令牌桶,阿里的 Sentinel实现了滑动窗口。2.1 滑动窗口2.1.1 为什么引入滑动窗口固定窗口可能遇到的问题 限流不均匀 两倍的配置速率问题原创 2021-01-04 17:25:52 · 4538 阅读 · 0 评论 -
分布式-多级缓存
1. 介绍1.1 简介JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操作。1.2 特性通过统一的API访问Cache系统 通过注解实现声明式的方法缓存,支持TTL和两级缓存 通过注解创建并配置Cache实例 针对所有Cache实例和方法缓存的自动统计 Key的生成策略和Value的序列化策略是可以原创 2021-05-19 16:43:07 · 1655 阅读 · 0 评论 -
分布式事务-Seata
1. 介绍2. 源码3. 实战4. FAQ5. 参考资料【springboot集成分布式事务Seata】【Seata中文官网】原创 2021-04-18 23:32:04 · 2327 阅读 · 1 评论 -
分布式事务-基础
1. 介绍1.1 什么是SeataSeata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式。1.2 事务模式1.2.1 AT1.2.2 TCC1.2.3 SAGA1.2.4 XA2. 源码3. 实战4. FAQ5. 参考资料【springboot集成分布式事务Seata】【Seata中文官网】...原创 2021-04-15 11:46:25 · 201 阅读 · 0 评论 -
分布式-分布式ID之Snowflake(雪花算法)
1. 背景在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。(1)业务系统对分布式ID有哪些诉求全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求; 趋势递增:在MySQL InnoDB引擎中使用的是聚原创 2020-10-20 00:13:02 · 1431 阅读 · 0 评论 -
分布式- Mysql + Mongo多数据源的分布式事务回滚
1. XA两阶段提交模型如上图,XA规范实现的两阶段提交流程:(下面全部翻译自XA规范原文)阶段1: TM要求所有RMs准备提交(或准备)事务分支。这询问RM是否能够保证提交事务分支的能力。RM可能会查询该RM内部的其他实例。CRM被要求准备它们创建的事务分支,将prepare请求发送到远程站点并接收结果。在返回失败并回滚其工作之后,RM可以丢弃事务分支的信息。阶段2: TM根据实际情况向所有RMs发出提交或回滚事务分支的请求。CRM被要求提交或回滚它们创建的事务分支,向远程站点原创 2020-07-27 23:35:27 · 3134 阅读 · 5 评论 -
分布式-如何保证缓存与数据库的双写一致性
1. 双写一致性问题分布式缓存涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题。2. 双写一致性的要求缓存不能读到脏数据 缓存可能会读到过期数据,但要在可容忍时间内实现最终一致 这个可容忍时间尽可能的小要想同时满足上面三条,可以采用读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况。但是,串行化之后,就会导致系统的吞吐量会大幅度的降低,要用比正常情况下多几倍的机器去支撑线上请求。3. 更新策略导致的问题(1)为什么不是更新缓原创 2020-08-23 16:11:25 · 341 阅读 · 0 评论