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

news2024/11/16 19:35:26

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

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

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

通过这样不断地学习和思考,你就会不断积累架构设计的经验,等你有机会成为架构师的时候,就可以从容不迫地利用你学习与思考获得的经验和方法,开始你的架构师职业生涯。现在,知名技术畅销书作者李智慧老师的全新力作,基于真实经典案例改编的 《高并发架构实战:从需求分析到系统设计》 纸书终于出版!
在这里插入图片描述
从需求分析到系统设计,通过八大维度、18个案例,全面介绍高并发系统的设计方法、核心技术与架构实践

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

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

现在有很多大型互联网应用系统的用户是分布在全球的,用户体量动辄十几亿。这些用户即使只有千分之一同时访问系统,也会产生一百万的并发访问量。因此,高并发是现在大型互联网系统必须面对的挑战,当同时访问系统的用户不断增加时,要消耗的系统计算资源也会不断增加。

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

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

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

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

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

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

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

你可能会觉得设计文档和自己关系不大:一是平时不怎么写,也不愿意写,觉得写文档价值不大;二是自己不擅长写文档,觉得写也写不好,甚至不太知道设计文档该怎么写。

但工作了这么多年,我发现写东西可以帮助人更好地思考。技术人员如果不写设计文档,就会缺少对技术的深刻思考,缺乏对技术方案的优点和缺点的系统认识,也就不知道如何找到更好的技术和更合理的方案。很显然,这会阻碍技术人员的职业发展。

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

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

所以,本书将以软件设计文档的形式去展现一系列软件的系统架构设计,这些设计文档的风格是相对统一的。希望你可以在这些“重复”的设计文档所展现的组织方式、软件建模与架构方式中,掌握一般的软件设计方法和软件设计文档的写作方法。

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

本书精挑细选了18个系统架构案例,这些案例大多是目前大家比较关注的高并发、高性能、高可用系统。它们是高并发架构设计的优秀“课代表”,它们的技术可以解决现有的80%以上的高并发共性问题。所以在阅读文档的过程中,你可以进一步学习与借鉴这些典型的分布式互联网系统架构,构建起自己的系统架构设计方法论,以指导自己的工作实践。

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

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

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

所以很多案例的设计文档都有需求分析,用于估算重新设计的系统需要承载的并发压力有多大、系统资源需要多少,**这些估算大多数都略高于现有大厂的系统指标。**希望你在阅读这些内容的时候,能够更真切地体会到架构师的“现场感受”:我评审、设计的这个系统将服务全球数十亿用户;这个系统每年需要的服务器和网络带宽需要几十亿元;这个系统宕机十几分钟,公司就会损失数千万元。!

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

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

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

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

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

相关文章

网络安全工程师工作内容具体是什么?

在知乎看到一个帖子:网络安全工程师或者网络安全研究员的工作内容具体是什么?或者说他们的一天具体是怎么度过的,是否和程序员一样编码做项目? Neeao的回复: 只在甲方互联网公司呆过,简单说下甲方的情况。…

“千模千测”——针对大语言模型认知能力的高效测试方法

©PaperWeekly 原创 作者 | 庄严、宁雨亭 单位 | 中国科学技术大学BASE课题组 论文标题: Efficiently Measuring the Cognitive Ability of LLMs: An Adaptive Testing Perspective 作者: Yan Zhuang, Qi Liu, Yuting Ning, Weizhe Huang, Rui Lv, …

Docker 安装Nginx

查看Nginx镜像并拉取镜像: [rootlocalhost nginx]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx …

使用Mybatis添加记录错误

使用Mybatis添加记录错误:Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column ‘id’ at row 1 分析:添加记录的id值超出范围,查看JavaBean中的ID&#…

00-C++-ccache使用

ccache使用 前言ccache是什么ccache使用 前言 在编译大型C项目代码时编译时间比较长,那么可以使用ccache来加速代码的编译,一起来学习吧。 ccache是什么 ccache是一个编译器缓存。它通过缓存以前编译的结果并检测何时再次进行相同的编译来加快重新编译…

201天,太平洋保险核心系统迁至国产数据库OceanBase稳定运行

7月7日,2023全球数字经济大会上,国内首个全险种核心迁移至国产数据库的系统正式亮相。 因支撑未来海量并发、海量数据业务发展需求,太平洋保险(集团)股份有限公司(以下称“太平洋保险”)与Ocea…

使用OpenCV的viz模块创建和控制一个3D可视化窗口

