分布式高可用架构

合集下载

如何实现一个高可用的分布式KV存储系统

如何实现一个高可用的分布式KV存储系统

如何实现一个高可用的分布式KV存储系统随着互联网的快速发展,人们对于数据存储的需求越来越高。

为了保证数据的可靠性和安全性,我们需要一种高可用的分布式KV存储系统。

本文将介绍如何实现一个高可用的分布式KV存储系统,分为以下几个方面进行论述。

一、架构设计高可用的分布式KV存储系统需要满足以下几个基本要求:可扩展性、容错性、负载均衡和数据一致性。

1. 可扩展性可扩展性是指系统能够在需要的时候无限扩展,以满足不断增长的数据存储需求。

因此,系统应该采用分布式架构,将数据分散在多个节点上,每个节点可以处理一部分数据,从而避免单一节点的资源瓶颈。

2. 容错性容错性是指系统在硬件故障或其他异常情况下能够保持正常运行。

因此,系统应该支持数据备份和故障转移,当某个节点出现故障时,系统可以自动将故障节点的数据转移到其他健康节点上,从而保证数据的可靠性和完整性。

3. 负载均衡负载均衡是指系统能够均衡地分配不同节点的数据负载,从而避免某个节点过度负载导致系统崩溃。

因此,系统应该采用分布式负载均衡算法,动态地将数据分配到不同节点上,以确保各节点之间的负载均衡。

4. 数据一致性数据一致性是指系统在分布式环境下能够确保数据的一致性,避免因为数据更新不同步而导致数据错误。

因此,系统应该采用分布式一致性算法,确保所有节点之间的数据同步性,避免数据出现错误。

二、实现方案为了实现高可用的分布式KV存储系统,可以采用以下技术方案:1. 分布式存储采用分布式存储技术,将数据分散在多个节点上进行存储。

每个节点可以存储一些数据,并且可以接收其他节点分配的数据。

通过这种方式,可以实现系统的可扩展性和容错性。

2. 故障转移在一个分布式系统中,节点故障是很常见的情况。

因此,系统应该支持故障转移,当某个节点出现故障时,系统可以自动将故障节点的数据转移至其他健康节点,保证数据的可靠性和完整性。

3. 数据备份为了避免数据丢失,系统应该进行数据备份。

一般来说,可以采用多备份存储或者异地备份存储的方式进行数据备份。

分布式系统中的高可用与故障转移

分布式系统中的高可用与故障转移

分布式系统中的高可用与故障转移在当今互联网时代,分布式系统已经成为各行各业的重要组成部分。

为了确保系统的可用性和可靠性,高可用与故障转移是分布式系统中不可忽视的重要问题。

本文将探讨分布式系统中的高可用性和故障转移的相关内容。

一、高可用性的定义与意义高可用性指的是系统能够在长时间内保持正常运行而不中断的能力。

在分布式系统中,由于系统规模庞大且各个组件之间可能存在不可靠性,保持高可用性成为一项重要的任务。

高可用性的意义在于确保系统持续提供服务,不论是否遇到异常情况。

对于一些关键业务系统,如金融交易系统、电子商务平台等,一旦发生中断将导致巨大的经济损失和用户流失。

因此,高可用性就显得尤为重要。

二、实现高可用性的方法为了实现高可用性,分布式系统中可以采取多种方法:1.冗余备份:通过在多个地理位置搭建相同的系统,将用户请求分发到各个副本进行处理,一旦某个副本发生故障,可以立即切换到其他正常副本上。

这种方法可以通过备份机制和负载均衡来实现。

2.容错设计:在系统的设计中引入冗余机制,当某个组件发生故障时能够自动切换到备用组件。

容错设计可以通过多副本、心跳检测等方式来实现。

3.自动恢复:在系统发生故障时自动进行故障恢复,而不需要人为介入。

这可以通过检测故障发生后,自动进行故障定位和修复来实现。

三、故障转移的概念与原则在分布式系统中,故障转移是指在系统出现部分故障时,将工作负载从出现故障的组件转移到正常运行的组件上,以确保整个系统的正常运行。

