很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设计经验呢?
一方面可以通过工作来学习,观察所在团队的架构师是如何工作的,协助他做一些架构设计和落地的工作。同时,思考如果你是架构师,你将如何完成工作,哪些地方可以做得更好。
另一方面,也可以通过阅读来学习,看看那些典型的、耳熟能详的应用系统是如何设计的。同样,你也可以在阅读的过程中思考:如果你是这个系统的架构师,将如何进行设计?如何输出你的设计结果?哪些关键设计需要进一步优化?
通过这样不断地学习和思考,你就会不断积累架构设计的经验,等你有机会成为架构师的时候,就可以从容不迫地利用你学习与思考获得的经验和方法,开始你的架构师职业生涯。现在,知名技术畅销书作者李智慧老师的全新力作,基于真实经典案例改编的 《高并发架构实战:从需求分析到系统设计》 纸书终于出版!
从需求分析到系统设计,通过八大维度、18个案例,全面介绍高并发系统的设计方法、核心技术与架构实践
**我们知道,“高并发”是现在系统架构设计的核心,也是很多大厂的关注焦点。一个架构师如果设计、开发的系统不支持高并发,那简直不好意思跟同行讨论。在应聘大厂架构师岗位的时候,如果你对高并发架构说不出什么,恐怕面试就凶多吉少了。
在架构设计领城,高并发的历史非常短暂,这一架构特性是随着移动互联网的发展才逐渐变得重要起来的。
现在有很多大型互联网应用系统的用户是分布在全球的,用户体量动辄十几亿。这些用户即使只有千分之一同时访问系统,也会产生一百万的并发访问量。因此,高并发是现在大型互联网系统必须面对的挑战,当同时访问系统的用户不断增加时,要消耗的系统计算资源也会不断增加。
所以系统需要更多的 CPU 和内存去处理用户的计算请求,需要更多的网络带宽去传输用户的数据,也需要更多的硬盘空间去存储用户的数据。而当消耗的资源超过了服务器资源极限的时候,服务器就会崩溃,整个系统将无法正常使用。
大家看过了不少高并发系统设计的技术资料之后,你可能还是会有这样的困惑:为什么我还是对设计一个完整的高并发系统没有概念?
这主要是因为你学习的是具体的高并发架构知识,而不是学习一个完整的高并发系统如何设计,所以也就无法形成一个整体的系统架构设计思路。
《高并发架构实战:从需求分析到系统设计》 的所有案例都是基于真实场景的,甚至有些案例本身就是由真实设计文档改编的。案例都是针对我们日常接触的各种高并发应用,比如微博、短视频、网约车、网盘、搜索引擎等,具体又分为高并发系统的海量数据处理架构、高性能架构、高可用架构以及安全架构。
在学习这些系统架构设计案例的时候,一方面可以学习各种应用系统如何进行整体设计,另一方面也可以学习高并发系统架构设计的模式和技巧,两者结合起来,就是一个完整的高并发系统设计的知识体系。
你可能会觉得设计文档和自己关系不大:一是平时不怎么写,也不愿意写,觉得写文档价值不大;二是自己不擅长写文档,觉得写也写不好,甚至不太知道设计文档该怎么写。
但工作了这么多年,我发现写东西可以帮助人更好地思考。技术人员如果不写设计文档,就会缺少对技术的深刻思考,缺乏对技术方案的优点和缺点的系统认识,也就不知道如何找到更好的技术和更合理的方案。很显然,这会阻碍技术人员的职业发展。
不仅如此,如果不写设计文档,缺乏对技术的深度思考,那么开发出来的软件就缺乏创新,产品在市场上就缺乏竞争力。
可以粗暴一点地说:没有设计文档就没有设计,没有设计就没有技术的进步。
所以,本书将以软件设计文档的形式去展现一系列软件的系统架构设计,这些设计文档的风格是相对统一的。希望你可以在这些“重复”的设计文档所展现的组织方式、软件建模与架构方式中,掌握一般的软件设计方法和软件设计文档的写作方法。
本书精挑细选了18个系统架构案例,这些案例大多是目前大家比较关注的高并发、高性能、高可用系统。它们是高并发架构设计的优秀“课代表”,它们的技术可以解决现有的80%以上的高并发共性问题。所以在阅读文档的过程中,你可以进一步学习与借鉴这些典型的分布式互联网系统架构,构建起自己的系统架构设计方法论,以指导自己的工作实践。
为了避免每篇文档中都出现大量重复、雷同的设计,本书在内容方面进行了取舍,精简了一些常规的、技术含量较低的内容,而尽量介绍那些有独特设计思想的技术点,尽可能做到在遵循设计文档规范的同时,又突出每个系统自己的设计重点。
此外,本书中还有一部分设计是针对大型应用系统的,比如限流器、防火墙、加解密服务、大数据平台等。
但需要强调一点,本书会针对这些知名的大厂应用重新进行设计,而不是分析现有应用是如何设计的。 一方面,重新设计完全可以按自己的意愿来,不管是设计方案还是需求分析、性能指标估算,都是一件很有意思的事;另一方面,因为现有应用中的某些关键设计并没有公开,我们要想讨论清楚这些高并发应用的架构设计,没有现成的资料,还是需要自己进行分析并设计。
所以很多案例的设计文档都有需求分析,用于估算重新设计的系统需要承载的并发压力有多大、系统资源需要多少,**这些估算大多数都略高于现有大厂的系统指标。**希望你在阅读这些内容的时候,能够更真切地体会到架构师的“现场感受”:我评审、设计的这个系统将服务全球数十亿用户;这个系统每年需要的服务器和网络带宽需要几十亿元;这个系统宕机十几分钟,公司就会损失数千万元。!
希望你在阅读 《高并发架构实战:从需求分析到系统设计》 的过程中,能把自己带入真实的系统设计场景中,把文章当成真实的设计文档,把自己想象成文档作者的同事,也就是说,你正在评审我做的设计。
你可以一边阅读一边思考:这个设计哪些地方考虑不周?哪些关键点有缺漏?然后你可以把自己的思考记录下来,当作你的评审意见。
最重要的是,通过这种方式,你拥有了关于每一个软件设计案例的现场感:你不是一个阅读书籍的读者,而是置身于互联网大厂的资深架构师,你在评审同事的设计,也在考虑公司的未来。