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

关于高并发

高并发场景

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

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

科普文: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.mzph.cn/diannao/51183.shtml

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

相关文章

人工智能类——计算机科学与技术

计算机科学与技术是一个非常大的门类。目前计算机科学与技术类招生的专业主要有计算机科学与技术、软件工程、网络工程、信息安全、物联网工程等,后面的几个专业是计算机科学与技术的重要分支,而这个门类的其他分支并没有单列出来一个本科专业&#xff0…

leetcode热题系列章节11

378. 有序矩阵中第K小的元素 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。 请注意,它是排序后的第k小元素,而不是第k个元素。 示例: matrix [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ], k …

【数据结构】顺序表(c语言实现)(附源码)

​ 🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 1.顺序表的概念与结构 2.顺序表的分类 3.顺序表的实现 3.1 结构定义及方法的声明 3.2 方法的实现 3.2.1 初始化 3.2.2 销毁 3.2…

Nvidia GPU驱动安装报错显卡与驱动不兼容(本身兼容)

最近在公司服务器上遇到了一个特别离谱的问题,就是在本身在nividia官网上面下载的匹配的显卡驱动,安装之后采用下面命令查看驱动显示: $ nvidia-smiNVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make su…

web服务器搭建练习

练习要求: 搭建一个web服务器,客户端通过www.haha.com访问该网站时能够看到内容:this is haha 完成过程: 1. 创建新ip,重启ens [rootlocalhost ~]# nmtui [rootlocalhost ~]# nmcli connection up ens1602.创建目录&#xff0…

Java面试八股之Spring boot的自动配置原理

Spring boot的自动配置原理 Spring Boot 的自动配置原理是其最吸引人的特性之一,它大大简化了基于 Spring 框架的应用程序开发。以下是 Spring Boot 自动配置的基本原理和工作流程: 1. 启动类上的注解 Spring Boot 应用通常会在主类上使用 SpringBoot…

微信支付v3

查看证书序列号 引用&#xff1a;https://wechatpay-api.gitbook.io/wechatpay-api-v3/chang-jian-wen-ti/zheng-shu-xiang-guan https://myssl.com/cert_decode.html # 查看证书序列号openssl x509 -in apiclient_cert.pem -noout -serial 微信支付java <dependency>…

sql-libs通关详解

1-4关 1.第一关 我们输入?id1 看回显&#xff0c;通过回显来判断是否存在注入&#xff0c;以及用什么方式进行注入&#xff0c;直接上图 可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显&#xff0c;所以我们可以使用联合查询。联合查询原理简单说一下&…

中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?

你是一个程序员&#xff0c;你用代码写了一个博客应用服务&#xff0c;并将它部署在了云平台上。 但应用服务太过受欢迎&#xff0c;访问量太大&#xff0c;经常会挂。 所以你用了一些工具自动重启挂掉的应用服务&#xff0c;并且将应用服务部署在了好几个服务器上&#xff0c;…

自动驾驶-机器人-slam-定位面经和面试知识系列06之C++STL面试题(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客&#xff08;某些文章上会附上内推码&#xff09;也会同步更新&a…

达梦数据库激活

SSH登录 192.168.0.148 账号&#xff1a;root 密码&#xff1a;xxx 1.上传 dm.key 文件到安装目录 /bin 目录下 cd /home/dmdba/dmdbms/bin rz -E dm.key2.修改 dm.key 文件权限 chown -R dmdba.dinstall dm.key3.打开数据库工具&#xff0c;新建查询&#xff0c;输入 cd /…

Macbook - MacOS14连接WIFI但无法打开部门网页或应用

现象&#xff1a; 遇到MacBook部分网页可以打开&#xff0c;部分网页不行。包括应用也是同个现象&#xff0c;重启路由器连接手机热点也无法解决。 解决方案&#xff1a; 系统设置/网络/位置&#xff0c;默认是【自动】&#xff0c;添加并选择新的位置即可解决。&#xff08;具…

实验2-1-5 输出带框文字

#include<stdio.h> int main(){printf("************\n");printf(" Welcome \n");printf("************\n");}

2024年【危险化学品生产单位安全生产管理人员】最新解析及危险化学品生产单位安全生产管理人员考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员最新解析参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考过的学员汇总&#xff0c;…

基于JSP的毕业生就业信息管理系统

你好&#xff0c;我是专注于信息系统开发的码农小野&#xff01;如果你对毕业生就业信息管理有需求&#xff0c;欢迎联系我。 开发语言&#xff1a;JSP 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 SSM框架 工具&#xff1a;Eclipse、Maven、Navicat 系统展示 首页…

nhdeep电子档案长期保存系统

nhdeep电子档案长期保存系统&#xff0c;用于导入管理系统中的著录项信息&#xff0c;并安装档案相关规范&#xff0c;转换为适合长期保存的电子文件格式和封装包结构&#xff0c;进行管理和存储。 著录信息列表页面&#xff0c;用于导入著录项&#xff0c;挂接原文文件&#…

【漏洞复现】CmsEasy crossall_act.php SQL注入漏洞

漏洞描述 CmsEasy存在SQL注入漏洞,通过文件service.php加密SQL语句执行即可执行任何SQL命令 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资…

protobuf2.5升级protobuf3.14.0

这个升级搞得心力憔悴&#xff0c;我VS2010升级到了VS2017&#xff0c;所有的库都要编译一下&#xff0c;想着顺便把其他的三方库也升级了。搞了好几天&#xff0c;才升级完&#xff0c;因为不仅要搞windows还要搞linux版本各种库的升级。hpsocket的升级&#xff0c;jsoncpp的升…

LLM 大语言模型显存消耗估计与计算

LLM 大语言模型显存消耗估计与计算 1. LLM 大语言模型开发流程 在大模型&#xff08;如 LLaMA-7B、GPT-3 等&#xff09;的开发、训练、微调、推理和部署过程中&#xff0c;各个阶段的流程都涉及多个复杂的步骤。以下是详细的流程描述&#xff0c;涵盖训练和微调的区别&#…