科普文:分布式架构中的三高:高并发、高性能、高可用

news2024/11/22 14:45:45

关于高并发

高并发场景

互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻 辑,转变为如何满足大量用户的高并发访问请求。

一个简单的计算处理过程,如果一旦面对大量的用户访问,整个技术挑战就会变得完全不 同,软件开发方法、技术团队组织、软件的过程管理都会完全不同。

科普文:Nginx 高并发魔法打破性能瓶颈的终极秘籍-CSDN博客

实战:搞懂Redisson、分布式锁、限流器_redisson分布式限流-CSDN博客

科普文:12种常见的软件架构_软件系统架构有哪几种-CSDN博客

限流:深入理解微服务高可用三板斧“限流”_微服务治理三板斧-CSDN博客

科普文:深入理解负载均衡(四层负载均衡、七层负载均衡)_第七层负载均衡-CSDN博客

Java web应用性能分析之【高并发之降级】-CSDN博客

Java web应用性能分析之【高并发之限流】_web服务限流-CSDN博客

Java web应用性能分析之【高并发之缓存-多级缓存】_java多级缓存-CSDN博客

架构策略

垂直伸缩

垂直伸缩,就是提升单台服务器的处理能力。

比如用更快频率的 CPU,用更多核的 CPU,用更大的内存,用更快的网卡,用更多的磁盘组成一台服务器,使单台服务器的处理能力得到提升。

垂直伸缩带来的价格成本和服务器的处理能力并不一定呈线性关系。

增加同样的费用,并不能得到同样的计算能力。而且计算能力越强大,需要花费的钱就越多。

而且,受计算机硬件科技水平的制约,单台服务器的计算能力并不能无限增加,而互联网,特别是物联网的计算要求几乎是无限的。

因此,在互联网以及物联网领域,并不使用垂直伸缩这种方案,而是使用水平伸缩。

水平伸缩

所谓的水平伸缩,指的是不去提升单机的处理能力,而是使用更多的服务器,将这些服务器构成一个分布式集群,通过这个集群,对外统一提供服务,以此来提高系统整体的处理能力。

但是要想让更多的服务器构成一个整体,就需要在架构上进行设计,让这些服务器成为整体 系统的一个部分,将这些服务器有效地组织起来,统一提升系统的处理能力。

这就是互联网应用和云计算中普遍采用的分布式架构方案。

分布式技术方案
  • 分布式缓存
  • 负载均衡
  • 反向代理与 CDN
  • 分布式消息队列
  • 分布式数据库
  • NoSQL 数据库
  • 分布式文件
  • 搜索引擎
  • 微服务

将这些分布式技术整合起来,就是分布式架构方案

互联网分布式架构演化
单机架构

微服务架构

分布式缓存架构

负载均衡架构

数据库读写分离

消息队列&反向代理&CDN&分布式数据库架构

海量数据的存储,主要通过分布式数据库、分布式文件系统、NoSQL 数据库解决。

直接在数据库上查询已经无法满足这些数据的查询性能要求,还需要部署独立的搜索引擎提供查询服务。

同时减少数据中心的网络带宽压力,提供更好的用户访问延时,使用 CDN 和反向代理提供前置缓存,尽快返回静态文件资源给用户。

为了使各个子系统更灵活易于扩展,则使用分布式消息队列将相关子系统解耦,通过消息的发布订阅完成子系统间的协作。

使用微服务架构将逻辑上独立的模块在物理上也独立部署,单独维护,应用系统通过组合多个微服务完成自己的业务逻辑,实现模块更高级别的复用,从而更快速地开发系统和维护系统。

关于高性能

高性能场景

互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻 辑,转变为如何满足大量用户的高并发访问请求。

衡量指标

4个性能指标:并发数不变,响应时间足够快,单位时间的吞吐量就会相应的提高。

  • 响应时间:指从发出请求开始到收到最后响应数据所需要的时间。反映系统快慢。
  • 并发数:系统同时处理的请求数。反映系统负载。
  • 吞吐量:单位时间内,系统处理请求的数量。体现系统处理能力。
    • HTTP请求数:HPS
    • 每秒事务数:TPS
    • 每秒查询数:QPS
  • 性能计数器:
    • 系统负载System Load
    • 对象和线程数
    • 内存使用
    • CPU使用
    • 磁盘和网络

