前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >架构设计 6-高可用架构之高可用计算架构

架构设计 6-高可用架构之高可用计算架构

作者头像
aneutron
发布于 2022-08-19 03:28:53
发布于 2022-08-19 03:28:53
5250
举报
文章被收录于专栏:闲余说闲余说

导读:《架构设计》系列为极客时间李运华老师《从0开始学架构》课程笔记。本文为第六部分,主要介绍高可用计算架构,介绍了高可用架构设计的要点以及不同架构方式的优缺点。

高可用计算架构

设计思想:通过增加更多服务器来达到计算高可用 设计复杂度:主要体现在任务管理方面,即当任务在某台服务器上执行失败后,如何将任务重新分配到新的服务器进行执行

哪些服务器可以执行任务

  • 每个服务器都可以执行任务
  • 只有特定服务器(通常叫“主机”)可以执行任务。当执行任务的服务器故障后,系统需要挑选新的服务器来执行任务

任务如何重新执行

  • 对于已经分配的任务即使执行失败也不做任何处理,系统只需要保证新的任务能够分配到其他非故障服务器上执行即可
  • 设计一个任务管理器来管理需要执行的计算任务,服务器执行完任务后,需要向任务管理器反馈任务执行结果,任务管理器根据任务执行结果来决定是否需要将任务重新分配到另外的服务器上执行

架构设计

主备

主备架构是计算高可用最简单的架构,和存储高可用的主备复制架构类似,但是要更简单一些,因为计算高可用的主备架构无须数据复制

详细设计

  • 主机执行所有计算任务
  • 当主机故障(例如,主机宕机)时,任务分配器不会自动将计算任务发送给备机,此时系统处于不可用状态
  • 如果主机能够恢复(不管是人工恢复还是自动恢复),任务分配器继续将任务发送给主机。
  • 如果主机不能够恢复(例如,机器硬盘损坏,短时间内无法恢复),则需要人工操作,将备机升为主机,然后让任务分配器将任务发送给新的主机(即原来的备机);同时,为了继续保持主备架构,需要人工增加新的机器作为备机。

备机

  • 冷备:备机上的程序包和配置文件都准备好,但备机上的业务系统没有启动
  • 温备:备机上的业务系统已经启动,只是不对外提供服务

优缺点

  • 优点就是简单,主备机之间不需要进行交互,状态判断和切换操作由人工执行,系统实现很简单
  • 缺点正好也体现在“人工操作”这点上

主从

计算高可用的主从架构中的从机也是要执行任务的。任务分配器需要将任务进行分类,确定哪些任务可以发送给主机执行,哪些任务可以发送给备机执行

详细设计

  • 正常情况下,主机执行部分计算任务,,备机执行部分计算任务
  • 当主机故障(例如,主机宕机)时,任务分配器不会自动将原本发送给主机的任务发送给从机,而是继续发送给主机,不管这些任务执行是否成功
  • 如果主机能够恢复(不管是人工恢复还是自动恢复),任务分配器继续按照原有的设计策略分配任务
  • 如果主机不能够恢复,则需要人工操作,将原来的从机升级为主机(一般只是修改配置即可),增加新的机器作为从机,新的从机准备就绪后,任务分配器继续按照原有的设计策略分配任务

优缺点

  • 优点:主从架构的从机也执行任务,发挥了从机的硬件性能。
  • 缺点:主从架构需要将任务分类,任务分配器会复杂一些。

集群

计算高可用集群包含 2 台服务器的集群,这点和存储高可用集群不太一样。存储高可用集群把双机架构和集群架构进行了区分;而在计算高可用集群架构中,2 台服务器的集群和多台服务器的集群,在设计上没有本质区别,因此不需要进行区分

对称集群

通俗的叫法是负载均衡集群。集群中每个服务器的角色都是一样的,都可以执行所有任务

详细设计
  • 正常情况下,任务分配器采取某种策略(随机、轮询等)将计算任务分配给集群中的不同服务器
  • 当集群中的某台服务器故障后,任务分配器不再将任务分配给它,而是将任务分配给其他服务器执行。
