系统架构高可用系统设计原则01(代码片段)

author author     2023-03-09     388

关键词:

一、也谈谈高可用
“高可用性”(High Availability)简称HA,通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。通俗来讲就是通过专业的设计保障系统相关服务能够不间断的稳定运行。
度量方式:
%availability=(Total Elapsed Time-Sum of Inoperative Times)/ Total Elapsed Time

        可用性和系统组件的失败率相关。衡量系统设备失败率的一个指标是“失败间隔平均时间”MTBF(mean time between failures)。通常这个指标衡量系统的组件,如磁盘:
        MTBF=Total Operating Time / Total No. of Failures

二、高可用设计方案目标定义:

  1. 保持业务高稳定性

系统稳定性是高可用的根本目的,通俗的说,系统能持续可用,不会无故宕机,在高压下仍然能正常工作。

  1. 支持故障的快速定位(建立分层监控)

从实际工程的角度看,不出故障的服务是不存在的,所以出了故障要能够快速发现和定位,在外部用户发现前,通过报警机制,能准确定位故障原因,帮助工程师尽快处理问题,防止进一步影响业务。

  1. 支持业务的快速恢复

业务可以通过以上三个方面建立

三、架构设计的原则:
(1)无状态设计
技术图片
① 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息。如果还有其他信息需要存储,可以将信息放在一个单独可共享的地方,独立于server存在,比如,同样还是采取session的方式,在服务端保存数据,减少每次client请求传输的数据量(节省流量);但是将session集中存放,比如放在单独的session层里。
这种情况下,server同样是无状态的,可以做水平扩展。如果server是无状态的,那么对于客户端来说,就可以将请求发送到任意一台server上,然后就可以通过负载均衡等手段,实现水平扩展。
② 如果server是有状态的,那么就无法很容易地实现了,因为客户端需要始终把请求发到同一台server才行,所谓“session迁移”等方案,也就是为了解决这个问题。
③将有状态服务转换成无状态服务,无状态服务是相对隔离和平等的,当某台服务器出错,通过负载均衡策略会将流量划走到其他无状态服务器上。
同样还是采取session的方式,在服务端保存数据,减少每次client请求传输的数据量(节省流量);但是将session集中存放,比如放在单独的session层里。这种情况下,server同样是无状态的,可以做水平扩展,如下图:
技术图片

(2)冗余设计
无状态服务故障转移过程中,需要服务做成冗余设计才能实现。

    几个概念:
    ①SOA(Service-Oriented Architecture),SOA解决多服务凌乱问题,SOA架构解决数据服务的复杂程度,同时SOA又有一个名字,叫做服务治理。
    ②微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
    ③SLA:服务等级协议(简称:SLA,全称:service level agreement)。是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。

架构设计手册(代码片段)

架构设计参考手册系统设计的一些原则在设计系统时,应该多思考墨菲定律在系统划分时,也要思考康威定律高并发原则高可用原则业务设计原则总结负载均衡与反向代理Nginx负载均衡算法失败重试健康检查备份上游服务... 查看详情

mysql高可用架构(代码片段)