故障转移的实现需要考虑以下几个原则:1.快速检测:系统应该能够迅速检测到故障的发生,以便及时采取措施进行转移。

2.灵活切换:当发生故障时,系统需要能够迅速将工作负载从故障节点切换到备用节点,以减少服务中断时间。

3.数据一致性:在进行故障转移时,需要确保数据的一致性,避免数据丢失或者数据不一致的情况发生。

4.系统可扩展性:故障转移的过程中,系统需要能够处理更多的请求,以避免转移过程中出现新的故障或过载情况。

使用分布式文件系统构建高可扩展性存储架构(四)

使用分布式文件系统构建高可扩展性存储架构(四)

使用分布式文件系统构建高可扩展性存储架构近年来,随着数据量不断增长和业务需求的不断扩展,传统的存储架构已经无法满足企业的需求。

传统的中心化存储架构存在单点故障、性能瓶颈等问题,而分布式文件系统则成为了一种解决方案。

本文将探讨使用分布式文件系统构建高可扩展性存储架构的优势和实施方法。

一、分布式文件系统的优势分布式文件系统将文件数据分散存储在多台独立的存储节点上,通过将文件分块并存储在不同的节点上,实现了数据的高可用性和高可扩展性。

以下是分布式文件系统的优势:1. 高可用性:分布式文件系统可以通过数据冗余和备份机制来保证数据的可靠性和高可用性。

即使某一节点发生故障,系统仍然能够正常运行,不会造成数据的丢失和中断。

2. 高并发性:由于存储节点的分布式特性,分布式文件系统可以同时处理多个读写请求,提供较高的并发性能。

这对于大规模数据的处理和实时性要求较高的业务非常重要。

3. 高可扩展性:传统的存储系统在面临业务增长时,通常需要进行硬件和软件的升级才能满足需求。

而分布式文件系统可以通过简单地增加存储节点来实现系统的水平扩展,大大降低了成本和维护的复杂性。

二、构建高可扩展性存储架构的实施方法:要构建高可扩展性的存储架构,需要考虑以下几个关键因素:1. 存储节点的选择:选择适合企业需求的存储节点是构建高可扩展性存储架构的基础。

常用的存储节点有HDFS、Ceph等。

在选择存储节点时,需要考虑数据访问的速度、容量和可扩展性等因素。

2. 数据划分和布局:将文件数据切割成较小的块,并决定每个块存储在哪个节点上。

通过合理的数据划分和布局,可以实现文件的负载均衡和性能优化。

可以根据业务需求来选择合适的数据划分策略,如按文件类型、按访问频率等。

3. 数据冗余和备份:为了保证数据的可靠性和高可用性,需要对数据进行冗余和备份。

常用的方法有副本存储和纠删码等。

副本存储会将数据复制到多个节点上,而纠删码则通过数学算法将数据切分成多个片段,并分散存储在不同的节点上。

如何构建高可用和弹性的系统架构

如何构建高可用和弹性的系统架构

如何构建高可用和弹性的系统架构在当今信息时代,系统架构的高可用性和弹性成为了企业和组织追求的目标。

高可用性指系统能够持续地提供服务,即使在面临故障或异常情况下也能保持正常运行;而弹性则指系统能够根据负载的变化自动扩展或缩减资源,以满足用户需求。

构建高可用和弹性的系统架构是一个复杂而关键的任务,下面将从几个方面进行探讨。

1. 分布式架构分布式架构是构建高可用和弹性系统的基础。

通过将系统拆分为多个独立的模块和服务,可以实现负载均衡和故障隔离。

同时,分布式架构也可以提供更好的可扩展性和性能。

例如,可以将系统拆分为多个微服务,每个微服务独立运行,通过消息队列或RPC进行通信,从而实现系统的高可用和弹性。

2. 容错设计容错设计是确保系统高可用性的关键。

通过引入冗余和备份机制,可以在单点故障发生时保持系统的正常运行。

例如,可以使用主备模式,当主节点发生故障时,备份节点会自动接管服务。

此外,还可以使用数据备份和数据冗余技术,确保数据的可靠性和完整性。

3. 自动化运维自动化运维是提高系统弹性的重要手段。

