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

架构设计---高可用的处理

作者头像
小马哥学JAVA
发布于 2023-02-27 06:53:47
发布于 2023-02-27 06:53:47
4010
举报
文章被收录于专栏:JAVA开发专栏JAVA开发专栏

前言:

系统的高可用架构就是要在上述各种故障情况下,保证系统依然可用提供服务,具体包括以下几种架构方案。

冗余备份:

各种服务器故障是不可避免的,架构设计上就要保证,当服务器故障的时候,系统依然可用访问。

冗余备份是提供同一服务的服务器要进行冗余备份的处理,即任何服务都不能只有一台服务器,服务器之间要互相进行备份处理,任何一台服务器出现故障的时候,请求可用发送到备份的服务器去处理,这样,即使某台服务器失效,系统依然是可用的。

负载均衡架构中,可用将多台应用服务器构成一个集群一起对外提供服务,这样可以利用多台应用服务器的计算资源,满足高并发的用户访问请求,事实上,负载均衡可以实现系统的高可用。

负载均衡服务器通过心跳检测发现集群中某台应用服务器失效,然后负载均衡服务器就不将请求分发给这台服务器,对用户而言,也就感觉不到存在服务器失效的情况,系统依然是可用的。

像阿里巴巴这样的大厂就是通过这种方式来实现的,应用程序升级的时候,停止应用进程,但是不影响用户的访问,因为应用程序部署在多台服务器上面,应用程序升级的时候,每次只停止一台或者一部分服务器即可,在这些机器上进行程序升级,这个时候,集群中海油其他服务器在提供服务器,因此用户感觉不到服务器已经停机了。

失败隔离:

保证系统高可用的另外一个策略是失败隔离,将失败隔离在一个较小的范围之内,使故障影响范围不扩大,失败隔离的主要架构技术是消息队列

消息的生产者和消费者通过消息队列进行隔离,如果消费者出现故障的时候,生产者可以继续向消息队列发送消息,而不会感知到消费者的故障,等消费者恢复正常以后再去从消息队列中消费消息,所以用户处理的视角来看,系统一直是正常使用的。

例如:发送邮件或者短线的消费者出现了故障,不会影响到生产者应用的运行,也不会影响发送短线等其他消费者的正常的运行。

另一方面,由于分布式消息队列具有削峰填谷的作用,所以在高并发的时候,消息的生产者可以将消息缓冲在分布式消息队列中,消费者可以慢慢地从消息队列中处理,而不会将瞬时的高并发负载压力直接对整个系统进行施压的冲击。导致系统的崩溃,也就是将压力给降下来,使消息生产者的访问压力不会直接传递到消息的消费者上面,这样可以提高数据库的可用性。

消息队列还使得程序解耦,将程序的调用和依赖隔离开来,低耦合的程序更加易于维护,可以减少程序出现的bug的可能性。

限流降级:

限流和降级是保护系统高可用的一种手段,在高并发场景下,系统的访问量超过了系统的承受能力的话,可以通过限流对系统进行保护,限流是指对进入系统的用户请求进行流量的限制处理,如果访问量超过了系统的最大处理能力的话,就会丢失一部分的用户请求,保证整个系统可以正常使用,保证了大部分用户的访问系统是正常的,这样虽然有一部分用户的请求被丢弃,产生了部分的不可用,但是对于整个系统都崩溃来说,比较友好。

降级是保护系统的另一种手段,有一些系统功能是非核心的,但是他也给系统产生了非常大的压力,比如说电商系统中确认收货这个功能,即使我们不去确认收货,系统也会超时自动确认收货的处理。

但是实际上确认收货这个操作是一个非常中的操作,因为它会对数据库产生很大的压力,他要进行更改订单的状态,完成支付的确认,进行评价等一系列的操作,如果在系统中高并发的时候去完成这些操作,那么会对系统进行雪上加霜,使得系统的处理能力更加的恶化。

解决的办法是在系统高并发的时候,比如说淘宝双11的时候,当天可能整天系统都处于一种极限的高并发访问压力之下,这个时候就可以把确认收货、评价这些非功能进行关闭处理,将宝贵的系统资源保留下来,让给正在购物的人进行下单交易的处理。

异地多活:

异地多活的原理,采用了异地多活的多机房的机制,数据中心分布叜多个不同地点的机房里面,这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问处理,这样每个机房都可以提供完整的系统服务,即使某一个机房不可使用,系统也不会产生宕机的可能,保证了系统的可用性。

异地多活架构考虑的重点就是,用户请求如何分发到不同的机房上面。这个主要可用在域名解析的时候完成操作,也就是用户进行域名解析的时候,会根据就近原则或者其他的一些策略,完成用户请求的分发,另一个至关重要的技术点是,因为是多个机房都可以独立对外提供服务,所以也就意味着每个机房都要有完整的数据记录,用户在任何一个机房完成的数据操作,都必须同步传输给其他机房,进行数据实时的同步处理。