设计关键点
  • 任务分配器需要选取分配策略
    • 任务分配策略比较简单,轮询和随机基本就够了
  • 任务分配器需要检测服务器状态
    • 状态检测稍微复杂一些,既要检测服务器的状态,例如服务器是否宕机、网络是否正常等;同时还要检测任务的执行状态,例如任务是否卡死、是否执行时间过长等。
    • 常用的做法是任务分配器和服务器之间通过心跳来传递信息,包括服务器信息和任务信息,然后根据实际情况来确定状态判断条件。

非对称集群

非对称集群中不同服务器的角色是不同的,不同角色的服务器承担不同的职责

详细设计
  • 集群会通过某种方式来区分不同服务器的角色。
  • 任务分配器将不同任务发送给不同服务器。
  • 当指定类型的服务器故障时,需要重新分配角色。
设计复杂度
  • 任务分配策略更加复杂:需要将任务划分为不同类型并分配给不同角色的集群节点。
  • 角色分配策略实现比较复杂:例如,可能需要使用 ZAB、Raft 这类复杂的算法来实现 Leader 的选举。

个人思考

相对高可用存储架构,计算架构相对简单,不涉及数据同步和一致性。关键点在于如何将请求路由到合适的实例上。

reference

  1. 从 0 开始学架构
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 闲余说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谈谈高可用计算架构
计算高可用的主要设计目标是当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可用。
iMike
2019/06/02
1.3K0
技术角 | 架构学习书摘总结(三)高可用架构模式(下)
最近阅读了一本架构方面的入门图书叫《从零开始学架构:照着做,你也能成为架构师》,部分内容比较不错,先做书摘总结,以便加深印象与未来回顾学习。
ZNing
2020/05/13
8920
从零开始学架构读书笔记
  软件架构的出现是为了解决系统规模增加后出现了系统耦合严重,开发效率低,逻辑复杂,扩展困难等问题。所以架构设计是为了解决软件复杂度而存在的,所以架构设计的目地是识别出需求的复杂点然后针对性的解决。系统设计时需要考虑:性能,系统的可扩展性,安全性,高可用,成本。   架构师的工作并不神秘,成熟的架构师需要对已经存在的技术非常熟悉,对已经经过验证的架构模式烂熟于心,然后根据自己对业务的理解,挑选合适的架构模式进行组合,再对组合后的方案进行修改和调整。
