【架构设计】高并发架构实战:从需求分析到系统设计

 

写在前面 

很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设计经验呢?

1 高并发是什么

高并发是指系统在同一时间内处理的请求量非常大,通常是指每秒处理的请求量达到数千到数百万级别。

在互联网应用中,高并发是一个非常常见的问题,因为随着用户数量的增加,系统需要处理的请求量也会越来越大。

高并发的处理需要系统在短时间内处理大量的请求,因此对系统的稳定性和性能提出了很高

的要求。

1.1 常见的方法

为了解决高并发问题,需要在系统架构、设计和运维等方面进行优化,一些常见的方法包括:

  1. 分布式架构:采用分布式架构可以将系统拆分成多个子系统,每个子系统只处理一部分请求,这样可以减轻单个系统的负载。

  2. 缓存机制:通过缓存机制可以将一些常用的数据缓存起来,减少对数据库的访问,从而提高系统的性能。

  3. 负载均衡:采用负载均衡可以将请求均匀分配到多个服务器上,避免单个服务器过载,从而提高系统的可用性和性能。

  4. 数据库优化:对数据库进行优化可以提高系统的性能,包括合理使用索引、分库分表、读写分离等方面。

  5. 异步处理:采用异步处理可以将一些耗时的任务放到后台进行处理,从而避免对前端请求的阻塞,提高系统的并发处理能力。

总之,高并发是一个非常重要的问题,需要在系统架构、设计和运维等方面进行全面的优化,从而提高系统的性能和稳定性,保证系统能够正常处理大量的请求。

2 问题思考 

如何获得架构设计经验呢?

一方面可以通过工作来学习,观察所在团队的架构师是如何工作的,协助他做一些架构设计和落地的工作。同时,思考如果你是架构师,你将如何完成工作,哪些地方可以做得更好。

另一方面,也可以通过阅读来学习,看看那些典型的、耳熟能详的应用系统是如何设计的。同样,你也可以在阅读的过程中思考:如果你是这个系统的架构师,将如何进行设计?如何输出你的设计结果?哪些关键设计需要进一步优化?

通过这样不断地学习和思考,你就会不断积累架构设计的经验,等你有机会成为架构师的时候,就可以从容不迫地利用你学习与思考获得的经验和方法,开始你的架构师职业生涯。

2.2 图书推荐 

现在,知名技术畅销书作者李智慧老师的全新力作,基于真实经典案例改编的《高并发架构实战:从需求分析到系统设计》纸书终于出版!

2.3 详细介绍 

从需求分析到系统设计,通过八大维度、18个案例,全面介绍高并发系统的设计方法、核心技术与架构实践 

我们知道,“高并发”是现在系统架构设计的核心,也是很多大厂的关注焦点。一个架构师如果设计、开发的系统不支持高并发,那简直不好意思跟同行讨论。在应聘大厂架构师岗位的时候,如果你对高并发架构说不出什么,恐怕面试就凶多吉少了。 

在架构设计领城,高并发的历史非常短暂,这一架构特性是随着移动互联网的发展才逐渐变得重要起来的。

 2.4 现状分析

现在有很多大型互联网应用系统的用户是分布在全球的,用户体量动辄十几亿。这些用户即使只有千分之一同时访问系统,也会产生一百万的并发访问量。

因此,高并发是现在大型互联网系统必须面对的挑战,当同时访问系统的用户不断增加时,要消耗的系统计算资源也会不断增加。

所以系统需要更多的 CPU 和内存去处理用户的计算请求,需要更多的网络带宽去传输用户的数据,也需要更多的硬盘空间去存储用户的数据。而当消耗的资源超过了服务器资源极限的时候,服务器就会崩溃,整个系统将无法正常使用。

3 几大场景 

3.1 足够真实的高并发系统设计场景

大家看过了不少高并发系统设计的技术资料之后,你可能还是会有这样的困惑:为什么我还是对设计一个完整的高并发系统没有概念

这主要是因为你学习的是具体的高并发架构知识,而不是学习一个完整的高并发系统如何设计,所以也就无法形成一个整体的系统架构设计思路。