性能测试

  • 性能测试
  • 负载测试
  • 压力测试
  • 稳定性测试

性能优化

性能优化5个过程

  • 1.性能测试
  • 2.性能分析
  • 3.性能优化
  • 4.性能测试
  • 5.是否符合预期性能目标

性能优化策略

  • 1.数据中心优化
  • 2.硬件优化
  • 3.操作系统优化
  • 4.虚拟机优化
  • 5.基础组件优化
  • 6.架构优化
    • 缓存
    • 消息队列
    • 集群
  • 7.代码优化
    • 使用合理的数据结构优化性能
    • 编写性能更好的SQL语句
    • 实现异步I/O与异步方法调用

关于高可用

高可用场景

我们知道,Web 应用在各种情况下都有可能不可访问,也就是不可用。

各种硬件故障,比如应用服务器及数据库宕机、网络交换机宕机、磁盘损坏、网卡松掉等等。还有各种软件故障,程序 Bug 什么的。即使没有 Bug,程序要升级,必须要关闭进程重新启动,这段时间应用也是不可用的;

此外,还有外部环境引发的不可用,比如促销引来大量用户访问,导致系统并发压力太大而崩溃,以及,黑客攻击、机房火灾、挖掘机挖断光缆,各种情况导致的应用不可用。

而互联网的高可用是说,在上面各种情况下,应用都要是可用的,用户都能够正常访问系统,完成业务处理。

衡量指标

业界通常用多少个 9 来说明互联网应用的可用性。

  • 两个9:系统基本可用,年度不可用时间小于88小时
  • 三个9:系统较高可用,年度不可用时间小于9个小时
  • 四个9:具有自动恢复能力的高可用,年度不可用时间
  • 五个9:极高的可用性,年度不可用时间小于5分钟

我们熟悉的互联网产品的可用性大多是 4 个 9。淘宝、百度、微信,差不多都是这样。

相对支付宝的可用性超过 99.99%,Twitter 的可用性只有 98%。

在互联网企业中,为了更好地管理系统的可用性,界定好系统故障以后的责任,通常会用故障分进行管理。

