首页 > 编程语言 >共识算法 CAP BASE

共识算法 CAP BASE

时间:2022-09-01 18:55:55浏览次数:62  
标签:CAP 算法 BASE 共识 一致性 节点

共识算法 (Consensus Algorithm)

共识算法是用来保证分布式系统一致性的方法。它能保证所有节点的数据相同并且一个节点发起的提案可以被其他节点同意。

根据解决的场景是否允许拜占庭错误情况,共识算法分为Crash Fault Tolerance(CFT)和Byzantine Fault Tolerance(BFT)两类;

CFT: 可以容忍网络丢包、时钟漂移、部分节点宕机这类错误。代表代表算法:算法:Paxos,Raft;

BFT: 可以容忍部分节点任意类型的错误。代表算法:PBFT,PoW。

CAP理论

Consistency 一致性 : 所有节点的数据是一致的。

Availablity 可用性 : 每一个非故障节点,都能对每一个请求做出相应。简而言之,一个节点坏了,不影响其他节点的业务。

Partition Tolerant 分区容错性 : 当系统中的某个节点因网络问题无法通信时,系统仍然可以正常运行,提供服务。

CAP 这三个要素最多只能同时实现两个,不可能三者兼顾。

可用性针对节点出现故障,系统可用;分区容错性针对网络出现问题,系统可用。

BASE理论

BASE理论:BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性),是CAP中可用性和一致性权衡的结果。

核心思想:即使无法做到强一致性(Strong consistency),单每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual Consistency)。

释义:允许多个节点的状态出现冲突,但是所有能够沟通的节点都能够在有限的时间内解决冲突,从不一致的状态恢复到一致。

本质:需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

标签:CAP,算法,BASE,共识,一致性,节点
From: https://www.cnblogs.com/lick468/p/16647537.html

相关文章

  • 普里姆(prim)算法
    1.应用场景-修路问题看一个应用场景和问题:1)有胜利乡有7个村庄(A,B,C,D,E,F,G),现在需要修路把7个村庄连通2)各个村庄的距离用边线表示(权),比如A–B距离5......
  • C++之常用的算法
    C++之常用的算法1函数对象重载函数调用运算符的类,其对象称为函数对象。一元仿函数/二元仿函数(根据参数个数判定)classMyPrint{public: voidoperator()(intn......
  • 【算法】反转字符串
    前言研究算法能提高我们的编程功底,更好地编写出高效稳健的代码。今天,我们研究的是——反转字符串。//输入一个字符串,输出它的倒序字符串input:Hellooutput:olleH......
  • 见过的python算法面试题记录(持续记录···)
     以上代码的输出是[6,6,6,6](而不是[0,2,4,6])。这个的原因是Python的闭包的后期绑定导致的latebinding,这意味着在闭包中的变量是在内部函数被调用的时候被......
  • letcode算法--5.整数反转
    给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1],就返回0。假设环境不允许存储......
  • Millar-Rabin 米勒罗宾算法小结 (内附费马小定理证明以及二次探测定理证明)
    因为他我学了龟速乘Millar-robin米勒罗宾这个小东西是用来素数判定的,且听我细细道来。前置知识肥妈小定理又名费马小定理:当一个数\(x\)不是一个质数\(p\)的......
  • 一致性哈希算法
    应用场景:分布式缓存架构中,典型的如Redis集群问题:2亿条数据要做缓存,如何设计?回复:单机肯定不行,需要用到分布式存储,可以使用redis,如何落地?方式1:哈希取余分区2亿条记录......
  • nodejs base64 编码解码
    一、普通字符串编码varb=newBuffer('JavaScript');vars=b.toString('base64');//SmF2YVNjcmlwdA==解码:varb=newBuffer('SmF2YVNjcmlwdA==','base64')......
  • woff2转base64(字体图标)
    可以参考这个Github项目:https://github.com/nfroidure/ttf2woff2应该是在google官方woff2项目外面包了一层。使用示意如下:varfs=require('fs');varttf2woff2=req......
  • 算法与数据结构系列
    算法与数据结构系列从零到英雄的算法和数据结构这是算法和数据结构系列从零到英雄的目录。BigO表示法数据结构数组和字符串链表堆栈尾巴树木图表算法选择......