通过自动化部署、监控和扩缩容等操作,可以快速响应负载的变化,保证系统的稳定性和可用性。

例如,可以使用自动化部署工具如Docker和Kubernetes,实现快速部署和弹性扩缩容。

同时,还可以使用监控和告警系统,及时发现和解决潜在的故障。

4. 异地多活异地多活是提高系统高可用性的重要策略。

通过在不同地理位置部署系统的副本,可以在某一地区发生故障时,自动切换到其他地区的副本,保证系统的连续性和可用性。

例如,可以将系统部署在多个数据中心,通过负载均衡和故障切换机制,实现异地多活。

5. 容量规划容量规划是确保系统弹性的关键。

通过对系统负载和资源使用情况进行分析和预测,可以合理规划系统的容量,避免资源瓶颈和性能问题。

例如,可以使用性能测试工具和监控系统,收集系统的性能数据,并进行分析和预测,以确定系统的扩容和优化策略。

6. 容错测试容错测试是验证系统高可用性和弹性的重要手段。

如何构建高可用性的物联网平台架构(五)

如何构建高可用性的物联网平台架构(五)

构建高可用性的物联网平台架构随着物联网技术的迅猛发展,物联网平台的建设变得越来越重要。

在构建物联网平台架构时,高可用性是一个关键的考虑因素。

本文将探讨一些构建高可用性物联网平台架构的方法和策略。

1. 设计分布式架构为了保证物联网平台的高可用性,我们需要设计一个分布式架构。

分布式架构采用多个节点分布在不同的地理位置,通过高速网络连接。

每个节点都是平等的,在发生单点故障时可以自动地从其他节点接管工作。

这种架构能够提供良好的负载均衡和故障恢复能力,有效地减少单点故障的影响。

2. 实施容错机制容错机制是构建高可用性物联网平台架构的重要组成部分。

容错机制包括数据备份、故障检测和故障恢复等功能。

数据备份可以将数据多次复制到不同的节点上,确保数据不会因某个节点的故障而丢失。

故障检测可以通过实时监控节点的状态,并及时发现故障并采取相应的措施。

故障恢复可以在发生故障时自动切换到备用节点,实现无缝的故障恢复。

3. 采用负载均衡策略负载均衡是确保物联网平台高可用性的一项重要策略。

在高负载情况下,单个节点可能无法处理所有的请求。

通过使用负载均衡器,可以将请求分发到多个节点上,实现负载均衡。

负载均衡策略可以根据节点的负载情况动态地调整请求的分发,确保每个节点都能均衡地处理请求。

4. 引入自动化部署和监控工具为了更好地管理和监控物联网平台,引入自动化部署和监控工具是必不可少的。

自动化部署工具可以帮助快速部署和更新平台的各个组件,减少人工操作出错的可能性。

监控工具可以实时监测平台的性能指标和状态,及时发现问题并采取相应的措施。

这些工具的引入可以提高平台的可维护性和稳定性,减少故障的风险。

5. 引入容器化技术容器化技术可以进一步增强物联网平台的高可用性。

通过将应用程序和依赖项捆绑在一个容器中,并在不同的节点上运行,可以实现应用程序的高度隔离和可移植性。

容器化技术还可以快速地扩展和缩小应用程序的规模,以适应不同的负载需求。

这种灵活性和可扩展性可以有效地保证平台的高可用性。

tidb数据库描述

tidb数据库描述

tidb数据库描述TiDB数据库是一种分布式关系型数据库,具有高可用性、强一致性和可扩展性等特点。

本文将从TiDB的架构、特点、优势以及应用场景等方面进行介绍。

一、TiDB架构TiDB采用了分布式架构,由三个核心组件组成:TiDB Server、TiKV和PD。

1. TiDB ServerTiDB Server是TiDB的SQL层,负责接收客户端的SQL请求,并将这些请求转化为对底层存储的操作。

它支持标准的MySQL协议,并且兼容MySQL的语法和工具,可以无缝替换MySQL。

2. TiKVTiKV是一个分布式的键值存储引擎,用于存储实际的数据。

它实现了分布式事务和分布式一致性算法,保证了数据的可靠性和一致性。

