高可用架构学习笔记--1

高可用架构模式——如何设计计算高可用架构 计算高可用架构设计摘要 计算高可用架构通过服务器冗余实现故障容错,核心设计围绕任务管理展开。主要架构包括: 主备架构:主机执行任务,备机待命,故障时需人工切换至备机。分为冷备(备机未启动)和温备(备机已启动),适合低频后台系统。 主从架构:主机和从机分别执行不同任务,需任务分类器支持。相比主备架构能更好利用硬件资源,但设计复杂度更高。 集群架构: 对称集群(负载均衡):各节点平等,自动分配任务并检测故障 非对称集群(如Master-Slave):角色分工,需复杂选举机制(如ZAB/Raft) 设计关键点在于 阅读详情

首先要明确一点:

要保证一个服务或应用永远完全可用几乎是不可能的。


如何度量一个网站的可用性?

看有几个9,比如QQ是四个9(99.99%),

2个9=基本可用

3个9=较高可用

4个9=具有自动恢复能力的高可用

5个9=极高可用(理想状态)

计算方法:(1-网站不可用时间/年度总时间)*100%


对于大多数情况,硬件故障是常态,所以,我们需要有软件的方法来保证服务的可用性,通常有如下手段:

数据和服务的(1)冗余备份 (2)失效转移

对于服务而言,一旦某个服务器宕机,就将服务切换到其他可用服务器上,

对于数据而言,如果某个磁盘损坏,就从备份的磁盘(事先就做好了数据的同步复制)读取数据。

可以通过负载均衡进行无状态服务的失效转移


应用服务器的session管理,单机情况下由Web服务器管理,集群的时候由于请求的分发是随机的,所以保证每次都能正确获得session比单机的时候要复杂很多。

集群环境中session管理的几种常见手段:

1、session复制:集群中的几台服务器之间同步session对象

优点:比较简单

缺点:该方案只适用于规模较小的情况,规模大的时候,大量的session复制操作会占用大量的服务器和网络资源

2、session绑定:利用负载均衡的源地址Hash算法,总是将源自于同一IP地址的请求分发到同一台服务器上,这样在整个会话期间,所有用户请求都会在同一台服务器上进行,即session绑定在某台特定的服务器上,保证session总能在这台服务器上获取。

优点:避免了大量的session复制备份

缺点:不符合高可用的需求,因为一旦某台服务器宕机,那么该机器上的session就不存在了,用户请求切换到其他服务器因为没有session而无法完成作业,因此很少有网站采用此方案进行session管理

3、cookie记录session:利用浏览器支持的cookie记录session简单易行,可用性高,因此许多网站或多或少都利用了cookie来记录session

优点:避开了前两种方法的缺点

缺点:受cookie大小限制,每次请求都要传cookie影响性能,用户关闭了浏览器cookie功能会造成访问的不正常

4、session服务器:利用独立部署的session服务器统一管理session,应用每次访问session时,都访问session服务器,这种方案实际是将应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器

对于有状态的session服务器,一种简单的方式是利用分布式缓存(如Memcached、Redis等)、数据库等,在这些产品的基础上进行封装,使其符合session的存储和访问要求。


高可用的服务模块为业务产品提供基础公共服务,在大型站点中这些服务通常都独立分布式部署,被具体应用远程调用,在具体实践中,有以下几点高可用的服务策略可以参考:

(1)分级管理:核心应用和服务具有更高的优先级,比如用户及时付款比能否评价商品更加重要;

(2)超时设置:设置服务的超时时间,一旦超时之后,通信框架抛出异常,应用程序则根据服务调度策略选择重试或将请求转移到其他服务器上;

(3)异步调用:通过消息队列等异步方式完成,避免了一个服务失败导致整个应用请求失败的情况;

PS:不是所有服务都可以异步调用,对于获取用户信息这类接口,采用异步方式会延长响应时间,得不偿失,对于那些必须确认服务调用成功后才能继续进行下一步的操作也不适合于异步调用。

(4)服务降级:网站访问的高峰期,为了保证核心服务的正常运行,需要对服务进行降级。

降级有两种手段:一种是拒绝服务,拒绝较低优先级的应用调用,减少服务调用的并发数,确保核心服务的正常运行。二是关闭功能,关闭部分不重要的服务,或者服务内部关闭部分不重要的功能,以节约系统开销,为核心应用让出服务资源。

(5)幂等性设计:保证服务重复调用和调用一次产生的结果相同。


保证数据高可用的主要手段有两种:一是数据备份,二是失效转移机制;

(1)数据备份:分为冷备份和热备份,冷备份是定期复制,不能保证数据的可用性。热备份又分为异步热备和同步热备,异步热备是指多分数据副本的写入操作是异步完成的,而同步备份是指备份数据的写入是同步进行的。

关系数据库的热备机制就是通常所说的主从同步机制,实践中通常采用读写分离的方法来访问Master和slave数据库,也就是写操作只访问Master库,而读操作均访问Slave库。