《高并发架构实战:从需求分析到系统设计》的所有案例都是基于真实场景的,甚至有些案例本身就是由真实设计文档改编的。案例都是针对我们日常接触的各种高并发应用,比如微博、短视频、网约车、网盘、搜索引擎等,具体又分为高并发系统的海量数据处理架构、高性能架构、高可用架构以及安全架构。

在学习这些系统架构设计案例的时候,一方面可以学习各种应用系统如何进行整体设计,另一方面也可以学习高并发系统架构设计的模式和技巧,两者结合起来,就是一个完整的高并发系统设计的知识体系。

3.2 贴合工作场景的设计文档形式

你可能会觉得设计文档和自己关系不大:

  • 一是平时不怎么写,也不愿意写,觉得写文档价值不大;
  • 二是自己不擅长写文档,觉得写也写不好,甚至不太知道设计文档该怎么写。

但工作了这么多年,我发现写东西可以帮助人更好地思考

技术人员如果不写设计文档,就会缺少对技术的深刻思考,缺乏对技术方案的优点和缺点的系统认识,也就不知道如何找到更好的技术和更合理的方案。很显然,这会阻碍技术人员的职业发展。

不仅如此,如果不写设计文档,缺乏对技术的深度思考,那么开发出来的软件就缺乏创新,产品在市场上就缺乏竞争力。

可以粗暴一点地说:没有设计文档就没有设计,没有设计就没有技术的进步。

所以,本书将以软件设计文档的形式去展现一系列软件的系统架构设计,这些设计文档的风格是相对统一的。

希望你可以在这些“重复”的设计文档所展现的组织方式、软件建模与架构方式中,掌握一般的软件设计方法和软件设计文档的写作方法。

3.3 求同存异的典型系统架构案例

本书精挑细选了18个系统架构案例,这些案例大多是目前大家比较关注的高并发、高性能、高可用系统。

它们是高并发架构设计的优秀“课代表”,它们的技术可以解决现有的80%以上的高并发共性问题。

所以在阅读文档的过程中,你可以进一步学习与借鉴这些典型的分布式互联网系统架构,构建起自己的系统架构设计方法论,以指导自己的工作实践。

为了避免每篇文档中都出现大量重复、雷同的设计,本书在内容方面进行了取舍,精简了一些常规的、技术含量较低的内容,而尽量介绍那些有独特设计思想的技术点,尽可能做到在遵循设计文档规范的同时,又突出每个系统自己的设计重点。

此外,本书中还有一部分设计是针对大型应用系统的,比如限流器、防火墙、加解密服务、大数据平台等。

但需要强调一点,本书会针对这些知名的大厂应用重新进行设计,而不是分析现有应用是如何设计的。

  • 一方面,重新设计完全可以按自己的意愿来,不管是设计方案还是需求分析、性能指标估算,都是一件很有意思的事;
  • 另一方面,因为现有应用中的某些关键设计并没有公开,我们要想讨论清楚这些高并发应用的架构设计,没有现成的资料,还是需要自己进行分析并设计。

所以很多案例的设计文档都有需求分析,用于估算重新设计的系统需要承载的并发压力有多大、系统资源需要多少,这些估算大多数都略高于现有大厂的系统指标。

希望你在阅读这些内容的时候,能够更真切地体会到架构师的“现场感受”:我评审、设计的这个系统将服务全球数十亿用户;

这个系统每年需要的服务器和网络带宽需要几十亿元;

这个系统宕机十几分钟,公司就会损失数千万元。

3.4 本书特色: 

 

5 最后 

希望你在阅读《高并发架构实战:从需求分析到系统设计》的过程中,能把自己带入真实的系统设计场景中,把文章当成真实的设计文档,把自己想象成文档作者的同事,也就是说,你正在评审我做的设计。

你可以一边阅读一边思考:这个设计哪些地方考虑不周?哪些关键点有缺漏?然后你可以把自己的思考记录下来,当作你的评审意见。

最重要的是,通过这种方式,你拥有了关于每一个软件设计案例的现场感:你不是一个阅读书籍的读者,而是置身于互联网大厂的资深架构师,你在评审同事的设计,也在考虑公司的未来

6 参与方式  

图书数量:本次送出 4 本   !!!⭐️⭐️⭐️
活动时间:截止到 2023-07-15 12:00:00

抽奖方式:

评论区随机抽取

