互联网的出现,意味着"信息大爆炸"。
用户担心的,不再是信息太少,而是信息太多。
如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。
各种各样的排名算法,是目前过滤信息的主要手段之一。
对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。
下面,我将整理和分析一些基于用户投票的排名算法,打算分成六个部分连载,今天是第一篇。
互联网的出现,意味着"信息大爆炸"。
用户担心的,不再是信息太少,而是信息太多。
如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题。
各种各样的排名算法,是目前过滤信息的主要手段之一。
对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新。排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位。
下面,我将整理和分析一些基于用户投票的排名算法,打算分成六个部分连载,今天是第一篇。
以下是与Paxos和Raft类似的分布式一致性算法及其核心设计思想、应用场景和优缺点对比:
分布式共识问题,简单说,就是在一个或多个进程提议了一个值应当是什么后,使系统中所有进程对这个值达成一致意见。
这样的协定问题在分布式系统中很常用,比如说选主(Leader election)问题中所有进程对Leader达成一致;
互斥(Mutual exclusion)问题中对于哪个进程进入临界区达成一致;
原子组播(Atomic broadcast)中进程对消息传递(delivery)顺序达成一致。
对于这些问题有一些特定的算法,但是,分布式共识问题试图探讨这些问题的一个更一般的形式,如果能够解决分布式共识问题,则以上的问题都可以得以解决。
分布式一致性算法与CAP定理之间的关系可以从以下几个层面深入分析:
CAP定理指出,分布式系统无法同时满足 一致性(Consistency) 、 可用性(Availability) 和 分区容错性(Partition Tolerance) 三个特性,必须在这三者中选择两个进行优先保障。这一理论为分布式系统的设计划定了边界:
这篇写的很好 https://levy5307.github.io/blog/PacificA/
PacificA是微软实现的一款强一致性的分布式共识协议,具有简单易实现、可用性高的优点
本篇文章的内容都是从微软发布的《PacificA: Replicationi in Log-Based Distributed Storage System》总结而来,如有疑惑请移步。
PacificA是微软亚洲研究院提出的一种分布式强一致性算法,专为日志复制系统设计。
其核心设计理念是将配置管理与数据管理分离,通过独立的一致性组件(如Configuration Manager)维护系统配置,同时确保数据的强一致性。
该算法旨在解决传统多数派算法的局限性,例如在可用副本不足半数时仍支持读写操作。
设计目标:
强一致性:任何时刻读取的数据均为最新状态,避免脏读或过期数据。
高可用性:即使少数副本存活,仍可完成读写操作。
去中心化故障检测:通过节点间的契约(lease)机制实现故障发现与恢复,避免单点依赖。
模块化架构:配置管理与数据复制解耦,提升系统的灵活性与可扩展性。
最近在看一些 es 方面的东西,了解到在es 的7.x版本之前 Master Election 算法采用的是Bully,但是在7.x改用了 Raft。
消息类型:
选举过程:
Bully算法是一种基于节点优先级(通常以唯一ID表示)的分布式选举算法,其核心思想是 选择ID最大的存活节点作为主节点(Leader)。
该算法由Garcia-Molina于1982年提出,适用于需要快速选举主节点的场景,例如Elasticsearch(ES)和MongoDB的副本集故障转移。
https://www.cnblogs.com/wzh2010/p/18031245
https://patentimages.storage.googleapis.com/5e/62/e3/d91ec10c6fc860/CN107341660A.pdf
GEAR(Gear Consensus Protocol)是由唐盛(北京)物联技术有限公司自主研发的区块链共识协议,旨在解决分布式系统中的数据一致性问题。
该协议结合了区块链数据结构和点对点网络通信的特点,通过轮转记账、集体评估、齿轮共识路由三个子协议实现安全、高效且去中心化的数据同步。
其设计目标包括: