分布式系统中的一些设计策略


今天介绍分布式系统下的一些通用的设计策略

心跳检测

  • 多个节点分担任务的运行、计算或者程序逻辑处理,需要检测一个节点出现了故障乃至无法工作
  • 可使用周期检测心跳机制、累计失效检测机制
  • 周期检测心跳机制:Server端每间隔t秒向Node集群发起监测请求,设定超时时间,如果超过超时时间,则判断“死亡”。这里的超时时间设置带有随意性,容易误判。进一步,可以统计实际检测Node的返回时间,包括得到一定周期内的最长时间。那么可以根据现有没有正确返回的时间在历史统计的分布中计算得到“死亡”概率,同时对于宣告濒临死亡的节点可以发起有限次数的重试,以作进一步判定。心跳检测本身也是有效资源利用和成本之间的一种权衡,如果迟迟不能判断节点是否“死亡”,会影响业务逻辑的处理

高可用设计

  • 主备模式:当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动(热备)或手动(冷备)方式将服务切换到主机上运行
  • 互备模式:指两台主机同时运行各自的服务工作且相互监测情况。在数据库高可用部分,常见的互备是MM模式。MM模式即Multi-Master模式,指一个系统存在多个master,每个master都具有read-write能力,需根据时间戳或业务逻辑合并版本。比如分布式版本管理系统git可以理解成multi-master模式,具备最终一致性
  • 集群模式:集群模式是指有多个节点在运行,同时可以通过主控节点分担服务请求,比如zookeeper。集群模式要特别解决主控节点本身的高可用问题

容错性

  • 容错的处理是保障分布式环境下相应系统的高可用或者健壮性,如缓存的雪崩问题

负载均衡

  • 关键在于使用多台集群服务器共同分担计算任务,把网络请求及计算分配到集群可用服务器上去,从而达到可用性及较好的用户操作体验
  • 一些策略:
    • 轮询:即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器
    • 最少连接:当前谁连接最少,分发给谁
    • IP地址哈希:确定相同IP请求可以转发给同一个后端节点处理,以方便session保持
    • 基于权重的负载均衡:配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器

文章作者: Xudong Jiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Xudong Jiang !
 上一篇
项目中接口性能优化 项目中接口性能优化
今天分享下项目中使用缓存对项目进行性能优化 背景 项目中流量高峰时,db的qps达到15k左右,线程数达到5k(服务器设置的最大连接数),创建链接最高耗费达到2s。数据库服务器的连接数以及cpu升高,处理能力下降,响应时间变长 接口提供的批
2020-04-13
下一篇 
分布式系统理论介绍 分布式系统理论介绍
本文介绍关于分布式系统的一些理论,后续还会涉及到 CAP理论 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否有同样的值。(等同于所有节点访问同一份最新的数据副本 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端
  目录