参与方式:

  • 关注博主,对文章进行:点赞、收藏,评论

中奖名单 

🍓🍓 获奖名单🍓🍓

 中奖名单:请关注博主动态

名单公布时间:2023-07-15 下午

 

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

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

相关文章

js判断两个数组是增加还是删除

JS判断两个数组的数据&#xff0c;增加的数据以及删除的数据。 // 第一个参数是新数组&#xff0c;第二个参数是旧数 const compareArrays function(arr1, arr2 ) {let remove []let add []// 旧数据循环for (let i 0; i < arr2.length; i) {let item arr2[i];if (arr…

数字 IC 设计职位经典笔/面试题(二)

共100道经典笔试、面试题目&#xff08;文末可全领&#xff09; FPGA 中可以综合实现为 RAM/ROM/CAM 的三种资源及其注意事项&#xff1f; 三种资源&#xff1a;BLOCK RAM&#xff0c;触发器&#xff08;FF&#xff09;&#xff0c;查找表&#xff08;LUT&#xff09;&#xf…

SQLSERVER 居然也能调 C# 代码 ?

一&#xff1a;背景 1. 讲故事 前些天看到一个奇怪的 Function 函数&#xff0c;调用的是 C# 链接库中的一个 UserLogin 方法&#xff0c;参考代码如下&#xff1a; CREATE FUNCTION dbo.clr_UserLogin (name AS NVARCHAR(100),password AS NVARCHAR(100) ) RETURNS INT A…

命令行系列:windows cmd官方文档

官方文档 和java开发、Android开发一样。cmd也有官方文档&#xff1a; https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands 如下图&#xff0c;我们可以看到经典的cd,clean命令。 cd命令的全程是什么&#xff1f; cd命令…

查看域名的ip地址

1."winr" -- ping www.baidu.com 2."nslookup www.baidu.com"

java ajax

1.ajax定义:异步刷新技术 2.ajax语法 3.ajax实战 在不需要点击刷新按钮时达到局部刷新显示&#xff0c;如下图所示 步骤一&#xff1a;创建工程/包/js 步骤二&#xff1a;数据库/表创建 步骤三&#xff1a;实体类 步骤四&#xff1a;UserDao package cn.kgc.dao;import cn…

虚拟现实:将数字融入现实

随着科技的不断进步&#xff0c;虚拟现实正逐渐走进我们的现实生活&#xff0c;为我们带来了许多新的体验和可能性。虚拟现实技术将数字世界与真实世界融合在一起&#xff0c;为我们创造了令人惊叹的沉浸式体验。让我们一起探索虚拟现实正在走进现实的意义和影响。 虚拟现实为我…

详解 ➾【FTP服务工作原理及连接模式】

详解 ➾【FTP服务工作原理及连接模式】 &#x1f53b; 前言&#x1f53b; 一、FTP服务简介&#x1f6a5; 1.1 FTP工作原理&#x1f6a5; 1.2 匿名用户访问的产生&#x1f6a5; 1.3 FTP服务的连接模式&#x1f6a5; 1.4 几种流行的FTP服务器软件 &#x1f53b; 总结—温故知新 &…

AIGC提示(prompt)工程之开宗明义篇

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

物流难统计、难管理?学会这招,问题迎刃而解

在当今数字化的时代&#xff0c;商家面临着诸多物流挑战。物流数据人工统计成本高、管理难、决策难是很常见的问题。本文将探讨如何通过智能数据分析解决这些问题&#xff0c;帮助商家提升物流效率和管理能力。 物流数据人工统计&#xff0c;难决策 物流数据沉淀全靠人工线下…

uniapp H5预览PDF文件

1&#xff0c;下载资源后hybrid文件存放在static静态文件里 (点击这里去下载文件) 2&#xff0c;pdf预览页面配置 <template><view style"width: 100vh;"><web-view :src"pdfUrl"></web-view></view> </template><…

Git基本操作

.. 1、创建一个空的项目&#xff0c;获取到git地址&#xff1a;https://gitcode.net/ldy889/git-demo-project.git 2、在本地D盘克隆出项目。 3、检查当前的状态。 4、修改代码前先创建任务分支。比如 home 然后我们添加一个文件尝试提交。 提交成功后将home推送到远程 &am…