架构设计复杂度-高可用问题

高可用指的是系统无中断的执行功能的能力

一个系统不可能一直无中断的执行下去,干扰因素有三个方面

  1. 硬件因素,机器宕机
  2. 软件故障,软件BUG
  3. 不可抗因素,地震、火灾、断电等


解决高可用问题的方案

 本质上通过数据冗余备份和失效转移解决高可用问题,一台机器变成多台机器,单机变成集群架构

 从高可用种类角度解决高可用问题:

  • 任务分配器解决计算高可用问题,同一服务组件部署在多个服务器上
  • 异地备份解决存储高可用问题,数据存储在多台服务器上

 从引起高可用问题的因素角度解决高可用问题:

   软件:通过软件工程质量保证,通过预发布验证、严格测试、灰度发布等手段解决上线服务的故障

   硬件:应用层:负载均衡设备结合应用服务器集群通过心跳检测当应用服务器不可用时从服务器集群移除(应用层要进行无状态设计,应用逻辑和上下文分开)

      服务层:这些服务层硬件被应用层通过分布式服务框架(如Dubbo)访问,分布式框架在应用层程序中实现软件负载均衡,通过服务注册中心提供服务层硬件有效性检测,

          不可用则通知客户端程序修改服务列表,同时移除响应服务器

      数据层:数据写入时进行数据同步复制实现数据冗余备份,数据服务器宕机时,应用程序访问切换数据服务器

   不可抗:不可抗常常引起硬件的问题,常使用硬件因素的解决方案,对于玄学问题,可以模仿B站烧香



高可用的种类

  1. 计算高可用
  2. 存储高可用

  计算高可用的复杂度来源:

    任务分配器的增加(成本、性能、可维护性)、任务分配器与业务服务器的交互(需要管理连接)、任务分配器的算法

  存储高可用的复杂度来源:

    因为数据传输延迟导致的数据不一致性问题,CAP(一致性、可用性、分区容错性)三者需要权衡平衡取舍问题,其作者给出0.9+0.9+0.7的措施



高可用系统面临的理论局限性

  CAP定理



如何判断当前系统是否处于高可用状态(高可用方案带来的新问题)

  不要被字面意思迷惑,对于单台计算机来说,是否处于中断运行状态还是很好判断的,以下重点讨论的是,如何在集群中判断一个系统高可用,多个计算机到底哪个出了故障(其他正常的计算机应该处于一致状态),此类问题常见名词:心跳检测

以下为决策方案:

  • 中心独裁式
  • 协商式(master-slave)
  • 民主式

中心独裁决策一旦中心崩溃,决策瘫痪。

协商式决策有一个痛点,当协商双方信息交换通路出现问题,状态决策无法选举出master和slave,通常解决方案是在两台机器之间增加多条通路,但这样引入了新问题,即多条通路信息的取舍问题。

民主式类似区块链时用的决策算法,民主决策有一个固有的缺陷,即脑裂(选举出来多个结果),脑裂通常用“投票节点数必须超过系统总节点数的一半”策略解决。



高可用和高可靠

  高可用指的是正常提供服务的概率,数据指标常为故障恢复时间

  高可靠指的是出问题的概率,数据指标常为故障出现次数



通过冗余·实现的高可用也会出现一个通用问题:集体故障

原文地址:https://www.cnblogs.com/metashit/p/12675111.html

时间: 2024-11-10 23:49:23

架构设计复杂度-高可用问题的相关文章

亿级商品详情页架构演进技术解密 | 高可用架构系列

亿级商品详情页架构演进技术解密 | 高可用架构系列 --http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=210272034&idx=1&sn=3be9d2b53c7fec88716ee8affd2515f8&scene=1&srcid=UfXZNNOVZZyZjQmp0VOh&from=groupmessage&isappinstalled=0#rd 此文是开涛在[三体高可用架构群]之分享内容

大型网站技术架构 读书笔记4 高可用架构

说句掏心窝的话,高可用甚至比高性能更重要.为什么? 因为你把系统的性能优化10倍,你的老板可能会说:小董呀,干的不错. 可是,如果你负责的模块,三天两头就宕掉了,嘿嘿,你懂得. 可用性度量 99%-----网站年度不可用时间小于88个小时 99.9%---网站年度不可用时间小于9个小时 99.99%---网站年度不可用时间小于53分钟 高可用架构 一般的互联网公司大多采用pc级服务器,开源的数据库和操作系统,这样来说,当然节省成本,不过另一方面来说,服务器宕机就是一个大概率事件了. 所以,高可用

