架构分布式相关知识点

一些知识点汇总

积累的知识点

负载均衡

算法:随机,权重,简单轮询,轮询+权重,

一个权重的示意:

3台机器(分别为A、B、C),权重分别为5,3,2。按大小排列:
1—–5—8–10(前面区间大,表示其权重大)
设一[1,10]随机数,依次与5、3、2对比,如小则在该区间,如大,则减去前一数,再比对。看落到哪个区域。举例:
随机数为3,与5对比,小,则落到第1区间,即A。
随机数为7,与5对比,大,减去5得2,与3对比,小,则落到第2区间,即B。
随机数为9,与5对比,大,减去5得4,与3对比,大,减去3得1,与2对比,小,第3区间,即C。

雪花算法

概述:一个64比特数,按不同位域划分,由不同的机制生成,保证同一分布式系统中不会出现重复。不同位域内部也可有不同的划分法,各家有各法。每片雪花不同,得名。

优点:(1)经测试snowflake每秒能生成26万个自增可排序的ID。(2)snowflake生成的ID结果是一个64bit大小的整数,为一个Long型 (转换成字符串后长度最多19)。(3)分布式系统内不会产生ID碰撞(datacenter和workerId作区分)并且效率高。(4)不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也非常高,可以根据自身业务分配bit位,非常灵活。

缺点:依赖机器时钟,如果机器时钟回拨,会导致id重复。由于是部署到分布式环境,每台机器上的时钟不可能完全同步,有时候出现不是全局递增的情况。

主要分为 5 个部分:
是 1 个 bit:0,这个是无意义的。
是 41 个 bit:表示的是时间戳。
是 10 个 bit:表示的是机房 id,0000000000,因为我传进去的就是0。
是 12 个 bit:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号,0000 0000 0000。

1 bit,是无意义的因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数,所以第一个 bit 统一都是 0。

41 bit:表示的是时间戳,单位是毫秒。41 bit 可以表示的数字多达 2^41 - 1,也就是可以标识 2 ^ 41 - 1 个毫秒值,换算成年就是表示 69 年的时间,从1970年到2039年9月7日。

10 bit:记录工作机器 id,代表的是这个服务最多可以部署在 2^10 台机器上,也就是 1024 台机器。但是 10 bit 里 5 个 bit 代表机房 id,5 个 bit 代表机器 id。意思就是最多代表 2 ^ 5 个机房(32 个机房),每个机房里可以代表 2 ^ 5 个机器(32 台机器),这里可以随意拆分,比如拿出4位标识业务号,其他6位作为机器号。可以随意组合。

12 bit:这个是用来记录同一个毫秒内产生的不同 id。12 bit 可以代表的最大正整数是 2 ^ 12 - 1 = 4096,也就是说可以用这个 12 bit 代表的数字来区分同一个毫秒内的 4096 个不同的 id。也就是同一毫秒内同一台机器所生成的最大ID数量为4096

图示:

image-20210709114345221

image-20210709114608077

CAP和BASE理论

2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想。2 年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 从理论上证明了 CAP。之后,CAP 理论正式成为分布式计算领域的公认定理。

CAP 认为:一个分布式系统最多同时满足一致性 (Consistency),可用性 (Availability) 和分区容忍性 (Partition Tolerance) 这三项中的两项。

1.一致性 (Consistency)

一致性指“all nodes see the same data at the same time”,即更新操作成功,所有节点在同一时间的数据完全一致。

2.可用性 (Availability)

可用性指“Reads and writes always succeed”,即服务一直可用,而且响应时间正常。

3.分区容忍性 (Partition tolerance)

分区容忍性指“the system continue to operate despite arbitrary message loss or failure of part of the system.”,即分布式系统在遇到某节点或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。

img

eBay 架构师 Dan Pritchett 基于对大规模分布式系统的实践总结,在 ACM 上发表文章提出了 BASE 理论,BASE 理论是对于 CAP 理论的延伸,核心思想是即使无法做到强一致性 (Strong Consistency,CAP 中的一致性指强一致性),但是可以采用适当的方式达到最终一致性 (Eventual Consistency)。

BASE 指基本可用 (Basically Available)、软状态 (Soft State) 和最终一致性 (Eventual Consistency)。

1.基本可用 (Basically Available)

基本可用是指分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。比如服务降级。

2.软状态 (Soft State)

软状态是指允许系统存在中间状态,而该中间状态不会影响系统的整体可用性。分布式存储中一般一份数据至少存三个副本,允许不同节点间副本同步的延迟就是软状态的体现。

3.最终一致性 (Eventual Consistency)

最终一致性是指系统中的所有数据副本经过一段时间后,最终能够达成一致状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

image-20210706183316911