#include <opencv2/viz.hpp> #include <iostream>using namespace cv; using namespace std;int main() {

神经网络解决预测问题(以共享单车预测为例)

背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目前,共享单车…

DevOps系列文章 之 SnakeYAML解析与序列化YAML

1、简述 如何使用SnakeYAML库将YAML文档转换为Java对象&#xff0c;以及JAVA对象如何序列化为YAML文档。 在DevOps平台系统中是基础的能力支持&#xff0c;不管是spring boot 的配置还是K8S 资源清单yaml 2、项目设置 要在项目中使用SnakeYAML&#xff0c;需要添加Maven依赖…

基于go-zero的api服务刨析并对比与gin的区别

zero路由与gin的区别 官网go-zero go-zero是一个集成了各种工程实践的微服务框架&#xff0c;集多种功能于一体&#xff0c;如服务主要的API服务&#xff0c;RPC服务等。除了构建微服务工程外&#xff0c;zero也是一款性能优良的web框架&#xff0c;也可以构建单体web应用。 …

并行计算框架Polars、Dask的数据处理性能对比

在Pandas 2.0发布以后&#xff0c;我们发布过一些评测的文章&#xff0c;这次我们看看&#xff0c;除了Pandas以外&#xff0c;常用的两个都是为了大数据处理的并行数据框架的对比测试。 本文我们使用两个类似的脚本来执行提取、转换和加载(ETL)过程。 测试内容 这两个脚本主…

【Linux】-Linux部署Javaweb项目

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Linux】 分享: 屋檐如悬崖 风铃如沧海 我等燕归来 时间被安排 演一场意外 你悄然走开 故事在城外 浓雾散不开 看不清对白 你听不出来 风声不存在 是我在感慨 梦想来是谁在窗台 …

【服务器】Python一行命令搭建HTTP服务器并外网访问 - 内网穿透

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自cpolar极点云文章&#xff1a;【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透」…

【专题速递】音频生成、TTS和AIGC在音乐上的运用

// AIGC的发展为音频带来了什么&#xff1f;AIGC如何赋能音乐创作&#xff1f;如何识别虚假音频&#xff1f;TTS可以在哪种场景下解决特定问题&#xff1f;7月29日LiveVideoStackCon2023上海站音频新体验专场&#xff0c;为您解答。 音频新体验 随着多媒体和通信网络技术的不…

开利网络受邀参与广州三会企业数字化转型专题研讨会

​7月6日&#xff0c;开利网络受邀出席由广州三会于广州市黄埔区组织的“广州三会第六届理事会第八次会长联席会议”&#xff0c;并进行了主题为“企业数字化转型如何推动企业价值再造&#xff1f;”的专题分享会&#xff0c;为各位参会来宾分享企业数字化转型常见误区及数字化…

【IC设计】ICC1 workshop lab guide 学习笔记——Lab 2 Design Planning Task5-9

文章目录 ICC1 workshop lab guide2.5 Create P/G Rings Around Macro Groups2.6 Power Network Synthesis2.7 Check the Timing2.8 Write Out the DEF Floorplan File2.9 Create 2nd Pass Design Ready for Placement ICC1 workshop lab guide 2.5 Create P/G Rings Around M…

uniapp 发送全文件 支持App端ios、android,微信小程序,H5

由于uniapp提供的API在app端只能上传图片和视频&#xff0c;不能上传其他文件&#xff0c;说以只能借助插件了。 ios端用的这个插件 获取到文件对象 免费的 这个是返回一个 filePath 可用直接用于 uni.uploadFile 上传的路径&#xff0c;后面自己又改的File对象 全文件上传选择…

CAD绘制三维升旗台

首先绘制长方体的底座 用交叉对角线来定位&#xff0c;绘制一个小一点的矩形&#xff0c;用来定位 大概的效果&#xff1a; 沿着矩形的一个角绘制三个长方体&#xff0c;形成护栏 用阵列或者复制等形成四个角的护栏 旋转&#xff0c;换成真实的效果图&#xff1a; 添加一个圆…

文件共享平台Pingvin Share

本文完成于 2 月上旬。最近正好应网友要求折腾了 ClamAV&#xff0c;所以翻出来一起发了&#xff0c;可以作为 ClamAV 的一个应用示例&#xff1b; 什么是 Pingvin Share &#xff1f; Pingvin Share 是自托管文件共享平台&#xff0c;是 WeTransfer 的替代品。使用 Pingvin Sh…

【C语言基础】遍历

(꒪ꇴ꒪(꒪ꇴ꒪ ),我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&…