Spring Cloud构建微服务架构(六)高可用服务注册中心

在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是在之前的示例中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境,那么下面在前文的基础上,我们来看看该如何构建高可用的Eureka Server集群. 单点Eureka Server的样例: GitHub 开源中国 Eureka Server的高可用 Eureka Server除了单点运行之外,

阿里HBase高可用8年“抗战”回忆录

2017年开始阿里HBase走向公有云,我们有计划的在逐步将阿里内部的高可用技术提供给外部客户,目前已经上线了同城主备,将作为我们后续高可用能力发展的一个基础平台.本文分四个部分回顾阿里HBase在高可用方面的发展:大集群.MTTF&MTTR.容灾.极致体验,希望能给大家带来一些共鸣和思考. 大集群 一个业务一个集群在初期很简便,但随着业务增多会加重运维负担,更重要的是无法有效利用资源.首先每一个集群都要有Zookeeper.Master.NameNode这三种角色,固定的消耗3台机器.其次有些

高可用架构设计与实践

第一课:高可用架构知识原理篇 什么架构的高可用? 架构高可用的重要性? 架构高可用的常用手段都有哪些? 架构高可用评价维度是什么? 架构高可用的考核如何分级? 架构高可用的涉及环节都有哪些? 第二课:高可用架构设计之总体架构篇 高可用架构为什么需要分层? 高可用架构分层设计原则是什么?如何架构分层? 高可用架构分层最佳实践: 我们的实践案例: 第三课:高可用架构设计之硬件篇 如何选择硬件?选择什么样的硬件? 高可用架构硬件层面如何保证? 硬件层面高可用架构保证的最佳实践是什么? 我们的实践案例:

构架设计篇,规划超大型高可用网络架构第一章ip地址规划

前言:请珍惜别人的劳动成果,永远不要小看一个案例,包含的知识点多得你想都想不到,而且做案例的时候都是学完了最后课程以后,把知识点串联起来的.一个好的架构师一定知识面是博大的,全局观是很多人无法想象的,可能具体技术细节未必给你讲清楚,但是提供一种思想一种理念,所以在北京那边一个架构师一般年薪都是在30万以上,我看完了课程,但是里面的具体代码实现细节我不能消化,但我能理解那意思,我还需要至少半年,不断的重复去做实验敲命令代码,制作技术文档,才能有所成就,当然要做到一个顶级的额,是需要不断在工作中工作

数据库高可用实战案例-------架构优化之清爽一夏

说到高可用,看官们会想到很多方案,也许是自亲身经历过系统从单机变成高可用的痛苦过程,也许有的看官只是在自己的虚机上搭建过测试的玩具.今天本篇用我自己的真实经历给大家讲述,不管怎么样实战和测试玩耍还是很大的区别的!可能你觉得搭建一套高可用方案很简单,配置配置就OK了,但在真正的复杂系统中一切就没有那么轻松了! 文章主要讲述升级并搭建AlwaysOn高可用的过程,以实施的思路为主.文中并没有搭建集群的步骤,搭建步骤请自行学习. --------------博客地址------------------

高性能、高可用平台架构演变史

开篇概述 在如今移动互联网.互联网+.大数据的时代,各类的互联网网站.平台异常突起,如同雨后春笋,有种"忽如一夜春风来,千树万树梨花开"感觉.对于移动互联网时代的平台来说,用户的体验感是否良好?平台的稳定性是否良好?估计是对所有互联网平台来说两大头等要素吧,的确,移动互联网时代,流量就是市场价值,说白了就是收益,就是RMB,失去了流量,那么你也就失去了赚取收益的机会与机遇. 因此,对于互联平台或网站来说,网站的高可用.不间断服务也是平台运营过程中的一个重大决定因素,比如说某平台,三天两

高并发大访问量架构设计演进之路 归纳总结

第01:大型架构的演进之路第02(上):分布式缓存第02(下):分布式缓存第03:分布式消息队列第04:分布式数据存储第05:分布式服务框架第06:高性能系统架构第07:高可用系统架构第08:系统的安全架构第09:架构实战案例分析第10:如何成为技术专家 系统的垂直伸缩,水平伸缩系统的性能瓶颈:分部式缓存:分布式数据存储,分布式服务架构: 强烈的好奇心,工程技术,产生价值赚钱(科学研究不同)扎实的软件技术基础:操作系统,数据结构,设计模式,编程语言,出色的编程能力:优秀的代码深刻领悟主流技术产品