分布式知识
文章平均质量分 90
Darren i
这个作者很懒,什么都没留下…
展开
-
Raft共识算法
前提条件Raft不考虑拜庭将军问题,即消息会延迟、丢失但不会错误。Raft的特性Strong leader:在 Raft 中,日志条目(log entries)只从 leader 流向其他服务器。 这简化了复制日志的管理,使得 raft 更容易理解。Leader 选举:Raft 使用随机计时器进行 leader 选举。 这只需在任何一致性算法都需要的心跳(heartbeats)上增加少量机制,同时能够简单快速地解决冲突。成员变更:Raft 使用了一种新的联合一致性方法,其中两个不同配置的大多数在原创 2022-04-02 15:00:46 · 569 阅读 · 0 评论 -
对于高并发的理解及实践方案
首先说一下,当我作为面试官问候选人「对于高并发的理解」时,我觉得「答得不好」的情况分成以下几类:对数据化的指标没有概念:不清楚选择什么样的指标来衡量高并发系统?分不清并发量和QPS,不知道自己系统的总用户量、活跃用户量,平峰和高峰时的QPS和TPS等关键数据。设计过一些高并发方案,但是细节掌握不透彻:讲不出该方案要关注的技术点和可能带来的副作用。比如读性能有瓶颈会引入缓存,但是忽视了缓存命中率、热点key、数据一致性等问题。理解片面,把高并发设计等同于性能优化:大谈并发编程、多级缓存、异步化、水平扩转载 2021-03-26 10:53:06 · 158 阅读 · 0 评论 -
缓存与数据库的一致性:先操作缓存还是先操作数据库?
旁路缓存模式的流程写操作:先更新 DB然后直接删除 cache读操作:从 cache 中读取数据,读取到就直接返回cache中读取不到的话,就从 DB 中读取数据返回数据放到 cache 中。原创 2021-07-01 11:22:49 · 789 阅读 · 0 评论 -
常用限流算法分析
一、计数器(固定窗口)算法计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略。下一个周期开始时,进行清零,重新计数。此算法在单机还是分布式环境下实现都非常简单,使用redis的incr原子自增性和线程安全即可轻松实现。计数器算法对于秒级以上的时间周期来说,会存在一个非常严重的问题,那就是临界问题,如下图:假设1min内服务器的负载能力为100,因此一个周期的访问量限制在100,然而在第一个周期的最后5秒和下一个周期的开始5秒时间段内,分别涌入100的访问量,虽然没有超原创 2021-06-28 20:27:40 · 438 阅读 · 2 评论 -
一文理清RocketMQ顺序消费、重复消费、消息丢失问题
前言在使用消息队列时不可避免的会遇到顺序消费、重复消费、消息丢失三个问题。在一次面试字节的时候,面试官问到如何保证顺序消费,当时回答不太准确,特意此文回顾如何解决顺序消费、重复消费、消息丢失三个问题。重复消费......原创 2021-05-22 12:15:59 · 8384 阅读 · 1 评论 -
一致性Hash算法原理
前言当在需要将数据分发到多个数据库/缓存,或将请求分发给多个服务节点时,不可避免的会遇到以下问题:如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。选择节点的方法随机放置从多个节点中,随机挑选一个,实现简单但不能做到数据均匀分布到每个节点Hash将数据的key按 index = hash(key) % N选择节点。N代表有N个节点。此方法能将数据均匀的分发给每个节点,但在添加或修改节点时,即N发生变换时,所有数据都需要重新计算,扩展性差一致性Hash一致性Has原创 2021-04-26 10:57:23 · 2516 阅读 · 0 评论