(2)失效转移:若数据库集群中任何一台服务器宕机,那么应用程序针对这台服务器的所有读写操作都要重新路由到其他服务器,保证数据访问不会失败。


高可用的几点QA:

(1)应用发布:在柔性发布过程中,每次关闭的服务都是集群中的一小部分,并在发布完成后立即可以访问;

(2)自动化测试:使用自动测试工具和脚本完成测试;

(3)预发布验证:引入预发布服务器,与正式服务器几乎一致,只是没有配置在负载均衡服务器上,外部用户无法访问;

(4)代码控制:git,svn等,目前Git是主流。


监控很重要:不要允许没有监控的系统上线!

1、监控数据采集

(1)用户行为日志搜集:服务器端的日志搜集和客户端的日志搜集;目前许多网站逐步开发基于实时计算框架Storm的日志统计与分析工具;

(2)服务器性能监控:收集服务器性能指标,如系统load、内存占用、磁盘IO,及时判断,防患于未然。

(3)运行数据报告:采集并报告,汇总后统一显示,应用程序需要在代码中处理运行数据采集的逻辑。

2、监控管理

(1)系统报警:配置报警阈值和值班人员联系方式,系统发生报警时,即使工程师在千里之外,也可以被及时通知。

(2)失效转移:监控到系统发生故障的时候,主动通知应用进行失效转移;

(3)自动优雅降级:为了应付网站的访问高峰,主动关闭部分功能,释放部分系统资源,保证核心服务的正常运行-->网站柔性框架的理想状态。








高可用架构设计 设计高可用的软件架构,是每个互联网软件开发工程师的追求。尤其对于在线交易系统、在线广告系统而言,服务的可用性会直接影响商业变现。随着互联网技术在工业界的广泛使用,各大互联网公司在各自的业务领域内,沉淀了成熟的高可用架构方案。那么究竟什么是高可用?高可用架构该如何设计呢? 度量 首先需要了解下什么是可用性以及如何度量可用性。对于一个交互式IT产品,是否可用是看用户能否用该产品完成他的任务。... 阅读详情

相关推荐

高可用架构模式——高可用存储架构(双机架构)

本文探讨了高可用存储架构中的数据冗余机制,重点分析了三种主流双机高可用方案:主备复制、主从复制和双机切换。主备复制通过数据备份实现简单冗余但不承担业务负载;主从复制扩展了读能力但存在数据一致性问题;双机切换引入自动故障转移机制,细分为互连式、中介式和模拟式三种实现方式,在状态传递、切换决策和数据冲突处理等方面各有优劣。文章指出,实际架构选择需权衡业务特性(读写比例)、复杂度与成本等因素,中介式方案因ZooKeeper等成熟组件的支持而更具实践价值。

小志的博客 1252

容错,高可用和灾备

什么是容错?什么是高可用?什么是灾备? 容错:发生故障时,如何让系统继续运行。 高可用:系统中断时,如何尽快恢复。 灾备:系统毁灭时,如何抢救数据。

MrRongzhen的博客 267

kubernetes高可用架构

在之前的实验中,kubernetes集群都是一台master和两台node组成的小集群,在实际的生产环境中需要考虑到集群的高可用。 在node节点实际已经实现了高可用,pod分布在不同的节点上,当一个节点宕机的时候,其上的pod会漂移到正常的节点上。所以,重点的高可用重心就要放在master上。 官方的master节点高可用架构 图中可以看出,用户通过kubectl发送命令经过LB进...

lyzkks的博客 7593

一个优秀的Java高级程序员应该读过哪些书(30本优秀书籍推荐)

深入理解Java虚拟机:JVM高级特性与最佳实践》PDF文档马士兵**「多线程与高并发」**在开头跟大家分享的时候我就说,面试我是没有做好准备的,全靠平时的积累,确实有点临时抱佛脚了,以至于我自己还是挺懊恼的。(准备好了或许可以拿个40k,没做准备只有30k+,你们懂那种感觉吗)如何准备面试?1、前期铺垫(技术沉积)程序员面试其实是对于技术的一次摸底考试,你的技术牛逼,那你就是大爷。大厂对于技术的要求主要体现在:基础,原理,深入研究源码,广度,实战五个方面,也只有将原理理论结合实战才能把技术点吃透。

2401_83916204的博客 705

高可用架构设计与实践综述

高可用架构设计与实践综述

木鱼时刻的专栏 1469

架构师之路 — 部署架构 — 高可用集群 — N+1 高可用模型

目录 文章目录目录前言高可用集群架构高可用集群模型模型N+1 模型N+1 模型关键技术单进程多定时器的设计冗余节点快速切换技术服务器池多级检测机制 前言 本地是对论文《服务器池的高可用 N+1 冗余结构模型》的学习记录,详细请浏览论文。 高可用集群架构 一主多备架构:同一时间只有一个 Master 节点提供服务,多个 Slave 备份节点用于替换。 多活架构:同一时间有多个处于 ACTIVE 状态的节点提供服务,通常结合负载均衡策略使用。 高可用集群模型模型 N+1 模型:有 N 个在工作,1 个空闲

