随笔分类 - 【 大算法 】
摘要:这个问题来源于犹太人约瑟夫经历过的故事,在罗马人占领乔塔帕特后,约瑟夫和他的朋友与39 个犹太人躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人时,该人就必须自杀,然后再由下一个人重新报数,直到所有人都自杀身亡为止
阅读全文
摘要:假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有: 如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如果失配(即S
阅读全文
摘要:
先来看几个比较常见的例子 字处理软件中,需要检查一个英语单词是否拼写正确 在网络爬虫里,一个网址是否被访问过 邮箱垃圾邮件过滤功能 这几个例子有一个共同的特点: 如何判断一个元素是否存在一个集合中? 常规思路 数组 链表 树、平衡二叉树、Trie Map (红黑树) 哈希表 虽然上面描述的这几种数据
阅读全文

摘要:
高并发系统有三把利器用来保护系统:缓存、降级和限流。 缓存:缓存的目的是提升系统访问速度和增大系统处理容量 降级:降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行 限流:限流的目的是通过对并发访问/请求进行限速,或者对一个
阅读全文

摘要:
消息发送一致性:是指产生消息的业务动作与消息发送的一致。也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去(一般是发送到kafka、rocketmq等消息中间件中),否则就丢消息。 可靠消息最终一致性 发送消息不可靠性 既然提到了可靠消息的最终一致性,那么说明现有的消息发送
阅读全文

摘要:
最大努力通知型( Best-effort delivery)是最简单的一种柔性事务,适用于一些最终一致性时间敏感度低的业务,且被动方处理结果不影响主动方的处理结果。典型的使用场景:如银行通知、商户通知等。 最大努力通知 最大努力通知型( Best-effort delivery)是最简单的一种柔性事
阅读全文

摘要:
在电商领域等互联网场景下,传统的事务在数据库性能和处理能力上都暴露出了瓶颈。在分布式领域基于CAP理论以及BASE理论,有人就提出了柔性事务的概念。在业内,关于柔性事务,最主要的有以下四种类型:两阶段型、补偿型、异步确保型、最大努力通知型几种。我们前边讲过的2PC和3PC都属于两阶段型,两阶段型事务
阅读全文

摘要:
三阶段提交(3PC)是二阶段提交(2PC)的改进版本,三阶段提交协议主要是为了解决两阶段提交协议的阻塞问题,2pc存在的问题是当协调者崩溃时,参与者不能做出最后的选择。因此参与者可能在协调者恢复之前保持阻塞。三阶段提交(Three-phase commit),是二阶段提交(2PC)的改进版本。 三阶
阅读全文

摘要:
前面的文章中,我们介绍了分布式系统中的CAP理论和BASE理论,本文会就分布式事务的实现方案之一:两阶段提交(2PC)进行介绍。2PC是一个非常经典的强一致、中心化的原子提交协议。中心化是指协议中有两类节点:一个是中心化协调者节点(coordinator)和N个参与者节点(partcipant)。
阅读全文

摘要:
现今互联网界,分布式系统和微服务架构盛行。一个简单操作,在服务端非常可能是由多个服务和数据库实例协同完成的。在互联网金融等一致性要求较高的场景下,多个独立操作之间的一致性问题显得格外棘手。随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构,随之而来就
阅读全文

摘要:
前两篇文章分别解析了Raft中领导人选举和日志复制规范,对于一个固定的集群来说,有了这些规范的保护,就可以快乐的一致运行下去了。随着业务的变化,总归会出现集群规模变更的需求。最简单的处理方式当然是停掉整个集群服务,变更配置,重启服务。有时候,这对于在线业务是无法接受的。如果不停止服务,直接变更又存在
阅读全文

摘要:
上一篇文章解析了Raft协议的选举机制,客户端通过和选举出来的Leader通信来读写数据。选举只是保证数据一致性的基础,数据读写才是该协议要实现的功能。这篇文章来分析下Raft协议通过哪些约束来保证数据在多个节点上一致性。 基础原理 官方文档上对Raft的描述中说,“Raft本质上是管理日志复制的一
阅读全文

摘要:
Raft协议是现在使用最广泛的分布式一致性协议,下面从问题出发,看Raft怎么解决分布式中的种种问题。 分布式一致性 先问为什么,再问怎么做:“为什么需要分布式一致性协议”? 首先,需要分布式一致性协议的系统肯定是分布式的。分布式系统是由多台机器组成的集群来实现的。既然是集群,就必然引入额外的复杂度
阅读全文

摘要:
前言 OAuth 2.0 全称是 Open Authorization 2.0, 是用于授权(authorization)的行业标准协议。 OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序、桌面应用程序、移动设备应用等提供了特定的授权流程。它在2012年取代了 OAuth
阅读全文

摘要:
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的。BASE
阅读全文

摘要:
CAP原则又称CAP定理,是一个经典的分布式系统理论。CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项。 一致性 在分布式环境
阅读全文
