专栏首页服务端技术杂谈系统的高可用(纯理论)

系统的高可用(纯理论)

专注服务端首先要专注的是关于高可用。

有的时候高可用系统并不是简单的技术方案,会包含很多其他的东西。

什么是高可用?

基本来讲是为了让我们的计算机(硬件/软件)做到full time可用。设计上一般有下面的方法:

  1. 对软/硬件冗余,消除单点故障。任何系统都有一个或多个冗余系统做standby。
  2. 对故障的检测和恢复。检测故障使用备份的节点接管故障点。就是failover。
  3. 需要可靠的交汇点。一些不易冗余的节点,或者被看做是单点的节点,比如域名解析,负载均衡。

冗余的问题

系统软硬件冗余可以保证高可用,但是冗余之后的问题是多个节点状态的数据复制和数据一致性的保证。

一致性问题:

  1. 系统的数据镜像到冗余节点是异步的。在failover的时候会出现数据差异。
  2. 数据镜像到冗余节点是同步的,会导致冗余节点越多性能越差。

所以在选择中会有取舍,依照业务特点来。

高可用设计原理:

  1. 数据不丢失就需要持久化。
  2. 服务高可用,需要做备份(副本),包括应用节点和数据节点。
  3. 节点之间复制就会有数据一致性问题。
  4. 不可能做到100%高可用,达到常说的9个SLA。

常见的高可用方案有:

  1. M/S,MM实现起来简单存在一些问题;
  2. 2PC,3PC有一定的性能问题;
  3. Paxos较为复杂,比如zk;

高可用问题:

  1. 最终一致性来讲,宕机情况下会出现数据没有完全同步,出现数据节点数据差异。
  2. 强一致性来讲,使用两阶段提交/三阶段提交方案,需要结合Paxos协议实现。

当今的开源软件中,缓存,消息系统,数据库都有持久化和复制的设计,实现了自身的高可用。

以MySql为例:

  1. MySql Repleaction是传统的异步数据同步方式/半同步(只有一个Slave收到更新就返回成功)这个本质上不到2个9。
  2. MySql Fabric就是数据分片下的M/S读写分离模式。高可用可以达到99%。
  3. DRBD通过底层的磁盘同步方案来解决数据同步问题,及时RAID 1把两台以上的主机的硬盘镜像成一个。这个方案不到3个9。
  4. Solaris Clustering/Orical VM,这个机制监控了包括硬件,操作系统,网络和数据库。方案会伴随节点间心跳,还会用到SAN或本地的分布式存储系统,用到虚拟化技术。是一个全栈式的方案。
  5. MySql Cluster是官方的开源方案,把MySql的集群分成Sql Node和Data Node,Data Node是一个自动化sharing和复制的机器NDB,为了高可用,MySql Cluster采用了完全同步的数据复制来冗余数据节点,也是采用比较多的方案。接近于5个9。

系统可用性%

宕机时间/年

宕机时间/月

宕机时间/周

宕机时间/天

90% (1个9)

36.5 天

72 小时

16.8 小时

2.4 小时

99% (2个9)

3.65 天

7.20 小时

1.68 小时

14.4 分

99.9% (3个9)

8.76 小时

43.8 分

10.1 分钟

1.44 分

99.99% (4个9)

52.56 分

4.38 分

1.01 分钟

8.66 秒

99.999% (5个9)

5.26 分

25.9 秒

6.05 秒

0.87 秒

比如,99.999%的可用性,一年只能有5分半钟的服务不可用。感觉很难做到吧。

影响高可用的因素

处理设计系统的高可用,还需要面对硬件,第三方服务,建筑施工队的因素。

意外因素:

  1. 系统的故障:主机,操作系统,中间件,数据库,网络,电源,外设设备。
  2. 数据和中介:人员误操作,硬盘故障,数据异常。
  3. 自然灾害,人为损坏,供电。

计划内因素:

  1. 日常任务:备份,容量规划,用户和安全处理,后台批处理。
  2. 运维日常:数据库维护,应用维护,中间件维护,操作系统维护,网络维护。
  3. 升级相关:数据库,应用,中间件,操作系统,网络,硬件升级。

小团队没有这么多资源,还是实用一些靠谱的云服务吧。

本文分享自微信公众号 - 服务端技术杂谈(ITIBB2014),作者:叨叨客

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 服务治理和Service Mesh

    当系统访问量和数据量超过之前对评估预期时,涉及到对数据库重新分片。大部分场景中往往不能直接映射到新对数据分片策略中,分片策略修改需要伴随数据迁移。

    春哥大魔王
  • 分布式事务的通用原则

    数据服务的高可用只能通过第二种方式完成数据冗余存储。存储节点越多,跨服务的事务数据一致性就越复杂。

    春哥大魔王
  • 支付类系统数据处理和数据中台的数据处理方式有什么不同?

    在建立数据中台的时候,数据还是来源于各个异构的业务应用系统,实现了数据的统一,但是数据实际上是多存了一份,数据存在冗余,同时数据实时性如何来保证了?针对每个业务...

    春哥大魔王
  • 干货 | 19款最好用的免费数据挖掘工具大汇总

    数据在当今世界意味着金钱。随着向基于app的世界的过渡,数据呈指数增长。然而,大多数数据是非结构化的,因此需要一个过程和方法从数据中提取有用的信息,并将其转换为...

    用户2769421
  • Hadoop之HDFS源码分析

    天策
  • SAP最佳业务实践:ETO–报价处理(232)-6项目计划

    CJ2B项目计划 已经使用模板(包含进一步处理所需的全部设置)创建项目。现在,必须根据询价中的需求进行计划。同时,还有些调整也必须在此完成,即更改缺省工作,为活...

    SAP最佳业务实践
  • C3D Usage Summary

    C3D is a deep learning tool which is modified version of BVLC caffe to support 3...

    王云峰
  • 关于OLAP数仓,这大概是史上最全面的总结!(万字干货)

    关于数据仓库,早期分享过不少基础类文章,偶然间看到知乎上这篇关于OLAP的深度解读,从技术发展,产品选型,执行优化等方面做了详细的剖析,分享来给大家看看!

    大数据技术架构
  • 【技术】HDFS存储原理

    根据Maneesh Varshney的漫画改编,以简洁易懂的漫画形式讲解HDFS存储机制与运行原理,非常适合Hadoop/HDFS初学者理解。 一、角色出演 ...

    小莹莹
  • 达观数据与七牛云存储达成战略合作,为其提供文本挖掘服务

    2016年4月,达观数据与七牛云存储签署战略合作协议,至此双方宣布全面达成战略合作,具体合作主要体现在达观将为七牛提供文本挖掘技术服务,为七牛云存储客户的海量文...

    达观数据

扫码关注云+社区

领取腾讯云代金券