同时,TiKV还支持自动数据分片和负载均衡,可以根据数据的大小和访问模式进行自动调整,提高系统的性能和可扩展性。

3. PDPD(Placement Driver)是TiDB的元数据管理组件,负责管理集群的拓扑结构、数据分布和负载均衡等。

PD通过监控集群的状态和负载情况,动态调整数据的分布和副本的位置,保证系统的高可用性和性能。

二、TiDB特点1. 分布式架构:TiDB采用分布式架构,可以将数据分布在多个节点上,实现数据的并行处理和高可用性。

2. 水平扩展:由于TiDB的分布式特性,可以通过增加节点来扩展系统的容量和性能,而不需要修改应用程序。

3. 强一致性:TiDB支持分布式事务,可以保证数据的一致性和完整性。

4. 兼容性:TiDB兼容MySQL的语法和工具,可以无缝迁移现有的MySQL应用程序。

5. 实时查询:TiDB的分布式架构和优化器可以实现快速的查询响应,适用于实时分析和查询。

三、TiDB优势1. 高可用性:TiDB采用了分布式架构和多副本机制,可以保证数据的可靠性和系统的高可用性。

2. 弹性扩展:TiDB支持水平扩展,可以根据需求动态增加或减少节点,实现系统的弹性扩展。

3. 一致性和事务支持:TiDB支持ACID事务,并且具有强一致性保证,可以满足对数据一致性要求较高的应用场景。

nacos高可用原理

nacos高可用原理

Nacos高可用原理Nacos是一个用于实现服务发现、动态配置和服务管理的开源平台。

在分布式系统中,高可用性是非常重要的一个特性,以确保系统在面对故障时能够继续正常工作。

Nacos通过一系列的设计和机制来保证系统的高可用性,并在故障发生时能够快速恢复。

Nacos的高可用原理主要包括以下几个方面:1.分布式架构Nacos采用了分布式架构,将服务列表和配置信息分布在多个节点上。

这样做的好处是提高系统的吞吐量、容错性和可伸缩性。

Nacos的所有节点都是对等的,每个节点都能够处理客户端请求,并参与集群的协调工作。

2.选举机制为了保证集群中节点的一致性和可用性,Nacos引入了选举机制。

集群中的节点通过选举产生一个主节点(Leader),其他节点则成为从节点(Follower)。

主节点负责处理客户端请求,并将数据同步给从节点。

如果主节点发生故障,从节点中的一个会被选举为新的主节点,以确保系统的正常运行。

3.分布式存储为了实现服务列表和配置信息的持久化存储,Nacos采用了分布式存储技术。

它将数据分片存储在多个节点上,以提高数据的可用性和扩展性。

Nacos支持多种存储后端,包括MySQL、Oracle、MongoDB等。

每个节点都会同步存储数据,以保证数据的一致性。

4.数据同步为了保证分布式存储的数据一致性,Nacos采用了数据同步机制。

主节点负责将数据变更广播给从节点,从节点接收到变更后更新本地存储。

Nacos使用了心跳机制和Raft算法,以实现高效的数据同步。

当主节点发生故障或者网络分区时,从节点会重新选举主节点,以确保数据的一致性。

5.容灾和故障恢复Nacos通过容灾和故障恢复机制来提高系统的可用性。

当节点发生故障时,Nacos会自动将该节点从集群中剔除,不再处理客户端请求。

同时,Nacos会进行自动的故障转移,选举新的主节点来接管工作。

这样可以保证系统在发生故障时能够快速恢复。

6.负载均衡为了提高系统的性能和可伸缩性,Nacos采用了负载均衡机制。

(资料)数据库技术:华泰证券构建分布式高可用数据 库架构的执行分享

(资料)数据库技术:华泰证券构建分布式高可用数据 库架构的执行分享

1、现有的MySQL技 术不能完全满足金 融证券行业的要求。 (包括Galera部分 场景不合适:高可 用+性能不损失)
2 根据相关要求, 尽量不使用传统存 储架构。
3 IB等高性能 开源技术不断 成熟
研究背景和目标
RDMA等开源技术的引入
RDMA技术
InfiniBand网络 SRP和ISER 协议

