
分布式系统
文章平均质量分 75
春天的早晨
https://github.com/Allenmcc
展开
-
微服务开发之熔断器
一般在微服架构中,有一个组件角色叫熔断器。顾名思义,熔断器起的作用就是在特定的场景下关掉当前的通路,从而起到保护整个系统的效果。在微服务架构中,一般我们的独立服务是比较多的,每个独立服务之间划分责任边界,并通过约定协议接口来进行通信。当我们的调用链路复杂依赖多时,很可能会发生雪崩效应。假设有这么一个场景,有A, B, C, D四个独立服务,A会依赖B,C,D;当D发生负载过高或网络异常等导致响应过慢或超时时,很可能A会因此堆积过多的等待链接,从而导致A的状态也转为异常,后面依赖到A的其他服务跟着发生链式转载 2021-05-17 17:36:21 · 409 阅读 · 0 评论 -
分布式ID
文章目录一、为什么要用分布式ID?1、什么是分布式ID?2、那么分布式ID需要满足那些条件?二、 分布式ID都有哪些生成方式?1、基于UUID优点缺点2、基于数据库自增ID优点缺点3、基于数据库集群模式优点缺点4、基于数据库的号段模式5、基于Redis模式6、基于雪花算法(Snowflake)模式7、美团(Leaf)号段模式snowflake模式优点缺点双buffer优化总结一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什转载 2021-05-04 17:49:02 · 234 阅读 · 0 评论 -
Redis 分布式锁
文章目录什么是分布式锁实现锁的命令怎么释放锁代码实现分布式锁的缺陷客户端长时间阻塞导致锁失效问题Redis 服务器时钟漂移问题单点实例安全问题RedLock 算法结论什么是分布式锁说到 Redis,我们第一想到的功能就是可以缓存数据,除此之外,Redis 因为单进程、性能高的特点,它还经常被用于做分布式锁。锁我们都知道,在程序中的作用就是同步工具,保证共享资源在同一时刻只能被一个线程访问,Java 中的锁我们都很熟悉了,像synchronized 、Lock都是我们经常使用的,但是 Java 的锁只能转载 2021-04-22 18:27:09 · 237 阅读 · 0 评论 -
Zookeeper工作原理(详细)
文章目录1、Zookeeper的角色2、Zookeeper 的读写机制3、Zookeeper 的保证4、Zookeeper节点数据操作流程5、Zookeeper leader 选举6、zxid7、Zookeeper工作原理8、数据一致性与paxos 算法9、Observer10、 为什么zookeeper集群的数目,一般为奇数个?12、Zookeeper 的节点1、Zookeeper的角色领导者(leader),负责进行投票的发起和决议,更新系统状态学习者(learner),包括跟随者(follow转载 2021-04-11 21:23:18 · 932 阅读 · 0 评论 -
分布式服务限流
文章目录本章目标自定义注解切面LimitInterceptor注解使用单机版中我们了解到 AtomicInteger、RateLimiter、Semaphore 这几种解决方案,但它们也仅仅是单机的解决手段,在集群环境下就透心凉了,后面又讲述了 Nginx 的限流手段,可它又属于网关层面的策略之一,并不能解决所有问题。例如供短信接口,你无法保证消费方是否会做好限流控制,所以自己在应用层实现限流还是很有必要的。本章目标利用 自定义注解、Spring Aop、Redis Cache 实现分布式限流自定义转载 2021-04-06 17:05:59 · 220 阅读 · 0 评论 -
CAP原则
什么是CAP原则分布式系统只能同时满足CAP中两者的原则.C.一致性分布式系统中的所有数据备份,保持一致.A.可用性集群整体总是能在合理时间内给客户端回应P.分区容错性网络无法通信时,是否可以容忍恢复通信的时限,提供可用或者一致性的服务参考:https://www.ixigua.com/6850363333741117963?wid_try=1...转载 2021-04-04 22:53:22 · 162 阅读 · 0 评论 -
漫谈分布式一致性问题2PC 3PC
文章目录一.序言二.分布式一致性问题一.序言见过很多同学(也包括我)在学习分布式一致性的时候,喜欢直接去撸Paxos和raft这种强一致协议。然后往往会有下面这些结果:1.看不懂2.(以为)看懂了,过两天忘了3.看懂了,理解了,但是不知道怎么用起来4.看懂了,用起来了,还是出现了不一致的情况(典型的比如用ZK做master选举,脑裂了),迷茫了到底什么是分布式一致性问题?二.分布式...转载 2019-09-15 10:37:47 · 220 阅读 · 0 评论 -
分布式锁的几种使用方式(redis、zookeeper、数据库)
问题Q:一个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费synchronizedlockdb lockQ:两个业务服务器,一个数据库,操作:查询用户当前余额,扣除当前余额的3%作为手续费分布式锁我们需要怎么样的分布式锁?可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。这把锁要是一把可重入锁(避免死锁)这把锁...转载 2019-04-06 16:23:01 · 493 阅读 · 0 评论 -
布隆过滤器
文章目录什么是布隆过滤器场景实现原理HashMap 的问题布隆过滤器数据结构支持删除么如何选择哈希函数个数和布隆过滤器长度最佳实践实现什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构...转载 2019-03-10 22:22:58 · 222 阅读 · 0 评论 -
一致性Hash原理
文章目录前言一致性Hash概述一致性hash的特性虚拟节点均匀一致性hash总结前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会...转载 2019-03-10 20:05:14 · 2408 阅读 · 0 评论