浅谈分布式系统FailOver

目录

 

概述

具体措施

存储层

中间件层

服务器

编码方面


概述

根据百度百科的词条描述,失败转移(FailOver)是指一种备份操作模式,当系统的主要组件由于失效或预定关机时间的原因而无法工作时,这种模式的系统组件功能被转嫁到二级系统组件中。

简单来讲就是当分布式系统中的某个组件出现问题,能够立马切换到新的节点继续进行工作,而不会直接导致整个系统宕机。

具体措施

在真实的环境中我们可以通过几个方面来未雨绸缪,防范系统可能出现的故障,降低系统风险

存储层

不管系统存储使用的是关系型数据库(MySQL、Orcale)或非关系型数据库(Redis、MongoDB、Hbase),都可以采用备库的方式进行解决,当主库出现问题,可以立即切换到从库,保证业务的连续型。

中间件层

一般系统中使用的中间件,都是以集群的方式存在,当系统的一个节点出现问题,通过负载均衡可以立即切换节点,举几个例子:

  • 一般申请缓存tair,可以申请两个机房,防止某个机房出现问题
  • 当zookeeper的master节点挂掉,系统可以重新选取主节点

服务器

假设某应用的集群服务器是20台,当某台服务器出现问题(比如内存泄漏),会立即被踢出,保证整个集群服务的正确性。做的好的话,集群可以有自愈功能,当某台机器下线,会自动上线一台服务。

另一方面,某个应用的服务器不会部署到一个机房,会零散的分布在几个机房中,这样可以提高系统的容灾,降低风险。

编码方面

假设一个系统依赖了20个其他的应用,我们会对每一个业务场景进行分析,每一个应用是强依赖或者是弱依赖,对弱依赖的应用,我们要做好防护,设置好超时时间,并做好兜底策略,假设下游系统宕机,从代码层面会将业务功能进行转移。

PS:以上是我目前工作经验的总结,欢迎各位大佬补充并指正。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章