烟云的计算 4092

《大型网站技术架构》读书笔记之五:万无一失之网站的高可用架构

一、可用性度量与考核   首先,不得不说:要保证一个网站永远完全可用几乎是一件不可能完成的任务(Mission Impossible,是不是有点碟中谍的感觉)。    (1)如何度量网站可用性?   一个神奇的数字—9!你有几个9,就代表了你的可用性。例如QQ可用性达到了4个9:99.99%   ①2个9=基本可用  ②3个9=较高可用  ③4个9=具有自动恢复能力

wogaoliang的专栏 1238

Redis高可用部署架构

Redis高可用部署可以采用主从复制与哨兵架构或Redis集群架构。下面将分别介绍这两种架构的架构图、优缺点和具体应用场景。

AI时代光年 4万+

高可用架构模式

架构里比较重要的是高性能、高可用、高扩展性。上次是高性能,这次是高可用。对一般的项目而言,高可用主要用公司提供的基建,如多机房部署、主从等。但有些项目确实需要思考更多高可用的事项,如资源不足的情况下要做好限流或者降配(以前做抢购和秒杀梳理出了所有限流和降配方案,分了一二级处理),有的是同时支持普通版和付费版,需要不同的集群部署,提供不同的资源容量。

1515

高可用架构 第1卷高可用架构 第1卷-高可用架构社区

高可用架构 第1卷-高可用架构社区。

高可用架构第一卷(part2 共两部分)

仅供学习之用,勿做商业用途,如有侵权,请告知删除,谢谢,本人花了几大洋从网上购买的,绝对清晰完整

高可用基本架构

一、什么是高可用集群 高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到最小程度。 二、 高可用集群的衡量标准 通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均故障维修时间(MTTR)来度量系统的可维护...

丶的博客 7334

高可用架构 第1卷 02

高可用架构 清晰带目录 第二个压缩包,共2个,需要全部下载才能解压缩

万字详解高可用架构设计

系统高可用是一个宏大的命题,从设计思想、架构原则到工程能力、服务管理等等方方面面,每个视角单拆出来都不是一篇文章可以解决的。本文将从大局上全面系统地梳理高可用系统架构,起到一个提纲挈领的作用。作者 | 黄规速出品 | 腾讯云开发者PART.00前言:海恩法则和墨菲定律海恩法则· 事故的发生是量的积累的结果。· 再好的技术、再完美的规章 , 在实际操作层面也无法取代人自身的素质和责任心 。薛定谔的猫...

优快云资讯 9605

高可用架构 第1卷 01

高可用架构 第1卷 ,我就不多说了,自己到京东查看详细的介绍。一共2个压缩包,清晰带目录。

高可用架构(第1-6期)-详细书签

高可用架构·(第1期)Docker实战.pdf+高可用架构·(第2期)不一样的数据库.pdf+高可用架构·(第3期)中国初创故事.pdf+高可用架构·(第4期)硅谷篇.pdf+高可用架构·(第5期)Learning as we Go.pdf+高可用架构·(第6期)高压下的演进.pdf

高可用架构,高性能架构和高并发架构

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号,2024电子工业出版社年度优秀作者。

huxian1234的专栏 2454

Ultralytics YOLOv8 英伟达™ Jetson®处理器部署

英伟达™(NVIDIA®)Jetson 是一系列嵌入式计算板卡,旨在为边缘设备带来加速的 AI(人工智能)计算。这些小巧而功能强大的设备围绕英伟达™(NVIDIA®)的GPU架构打造,能够直接在设备上运行复杂的人工智能算法和深度学习模型,而无需依赖云计算资源。Jetson 板卡通常用于机器人、自动驾驶汽车、工业自动化和其他需要在本地以低延迟和高效率执行人工智能推理的应用中。此外,这些板卡基于 ARM64 架构,与传统 GPU 计算设备相比运行功耗更低。英伟达™(NVIDIA®)JetPack SDK。

机器人控制与仿真应用 3875

架构之高可用

在数字化时代,系统的可用性直接关系到企业的生存和发展。一个高可用的系统能够持续为用户提供服务,即使在面临各种故障和挑战时也能保持正常运行。高可用架构设计是分布式系统架构中最重要的度量标准之一。 高可用法则强调:**通过消除单点故障、建立冗余机制、实现故障自动恢复,确保系统在各种异常情况下仍能保持服务的连续性和稳定性**。这不仅是对技术架构的要求,更是对业务连续性的保障。

d3y1`5 81_09 937

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8737

VSCode 中搭建 Python 开发环境

**验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。

寒寒豆豆软件公司的博客 2534
上一篇: NIO和阻塞io的读写文件效率差异
下一篇: IntelliJ Idea取消Could not autowire. No beans of 'xxxx' type found的错误提示
R先森
博客等级 码龄12年 193粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值