架构策略

  • 提高应灾能力
    • 冗余备份:数据库主主复制
    • 负载均衡
    • 异地多活
  • 保护策略
    • 失败隔离:限制影响范围。主要架构技术是消息队列
    • 限流降级

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java1.0标准之重要特性及用法实例(十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列…

aspeed 2600适配u-boot/kernel

1.说明 本文采取aspeed sdk v09.01版本来适配自己的实际的硬件开发平台。!!非采取qemu模拟方式!! 2.采用的镜像文件 2.1 采用网站编译好的镜像 采用网站: https://github.com/AspeedTech-BMC/openbmc/releases的文件: 1.ast2600-default-515-obmc.tar.gz.选择里面的文件ima…

【初阶数据结构篇】单链表的实现(赋源码)

文章目录 单链表的实现代码位置概念与结构概念:结构: 链表的性质链表的分类单链表的实现单链表的创建和打印及销毁单链表的创建单链表的打印单链表的销毁 单链表的插入单链表头插单链表尾插单链表在指定位置之前插入数据单链表在指定位置之后插入数据 单…

ChatTTS(文本转语音) 一键本地安装爆火语音模型

想不想让你喜欢的文章,有着一个动听的配音,没错,他就可以实现。 ChatTTS 是一款专为对话场景设计的文本转语音模型,例如 LLM 助手对话任务。它支持英语和中文两种语言。 当下爆火模型,在Git收获23.5k的Star&#xff…

Flink-CDC解析(第47天)

前言 本文主要概述了Flink-CDC. 1. CDC 概述 1.1 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称 ,在广义的概念上,只要是能捕获数据变更的技术,都可以称之为 CDC。 核心思想是&#xff0c…

【C语言】【数据结构】二分查找(数组的练习)

目录 一、什么是二分查找 二、算法思想 2.1、概述 2.2、举例 (1)查找3(数组里面存在的数) (2)查找12(数组里面不存在的数) 三、代码实现 四、计算mid公式的优化 一、…

二阶段测试:

二阶段测试: 架构: 服务器类型部署组件ip地址DR1调度服务器 主(ha01)KeepalivedLVS-DR192.168.60.30DR2调度服务器 备 (ha02)KeepalivedLVS-DR192.168.60.40web1节点服务器 (slave01)NginxTomcatMySQL 备MHA managerMHA node192.…

Open3D 点云按xyz轴等距切片

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2按x轴切片 3.3按y轴切片 3.4按z轴切片 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总&#xff…

计算机网络通信基础概念

目录 1、网络通信的本质 2、网络的发展 3、网络协议(TCP\IP协议) 3.1 协议实现通信的原理 3.2 协议的具体概念 3.3 协议的模型 4、数据链路层 5、网络协议栈和操作系统的关系 6、网络协议通信过程 6.1 通信过程的封装与解包 7、以太网通信…

助力樱桃智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下樱桃成熟度智能检测识别系统

随着科技的飞速发展,人工智能(AI)技术已经渗透到我们生活的方方面面,从智能家居到自动驾驶,再到医疗健康,其影响力无处不在。然而,当我们把目光转向中国的农业领域时,一个令人惊讶的…

【AI】SpringCloudAlibaba AI 学习

Spring Cloud Alibaba AI 简介 Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 Java AI 应用。 官网: https://sca.aliyun.com/ https://sca.aliyun.co…

理解 HTTP 请求中 Query 和 Body 的异同

本文将深入探讨HTTP请求中的两个关键要素:查询参数(Query)和请求体(Body)。我们将阐明它们之间的差异,并讨论在何种情况下使用每一种。 HTTP 请求概述 HTTP 请求是客户端(如浏览器&#xff09…

知道秘密的人

一、力扣题目: 二、理论分析 由于 天数是一天一天变化的,用 数组的下标代表天数i, 数组中的 数据代表知道秘密在第i天的人数 假设在某个人在知道秘密的第3天开始传播,在第6天忘记,由于 第1天1个人发现了秘密 spread为能传播秘密的…

MATLAB-bode图编程

num[1 1];den [2 1];tf(num,den)bode(tf(num,den));hold on

【QT】TCP

目录 核心API 示例:服务器和客户端信息互发 服务器代码实现 第一步:创建QTcpServer对象的实例 第二步:绑定信号槽,处理新的连接 第三步:绑定并监听端口号 客户端代码实现 第一步:创建socket对象的实…

【计算机网络】WireShark和简单http抓包实验

一:实验目的 1:熟悉WireShark的安装流程和界面操作流程。 2:学会简单http的抓取和过滤,并分析导出结果。 二:实验仪器设备及软件 硬件: Windows 2019操作系统的计算机等。 软件:WireShark、…

智能PDF转markdown

嘿,各位技术大咖们,今天我要给大家带来一个超酷的项目——“智能PDF转Markdown”,这可是数字化办公的神器,基于Marker技术,让PDF文档秒变Markdown,轻松应对RAG知识库构建等任务的挑战! 打造了一…

Python | Leetcode Python题解之第299题猜数字游戏

题目: 题解: class Solution:def getHint(self, secret: str, guess: str) -> str:bulls 0cntS, cntG [0] * 10, [0] * 10for s, g in zip(secret, guess):if s g:bulls 1else:cntS[int(s)] 1cntG[int(g)] 1cows sum(min(s, g) for s, g in z…

学习笔记 韩顺平 零基础30天学会Java(2024.7.22)

P407 接口使用细节2 P407 接口课堂练习 对于最后一个的输出:B因为实现了A的接口,所以和继承一样,B可以访问A的变量 P409 接口VS继承 接口对单继承机制(是指只能继承一个类)进行了补充 也可以理解为,子类通过…