良辰美景TT
2018/09/11
1.1K0
从零开始学架构读书笔记
《从零开始学架构》笔记——第二部分:高性能和高可用架构模式
事务问题:一致性。 【问题】 如何保证主机和从机的数据一致???主从复制的延迟性问题。
Noneplus
2019/09/24
6320
数据库高可用架构设计,看这篇就够了!!!
又赶上一年一度的金九银十的日子,这段期间的招聘岗位相对前几个月会多些,如果在目前公司没有进步、没有前途时,这段时间可以准备一下,去外面看看机会。不过在外面找工作时,可以提前在网上看看招聘信息,看看自己是否达到公司要求。如果多看下高薪资的技术人员招聘要求时,就会发现对三高都有一定的要求,比如下面一家公司的要求就对高并发、高负载和高可用性系统设计要有开发经验。
一个会写诗的程序员
2023/03/08
2.8K0
数据库高可用架构设计,看这篇就够了!!!
工作十年,在腾讯沉淀的高可用系统架构设计经验
👉腾小云导读 在系统的开发过程中,很多开发者都为了实现系统的高可用性而发愁。本文从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用系统的架构设计需要有哪些关键的设计和考虑。希望腾讯的经验方法,能够给广大开发者提供参考。内容较长,您可以收藏后持续阅读。 👉看目录点收藏,随时涨技术 1 高可用系统的架构设计思想     1.1 可用性和高可用概念     1.2 高可用系统设计思想 2 研发规范层面     2.1 方案设计和编码规范     2.2 容量规划
腾讯云开发者
2023/03/14
5.5K0
工作十年,在腾讯沉淀的高可用系统架构设计经验
架构设计文档模板
架构设计中最重要的两个文档的模板和关键说明。这个案例文档仅给出一些关键内容供你参考,部分细节无法全面覆盖或者完全保证正确。(斜体字是示例)
Dlimeng
2023/06/30
1K0
架构设计文档模板
谈谈系统复杂度中的高可用与高性能
这个定义的关键在于“ 无中断”,但恰好难点也在“无中断”上面,因为无论是单个硬件还是单个软件,都不可能做到无中断,硬件会出故障,软件会有bug;硬件会逐渐老化,软件会越来越复杂和庞大……
架构狂人
2023/08/16
5170
谈谈系统复杂度中的高可用与高性能
架构设计的问题与解法
小到某个功能的开发方案,大到整个业务的系统设计,都可以看到架构设计的影子,但是架构设计的目的到底是什么?『从0开始学架构』的作者给我们的解答是:架构设计的主要目的是为了解决软件系统复杂度带来的问题。
Cloudox
2023/03/09
9890
架构设计的问题与解法
架构学习书摘总结(三)高可用架构模式(上)
最近阅读了一本架构方面的入门图书叫《从零开始学架构:照着做,你也能成为架构师》,部分内容比较不错,先做书摘总结,以便加深印象与未来回顾学习。
ZNing
2020/05/13
6690
企业级 IP 电话系统高可用架构设计详解
设计高可用架构需要合理部署以下核心组件,每个组件的高可用性都直接影响系统的整体表现:
杜金房
2025/03/27
2480
企业级 IP 电话系统高可用架构设计详解
架构设计 5-高可用架构之高可用存储架构
导读:《架构设计》系列为极客时间李运华老师《从0开始学架构》课程笔记。本文为第五部分,主要介绍高可用存储架构,分别介绍了双机架构和集群架构以及各种具体方案的优缺点和应用场景。
aneutron
2022/08/19
5130
从0开始学架构-读书笔记
在一个分布式系统(指相互连接并共享数据的节点的集合)中,当涉及读写操作时, 只能保证一致性(Consistence),可用性(Availability),分区容错性(Partition Tolerance)三者中两个,另外一个必须牺牲。
_春华秋实
2023/09/12
2190
数据库高可用架构了解一下
数据存储高可用的方案本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用。常见的高可用架构有主备、主从、主从切换、主主等接下来我们聊聊每种架构的优缺点。
JAVA日知录
2019/11/19
9810
数据库高可用架构了解一下
高可用架构设计之无状态服务
事故的发生是量的积累的结果,任何事情都没有表面看起来那么简单,在软件运行的过程中,随着用户量的增加,不考虑高可用,迟早有一天会发生故障,不得事先考虑高可用设计,而高可用是一门庞大的学问。
架构之家
2022/07/12
5060
高可用架构设计之无状态服务
架构设计之一——基础架构
•典型表现有软件质量低下、项目无法如期完成、项目严重超支等,因为软件而导致的重大事故时有发生。
aneutron
2022/08/10
7770
架构设计 4-高可用架构之FMEA方法
导读:《架构设计》系列为极客时间李运华老师《从0开始学架构》课程笔记。本文为第三部分,主要介绍 FMEA 方法,以及如何将 FMEA 方法应用于架构设计之中以提高服务可用性。
aneutron
2022/08/19
6320
玩转企业集群运维管理系列(九):企业集群高可用架构详解
集群是一组协同工作的服务集合,用来提供比单一服务更稳定、更高效、更具扩展性的服务平台。
民工哥
2023/12/12
7220
玩转企业集群运维管理系列(九):企业集群高可用架构详解
Openshift的高可用架构设计
第一部分:高可用设计 一、Openshift架构 Openshift架构如上图,其核心组件有: ●Multiple Masters ●External etcd ●Routers ●Registr
魏新宇
2018/03/22
2.6K0
Openshift的高可用架构设计
架构设计---高可用的处理
系统的高可用架构就是要在上述各种故障情况下,保证系统依然可用提供服务,具体包括以下几种架构方案。
小马哥学JAVA
2023/02/27
4180
架构设计---高可用的处理
推荐阅读
相关推荐
谈谈高可用计算架构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档