Bootstrap

🌏【架构师指南】分布式技术知识点总结(下)

每日一句

人生由淡淡的悲伤和淡淡的幸福组成,在小小的期待、偶尔的兴奋和沉默的失望中度过每一天,然后带着一种想说却又说不出来的“懂”,作最后的转身离开。

分布式系统设计策略

心跳检测机制

周期检测心跳机制

Server端每间隔 t 秒向Node集群发起监测请求,设定超时时间,如果超过超时时间,则判断“死亡”。

累计失效检测机制

在周期检测心跳机制的基础上,统计一定周期内节点的返回情况(包括超时及正确返回),以此计算节点的“死亡”概率。

高可用(High Availability)

高可用是系统架构设计中必须考虑的因素之一。通常是指,经过设计来减少系统不能提供服务的时间。\

系统高可用性的常用设计模式包括三种:

  • 主备(Master-SLave)

  • 互备(Multi-Master)

  • 集群(Cluster)模式

高可用HA下"脑裂问题"

在高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。

【脑裂预防方案】

添加冗余的心跳线 [即冗余通信的方法]:同时用两条心跳线路 (即心跳线也HA),这样一条线路坏了,另一个还是好的,依然能传送心跳消息,尽量减少"脑裂"现象的发生几率。

仲裁机制

当两个节点出现分歧时,由第3方的仲裁者决定听谁的。这个仲裁者,可能是一个锁服务。

隔离(Fencing)机制

  • 共享存储fencing:确保只有一个Master往共享存储中写数据;

  • 客户端fencing:确保只有一个Master可以响应客户端的请求;

  • Slave fencing:确保只有一个Master可以向Slave下发命令。

负载均衡

  • 轮询(次数hash):默认方式,每个请求会按时间顺序逐一分配到不同的后端服务器

  • weight:权重方式,在轮询策略的基础上指定轮询的几率,权重越大,接受请求越多

  • ip_hash:依据ip分配方式,相同的客户端的请求一直发送到相同的服务器,以保证session会话

  • least_conn:最少连接方式,把请求转发给连接数较少的后端服务器

  • fair(第三方):响应时间方式,按照服务器端的响应时间来分配请求,响应时间短的优先分配

  • url_hash(第三方):依据URL分配方式,按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器

  • Random随机机制。

服务限流

令牌桶的优点是可以应对突发流量缺点就是相对漏桶一定程度上减小了对下游服务的保护