数据库实时同步最重要的关注点是数据冲突的问题,同一条数据,同时在两个数据中心被修改了,该如何进行解决处理,为了解决这种数据冲突的问题,某些容易引起数据冲突的服务采用类似MySql的主主模式进行处理,也就是说多个机房在某个时刻有一个主机房的,某些请求只能到达主机房才能被处理,其他的机房不处理这一类的请求,使用该方法进行避免产生数据的冲突。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小马哥学JAVA 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
11个高可用设计实战技巧,轻松应对大厂面试
面对一个庞然大物,如果没有一个合理的分工分层。任何一个小小失误都会被无限放大,酿成巨大灾难。
微观技术
2024/07/04
2621
11个高可用设计实战技巧,轻松应对大厂面试
从互联网大厂,看互联网行业的高可用网络架构
高可用,英文单词High Availability,缩写HA,它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性,如下表:
通信行业搬砖工
2023/09/07
4960
从互联网大厂,看互联网行业的高可用网络架构
大型网站架构基础,我们需要知道这八个架构范式
今天我会跟大家分享的是,我们在做大型网站基础架构的时候,要知道的这八个架构范式,帮助大家了解大型网站架构中相对成熟且经过大量案例检验的这些技术和方案。
brookwang
2022/06/24
4930
大型网站架构基础,我们需要知道这八个架构范式
如何设计一个高并发系统?
如果并发访问系统的用户非常多,每次用户访问页面的时候,都通过服务器动态渲染,会导致服务端承受过大的压力,而导致页面无法正常加载的情况发生。
苏三说技术
2023/09/10
7760
如何设计一个高并发系统?
高并发高可用高性能的解决方案汇总整理
大家好,又见面了,我是你们的朋友全栈君。 难题与方案 1、亿级流量电商网站的商品详情页系统架构 面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问,同时能够秒级让最
全栈程序员站长
2022/08/04
2.7K0
高并发高可用高性能的解决方案汇总整理
架构概述之架构演化、模式与核心要素
如何打造一个高可用、高性能、易扩展、可伸缩且安全的应用系统?相信这是困扰着无数开发者的难题,在这里我们以一个网站为例,来讨论一下如何做好大型应用系统的架构设计。
架构之家
2022/07/12
2840
架构概述之架构演化、模式与核心要素
高并发架构设计方法:面对高并发,怎么对症下药?
我们知道,“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发,那简直不好意思跟同行讨论。但事实上,在架构设计领域,高并发的历史非常短暂,这一架构特性是随着互联网,特别是移动互联网的发展才逐渐变得重要起来的。
小熊学Java
2023/11/28
4900
高并发架构设计方法:面对高并发,怎么对症下药?
高可用架构:如何做到应用升级无感知
十几年前,我参加阿里巴巴面试的时候,觉得阿里巴巴这样的网站Web应用开发简直小菜,因为我之前是做类似Tomcat这样的Web容器开发的,所以面试的时候信心满满。
wayn
2024/03/11
3360
高可用架构:如何做到应用升级无感知
高并发、高性能、高可用、高安全架构设计
在现代互联网应用中,设计一个高并发、高性能、高可用和高安全的系统架构是至关重要的。本文将从这四个方面详细阐述如何构建这样一个系统。
Michel_Rolle
2024/08/02
2.7K0
聊聊高可用的 11 个关键技巧
面对一个庞然大物,如果没有一个合理的分工分层。任何一个小小失误都会被无限放大,酿成巨大灾难。
微观技术
2022/05/27
3850
聊聊高可用的 11 个关键技巧
工作十年,在腾讯沉淀的高可用系统架构设计经验
👉腾小云导读 在系统的开发过程中,很多开发者都为了实现系统的高可用性而发愁。本文从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用系统的架构设计需要有哪些关键的设计和考虑。希望腾讯的经验方法,能够给广大开发者提供参考。内容较长,您可以收藏后持续阅读。 👉看目录点收藏,随时涨技术 1 高可用系统的架构设计思想     1.1 可用性和高可用概念     1.2 高可用系统设计思想 2 研发规范层面     2.1 方案设计和编码规范     2.2 容量规划
腾讯云开发者
2023/03/14
5.4K0
工作十年,在腾讯沉淀的高可用系统架构设计经验
如何打造一个高并发,处理海量数据,高性能,易扩展,可伸缩,高可用的网站?
简而言之,采用分布式系统,分布式应用和服务,分布式数据和存储,分布式静态资源,分布式计算,分布式配置和分布式锁。
lyb-geek
2018/10/24
1.3K0
B 站崩了,总结下「高可用」和「异地多活」
不用想象一种异常场景了,这就真实发生了:B 站晚上 11 点突然挂了,网站主页直接报 404。
悟空聊架构
2021/07/16
8240
B 站崩了,总结下「高可用」和「异地多活」
《从零开始学架构》笔记——第二部分:高性能和高可用架构模式
事务问题:一致性。 【问题】 如何保证主机和从机的数据一致???主从复制的延迟性问题。
Noneplus
2019/09/24
6050
技术角 | 架构学习书摘总结(三)高可用架构模式(下)
最近阅读了一本架构方面的入门图书叫《从零开始学架构:照着做,你也能成为架构师》,部分内容比较不错,先做书摘总结,以便加深印象与未来回顾学习。
ZNing
2020/05/13
8620
从运维角度看中大型网站架构的演变之路
网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解。
互联网老辛
2018/10/18
1.2K0
基础总结(系统设计/微服务/中间件)
注: 此系列内容来自网络,未能查到原作者。感觉不错,在此分享。不排除有错误,可留言指正。
fliter
2023/06/18
2720
基础总结(系统设计/微服务/中间件)
分布式架构中的三高:高并发、高性能、高可用
互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻 辑,转变为如何满足大量用户的高并发访问请求。
用户2146693
2021/11/24
8.5K0
分布式架构中的三高:高并发、高性能、高可用
秒杀架构设计
最近在部门内部分享了原来在电商业务做秒杀活动的整体思路,大家对这次分享反馈还不错,所以我就简单整理了一下,分享给大家参考参考
lyb-geek
2018/07/26
1.6K0
秒杀架构设计
高并发架构设计经验
高并发解决的核心问题是在同一时间上有大量的请求过来,然后我们的系统要怎么抗住这些请求带来的压力。比如在线直播服务,同时有上百万甚至上千万人观看。比如秒杀品,同时有大量用户涌入。
Allen.Wu
2022/11/14
1.3K2
推荐阅读
相关推荐
11个高可用设计实战技巧,轻松应对大厂面试
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文