•共享 存储的
HA
•根据目前的互联网策略, 大规模推广困难。
NDB
半同步 复制
•依旧是异步复制,弱一致性,理 论上存在丢失数据的可能性,且
存在性能损耗
场景不适合
挑战:主流方案基本不适合现有的集团需求!
二、机遇与挑战 效率的考量
SQL效率
目前开源数据 库的SQL优化 器和ORACLE 商用数据库相 比,存在差距。
Oracle到MySQL三个重点考量
高可用
开源MySQL数据库普 遍使用的高可用方 案是否满足金融机
构的需求
效率
SQL优化器:目前开 源数据库的SQL优化 器和ORACLE商用数 据库相比,差距明
显。
处理能力
能否用多台服务 器达到单台高性 能小型机的处理
能力
二、机遇与挑战
高可用的考量
传统的 难以满足金融行业 主从复 的要求
3
• 切换快速
三、技术方案 Galera Cluster特点
同步复 制
各节点间无延 迟且节点宕机 不会导致数据
丢失.
业务 连续 性高
• 无需主从切 换操作
多主架 构
• 任何节点都 可以进行读写 。(安全性)
支持 InnoDB 存储引

支持InnoDB存 储引擎,支持
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

监控管理
• 监控数据采集后,除了用作系统性能评估、 集群规模伸缩性预测等,还可以根据实时监 控数据进行风险预警,并对服务器进行失效 转移,自动负载调整,最大化利用集群所有 机器的资源。
• 报警 • 服务器运行正常的情况下,其各项监控指标基本稳定 在一个特定水平,如果这些指标超过某个阀值,就意 味着系统可能将要出现故障,这时候就需要对相关人 员报警,及时采取措施,在故障还未真正发生就将其 扼杀在萌芽状态。 • 监控管理系统可以配置报警阀值和值守人员的联系方 式,报警方式除了邮件,即时通讯工具,还可以配置 手机短信,语音报警,保证发生报警时,工程师即使 在千里之外、夜里睡觉也能及时通知,迅速响应。
代码控制
• 对于大型网站,核心应用系统和公用业务模块涉 及许多团队和工程师,需要对相同的代码库进行 共同开发和维护,而这些团队对同一个应用的开 发维护,其开发周期和发布时间点各不相同。如 何进行代码管理,既能保证代码发布版本的稳定 正确,同时又能保证不同团队的开发互不影响。 • 目前大部分网站使用的源代码版本控制工具是 SVN,SVN代码控制和版本发布方式一般有两种 。
• 重新备份恢复数据一致性 • 因为某台服务器宕机,所以数据存储的拷贝数 目会减少,必须将拷贝的数目恢复系统设定的 值,否则,再有服务器宕机,就可能会出现无 法访问转移(所有拷贝的服务器都宕机了), 数据永久丢失的情况。因此系统需要从健康的 服务器拷贝数据,将数据拷贝数目恢复到设定 值。
高可用网站的软件质量保证
• 失效转移 • 除了应用程序访问失败时进行失效转移,监 控系统也可以在发现故障的情况下主动通知 应用,进行失效转移。
网站运行监控
• “不允许没有监控的系统上线”,这是许多网 站架构师在做项目上线评审的时候常说的一 句话。网站运行监控对于网站运维和架构设 计优化至关重要,没有监控的网站,犹如盲 人骑瞎马,夜半临深渊而不知。生死未卜, 提高可用性、减少故障率就更无从做起了。
监控数据采集
• 广义上的网站监控涵盖所有非直接业务行为 的数据采集与管理,包括供数据分析师和产 品设计师使用的网站用户行为日志,业务运 行数据和系统性能数据等。
• 业务运行数据报告 • 除了服务器系统性能监控,网站还需要监控 一些具体业务场景相关的技术和业务指标, 比如缓冲命中率、平均响应延迟时间、每分 钟发送邮件数目、待处理的任务总数等。不 同同于服务器性能监控,网站运维人员可以 在初始化系统的时候统一部署,业务运行数 据需要在具体程序中采集并报告,汇总后统 一显示。
• 访问转移 • 确认某台数据存储服务器宕机后,就需要将 数据读写访问重新路由到其他服务器上。对 于完全对等存储的服务器(几台存储服务器 存储的数据完全一样,这几台服务器叫对等 服务器),当其中一台宕机后,应用程序根 据配置直接切换到对等服务器上。如果存储 是不对等的, 那么就需要重新计算路由,选 择存储服务器。
预发布验证
• 即使是经过严格的测试,软件部署到线上服务器之后还是经常会出 现各种问题,甚至根本无法启动服务器。主要原因是测试环境和线 上环境并不相同,特别是应用需要依赖的其他服务,如数据库,缓 存、公用业务服务等,以及一些第三方服务,如电信短信网关、银 行网银接口等。也许是接口变化导致的通信失败;也许是配置错误 导致连接失败;也许依赖的服务在线上环境还没有准备好;这些问 题都有可能导致应用故障。 • 因此在网站发布的时候,并不是把测试通过的代码包直接发布到线 上服务器,而是先发布到预发布机器上,开发工程师和测试工程师 在预发布服务器上进行预发布验证,执行一两个典型的业务流程, 确认系统没有问题后才正式发布。 • 预发布服务器是一种特殊用途的服务器,它和线上的正式服务器唯 一的不同就是没有配置在负载均衡服务器上,外部用户无法访问。
• 用户行为日志收集 • 用户行为日志指用户在浏览器上所做所有操作及其所在的操作环境, 包括用户操作系统与浏览器版本信息,IP地址,页面访问路径,页面 停留时间等,这些数据对统计网站PV/UV指标,分析用户行为,优化 网站设计,个性化营销与推荐等非常重要。 • 具体用户行为日志收集手段有两种 • 服务器端日志收集,这个方案比较简单,Apache等几乎所有Web服务 器都具备日志记录功能,可以记录大部分用户行为日志,开启Web服 务器的日志记录功能即可。其缺点是可能会出现信息失真,如IP地址 是代理服务器地址而不是用户真实IP;多个链接指向同一个页面的情 况下无法分辨访问路径等。 • 客户端浏览器日志收集,浏览器可以收集用户真实的操作行为,因此 比服务器日志收集更加精准。其缺点是比较麻烦,需要在页面嵌入特 定的JS脚本来完成。
• 服务器性能监控 • 收集服务器性能指标,如系统Load,内存占用,磁盘 IO,网络IO等对尽早做出故障预警,及时判断应用状 况,防患于未然,将故障扼杀在萌芽时期非常重要。 此外根据性能监控数据,运维工程师可以合理安排服 务器集群规模,架构师及时改善系统性能及调整系统 伸缩性策略 • 目前网站使用比较广泛的开源性能监控工具是Ganglia ,支持大规模服务器集群,并支持以图形的方式在浏 览器展示实时性能曲线。
• 两种方式各有优缺点。主干开发、分支发布方 式,主干代码反应目前整个应用的状态,一目 了然,便于管理和控制,也利于持续集成。分 支开发,主干发布方式,各个分支独立进行, 互不干扰,可以使不同发布周期的开发在同一 应用中进行。 • 目前网站应用开发中主要使用的是分支开发、 主干发布的方式
自动化发布
• 业界通常用多少个9来衡量网站的可用性,如QQ的可用性是4个9, 即QQ服务99.99%可用,这意味着QQ服务要保证其在所有运行时间 中,只有0.01%的时间不可用,也就是一年中大约53分钟不可用。 • 网站年度可用性指标=(1-网站不可用时间/年度总时间)×10
0% • 网站不可用时间(故障时间)=故障修复时间点-故障发现(报告 )时间点
自动化测试
• 代码在发布到线上服务器之前需要进行严格的测试。即 使每次发布的新功能都是在原有系统功能上的小幅增加 ,但是为了保证系统没有引入未预料的BUG,网站测试 还是需要对整个网站功能进行全面的回归测试。此外还 需要测试各种浏览器的兼容性,在发布频繁的网站应用 中,如果使用人工来进行,成本和时间都难以承受。 • 目前大部分网站都采用Web自动化测试技术,使用自动 测试工具或脚本完成测试。比较流行的Web自动化测试 工具是ThoughtWorks开发的Selenium。Selenium运行在 浏览器中,模拟用户操作进行测试,因此Selenium可以 同时完成Web功能测试和浏览器兼容测试。
• 对可用性的定性描述,两个9是基本可用,年度停机时间小于88小 时;3个9较高可用,年度停机时间小于9小时;4个9是具有自动恢 复能力的高可用,年度停机时间小于53分钟;5个9是极高可用性, 年度停机时间小于5分钟。由于可用性影响因素很多,对于网站整 体而言,达到4个9,乃至5个9的可用性,除了过硬的技术、大量的 设备资金投入和工程师的责任心,还要有个好运气。
失效转移
• 数据服务器集群中任何一台服务器宕机的时 候,那么应用程序针对这台服务器的所有读 写操作都需要重新路由到其他服务器,保证 数据访问不会失败,这个过程叫做失效转移 。 • 失效转移操作由三部分组成:失效确认、访 问转移、重新备份恢复数据一致性。
• 失效确认 • 判断服务器宕机是系统进行失效转移的第一 步,系统确认一台服务器是否宕机的手段有 两种:心跳检测和应用程序访问失败报告。
• 在网站运维实践中,除了网络、服务器等硬 件故障导致的系统可用性风险,还有另一个 重要的方面,就是来自软件系统本身。 • 关于传统的软件测试和软件质量保证管理无 需赘言,我们这里重点讨论网站为了保证线 上系统的可用性而采取的一些与传统软件开 发不同的质量保证手段。
网站发布
• 网站需要保证7×24高可用运行,同时网站又需要不断的发布新功能吸引 用户以保证在激烈的市场竞争中获得成功。许多大型网站每周都需要发 布一到两次,而中小型网站则更加频繁,一些处于快速发展期的网站甚 至每天发布十几次。 • 不管发布的新功能是修改了一个按钮的布局还是增加一个核心交易功能 ,都需要在服务器上关闭原有的应用,然后重新部署启动新的应用,整 个过程还要求不影响用户的使用。这相当于是要求给飞行中的飞机换个 引擎,既不能让飞机有剧烈的晃动,也不能让飞机降落,更不能让飞机 坠毁。 • 既然网站的发布过程事实上和服务器宕机效果相当,那么就可以用服务 器宕机的高可用方案来应对网站的发布。所以设计一个网站的高可用架 构的时候,需要考虑的服务器宕机概率不是物理上的每年一两次,而是 事实上的每周一两次。也许你认为这个应用不重要,重启也非常快,用 户可以忍受每年一到两次的宕机故障,因而不需要复杂的高可用设计。 事实上,由于应用的不断发布,用户需要面对的是每周一到两次的宕机 故障。用户哭了。
• 网站的版本发布频繁,整个发布过程需要许 多团队合作,发布前,多个代码分支合并回 主干可能会发生冲突(conflict),预发布验 证也会带来风险,每次发布又相当于一次宕 机事故。因此网站发布过程荆棘丛生,一不 小心就会踩到雷。
灰度发布
• 应用发布完成功后,仍然可能会发现因为软件问题而引入的 故障,这时候就需要做发布回滚,即卸载刚刚发布的软件, 将上一个版本的软件包重新发布,使系统复原,消除故障。 • 大型网站的主要业务服务器集群规模非常庞大,比如QQ的 服务器数量超过一万台。一旦发现故障,即使想要发布回滚 也需要很长时间才能完成,只能眼睁睁看着故障时间在不断 增加干着急。为了应付这种局面,大型网站会使用灰度发布 模式,将集群服务器分成若干部分,每天只发布一部分服务 器,观察运行稳定没有故障,第二天继续发布一部分服务器 ,持续几天的时间才把整个集群全部发布完毕,期间如果发 现问题,就只需要回滚已发布的一部分服务器即可。
CAP原理
• 在讨论高可用数据服务架构之前,先必须要 讨论的一个话题是,为了保证数据的高可用 ,网站通常会牺牲另一个也很重要的指标: 数据一致性。
相关文档
最新文档