高可用HA(HighAvailability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时... 查看详情

《从0开始学架构》-第1部分-架构基础

...底指什么? 涉及到的关键概念分析: 区别与联系系统与子系统系统系统泛指由一群有关联的个体组成 查看详情

系统高可用架构的几点思考(代码片段)

文章目录系统高可用架构一、高可用架构简介系统可用性的度量故障原因什么是高可用的系统架构二、高可用架构理论三、架构模式主备复制主从复制集群+分区四、高可用的应用负载均衡分布式Session五、高可用的服务分级管... 查看详情

谈如何设计一个秒杀系统(重点)(代码片段)

...面独立出一个库,做特殊的处理。其次,还需要针对秒杀系统做一些保护,针对意料之外的情况设计兜底方案,以防止最坏的情况发生。API设计原则值得注意的地方是:如果想打造并维护一个超大流量并发读写、高性能、高可用... 查看详情

01overview

随着然健系统规模的增加,计算相关的算法和数据结构不再构成主要的设计问题;当系统由许多部分组成时,整个系统的组织,也就是所说的“软件架构”,导致了一系列的新的设计问题。架构设计本身是为了解决软件的... 查看详情

高并发系统设计三(提升性能)(代码片段)

提到互联网系统设计,你可能听到最多的词儿就是“三高”,也就是“高并发”“高性能”“高可用”,它们是互联网系统架构设计永恒的主题。在前两节课中,我带你了解了高并发系统设计的含义,意义以... 查看详情

k8s-高可用架构设计(代码片段)

...、使用阿里云日志服务收集日志。部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题,所以本文档主要适合于那些有一定kubernetes基础,想通过一步步部署的方式来学习和了解系统配置、运行原理的人。本... 查看详情

分布式存储系统架构设计,应该遵循什么样的原则?(代码片段)

分布式存储系统架构设计,应该遵循什么样的原则?分布式存储系统,本质是将数据分散存储在多台独立的x86设备上。传统的网络存储系统通常采用集中的存储服务器存放数据,存储服务器很容易成为系统性能的瓶颈,也容易成... 查看详情

成为架构师课程系列高并发系统设计的三大目标:高性能高可用可扩展

系统设计目标1:如何提升系统性能?提到互联网系统设计,你可能听到最多的词儿就是 三高,也就是 高并发、高性能、高可用,它们是互联网系统架构设计永恒的主题。在前两节课中,我带你了解了高并发系统设计的... 查看详情

高可用与可伸缩架构(代码片段)

分布式业务系统设计的时候,基本的问题有:1.高可用2.可伸缩3.容错性(弹力设计)4.高性能以上是最基本的业务诉求。而在分布式基础系统设计的时候,基本的问题有:1.体系结构2.进程3.通信4.命名5.同步6.一致性与复制7.容错性8.... 查看详情

面向业务的立体化高可用架构设计

...立体化高可用架构设计摘要:为了实现阿里九游游戏接入系统的业务高可用,技术人员跳出传统的面向系统的高可用的思路,转而从业务的角度来整体考虑高可用,最终实现了一套立体化的高可用架构,本文逐一展示这套立体化... 查看详情

读书笔记思考总结《akf15条架构原则》

...API一般部署服务器至少>=2个。(高可用)回滚设计确保系统可以回滚到以前发布过的任何版本。可以通过发布系统保留历史版本。发布阶段做到可监控、可灰度、可回滚。(高可用)禁用设计高可用:能够关闭任何发布的功... 查看详情

读书笔记思考总结《akf15条架构原则》

...API一般部署服务器至少>=2个。(高可用)回滚设计确保系统可以回滚到以前发布过的任何版本。可以通过发布系统保留历史版本。发布阶段做到可监控、可灰度、可回滚。(高可用)禁用设计高可用:能够关闭任何发布的功... 查看详情

高可用高扩展低延迟交易处理系统架构设计

...一个高TPS、高可靠性、高扩展性、低响应延迟的交易处理系统,在系统架构设计上,需要有诸多考虑。 1.交易处理系统的功能 交易系统是用于连接多个不同的交易请求系统(上游系统)与交易受理系统(下游系统),在... 查看详情

如何构建高可用的分布式系统

...作大型网站,实现最终目标。  这篇文章主要侧重于Web系统,并且也适用于其他分布式系统。  Web分布式系统设计的原则  构建并运营一个可伸缩的Web站点或应用程序到底指的是什么?在最初,仅是通过互联网连接用户和... 查看详情

高可用架构和系统设计经验

...层面、异常应急层面这六大层面去剖析一个高可用架构和系统需要有哪些关键的设计和考虑。一、高可用系统架构设计思想1-1、可用性和高可用概念可用性是一个可以量化的指标,计算的公式在维基百科中是这样描述的:... 查看详情

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

...第04:分布式数据存储第05:分布式服务框架第06:高性能系统架构第07:高可用系统架构第08:系统的安全架构第09:架构实战案例分析第10:如何成为技术专家系统的垂直伸缩,水平伸缩系统的性能瓶颈:分部式缓存;分布式数... 查看详情