1 开篇词 | “附身”大厂架构师,身临其境设计高并发系统

Posted 程序杰杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1 开篇词 | “附身”大厂架构师,身临其境设计高并发系统相关的知识,希望对你有一定的参考价值。

你好,我是李智慧,目前担任同程旅行交通首席架构师。我曾在阿里巴巴和英特尔担任架构师,主要从事高并发系统架构和大数据相关产品的开发。我参与过alibaba.com和Apache Spark的架构设计与开发,也曾作为CTO领导团队经历了日订单从零到一百万的高并发技术挑战。

说来我也是你的老朋友了,因为我在极客时间已经开过两门专栏课程了,分别是《从0开始学大数据》《后端技术面试38讲》

在前两个专栏中,我时不时就能看到同学们对“高并发架构”的学习需求。确实,“高并发”是系统架构设计的核心关键词,也是很多大厂的关注焦点。面试大厂的时候,你要是对高并发架构说不出个一二三,恐怕面试也凶多吉少了。

其实,我们都知道高并发的重要性了,甚至是看过了不少高并发系统设计的技术资料,但还是会有困惑:学了形形色色的高并发技术以后,为什么我还是对设计一个完整的高并发系统没有概念?

在我看来,这种困惑并不是源于对知识的理解不足或掌握不够,而是源于缺乏架构现场的感受:不能把自己设身处地地放在一个需要真实构建系统的环境中。没有那种面对真实场景的压力、挑战,也没有完成任务后的喜悦与轻松,学到的各种技术就无法基于这种真实的现场感而融汇成自己的观点,最后还是一些零碎的知识。

正所谓:听过很多道理,依然过不好这一生。说到底,还是因为缺乏实践

当然了,大厂能为我们提供高并发系统架构设计的实践机会。但若你没有高并发架构设计经验,大厂的大门又怎肯为你打开呢?这就形成了一个死循环。

难道我们就只能一直陷在这个困局里出不去吗?事实上,我们自己也在刷抖音、玩微博、用搜索引擎,我们自己就是这些高并发应用的用户。我们只需要从用户角色转换到设计角色把自己想象成这些大厂的架构师,设身处地去思考:如果让我来设计这个系统,我将如何开展我的工作?

通过这个专栏,你可以“附身”大厂架构师,借助我的经验和知识,身临其境地,站在大厂架构师的视角,理解高并发系统的设计思路。

我如何帮你获得高并发系统设计的“现场感”?

为了让你更有身临其境的感受,我为你找到了三条途径。

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

如果现阶段你还不能进入大厂真正去实践,那么为自己创造一个相对真实的设计场景,进行不断的模拟练习,会比单纯学习理论的效果更好。

这个专栏的所有案例都是基于真实场景的,甚至有些案例本身就是真实设计文档改编的。只有这些还不够,每节课设计的系统都有自己的名字。一位先哲说过,当一个东西有了自己的名字,就拥有了生命。

希望你在阅读专栏的过程中,能把自己带入到真实的系统设计场景中,把文章当成真实的设计文档,把自己想象成设计文档的作者(也就是我)的同事,你正在评审我做的设计。

你可以一边阅读一边思考:这个设计哪些地方考虑不周,哪些关键点有缺漏。然后你可以把自己的思考写在评论区,当做你的评审意见。最重要的是,通过这种方式,你拥有了和我一样的关于每一个软件设计案例的现场感:你不是一个阅读专栏的读者,而是置身于互联网大厂的资深架构师,你在评审同事的设计,也在考虑公司的未来。

如果你在阅读这些案例设计文档的时候,能够对设计整体有个评价,对具体细节能给出若干改进意见,那么你和大厂架构师的距离也就不远了。

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

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

 

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

不仅如此,如果没有系统设计文档,缺乏技术的深度思考,那么开发出来的软件就缺乏创新,显得平庸,公司的技术产品在市场上就缺少竞争力。所以长远看来,不写系统设计文档,看起来忙忙碌碌,但这样对公司、对自己的发展都不利。

 

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

所以,这个专栏我将以软件设计文档的形式去写一系列软件的系统架构设计,这些设计文档的风格是相对统一的。我希望你可以在这些“重复”的设计文档组织方式、软件建模与架构方式中,学习到一般的软件设计方法和软件设计文档的写作方法。

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

我精挑细选了10余个系统架构案例,这些案例大多是目前大家比较关注的高并发、高性能、高可用系统。比如网盘、搜索引擎、短视频应用、打车软件、交友软件、微博等。它们是高并发架构设计的优秀“课代表”,它们的技术可以解决现有的80%以上的高并发共性问题。所以在阅读这些文档的过程中,你可以进一步学习、借鉴这些典型的分布式互联网系统架构,了解现在高并发技术的热点。

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

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

但我需要强调一点,专栏会针对这些知名的大厂应用重新进行设计,而不是分析现有这些应用是如何设计的。一方面,重新设计完全可以按自己的意愿来,不管是设计方案还是需求估算,都是一件很爽的事;另一方面,因为现有应用中的某些关键设计并没有公开,我们要想讨论清楚这些高并发应用的架构设计,没有现成的资料,就需要自己进行分析并设计。这有点像流行的穿越剧:我如果能穿越回去,我将如何设计这些大厂的系统?只要我愿意,我也可以成为大神。

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

此时此刻,你可能还是会有很多疑惑:

  • 这些高并发系统架构中,有哪些常见的架构模式?
  • 各种常见的分布式技术,是如何应用到系统架构中的?
  • 不同的应用场景,又有怎样独特的技术挑战,以及是如何应对的?
  • 了解这些,对自己的架构设计能力提升有哪些帮助?
  • ……

不必着急,通过这个专栏,你的问题都会被一一解答。而且,我相信,这一系列的架构设计实战文档会给你更多不一样的启迪。

这门课有哪些内容?

这个专栏共计22篇内容,其中包括17篇设计案例实战文档,还有5篇是关于软件设计方法,高并发、高性能、高可用系统架构的一些基础知识,方便你对设计案例中涉及到的技术进行一些回顾。

我们常说高并发、高性能、高可用,事实上,这三者并不是平行的关系。通常情况下,高并发是根源和核心。正是因为高并发,大量的用户同时请求我们的系统,导致系统资源快速消耗,服务器无法及时处理用户请求,响应变慢,系统出现性能问题。更进一步,性能继续恶化,导致服务器资源耗尽,就会出现系统崩溃,可用性也出现问题。

根据高并发系统的特点,我把这个专栏划分成了5个实战模块。

实战模块一:高并发系统的海量数据处理架构案例

我们将主要讨论高并发处理海量数据的场景,包括海量的数据如何存储、如何传输、如何进行并发控制。

在这个模块中,你可以看到,一些看似相同的需求,其实可以有完全不同的解决方案,比如海量的短视频和海量的网盘存储;还有一些看似非常不同的场景,其实可以用同一个技术搞定,比如短URL和短视频。

实战模块二:高并发系统的高性能架构案例

我们将主要讨论在高并发场景下,如何保证系统的响应性能。

在这个模块中,你会看到,在海量的网页中快速搜索到一些网页,和在海量的人群中快速寻找一些人,其技术挑战是如何的不同,其解决方案又分别是如何的巧妙。

实战模块三:高并发系统的高可用架构案例

高并发导致系统的崩溃,最经典的案例莫过于明星半夜宣布离婚导致的微博宕机。为什么明星离婚会导致微博崩溃?拥有数千万关注的明星,微博消息是如何推送给粉丝的?微博如何处理这种热点新闻的海量消息转发所引起的系统压力?

实战模块四:安全系统架构案例

系统安全也是高并发系统的一个重要挑战。恶意的用户请求如何处理?敏感的数据如何加密解密?这里的几个案例都来自真实的应用。如果你需要,你可以将这几个设计直接落地,开发、应用到你的工作中。

实战模块五:网约车架构案例专题

在这个模块里,我们将深入讨论如何设计一个数亿用户、千万日订单的高并发打车软件。面对业务迭代,如何利用DDD对系统微服务进行重构设计。还有如何利用大数据技术,实现大数据杀熟(然而并不可以)。

最后,最重要的,就是希望你能把自己想象成大厂架构师,设身处地地思考,每一个案例都要产生自己的意见和看法,并表达出来。

期望你能在这个专栏学习结束后,自己挑选几个大厂的应用案例,按照专栏文章的设计模板,自己完成这些应用的架构设计。做到这一点,你就可以说对高并发架构登堂入室了,对自己的架构能力也建立起信心了。

祝你学习顺利,成为一名实战能力强、能够主导公司技术核心的架构师。

菜鸟架构师之路开篇

前言

这里是老马,拖了许久的菜鸟架构师成长记录终于要开篇了,可喜可贺,可喜可贺,毕竟从想法产生到落地已经过去了一年多。。。

那为什么会有这样的想法和念头?

虽然我是某985软件工程出身,但是那些年的放纵让我并没有一开始就能获得很好的起步,也导致我需要花更大的努力提高自身认知和技能。业内都鼓吹说去了大厂只能当螺丝钉,但是有了大厂的经历和背书,未来的职场之路会通畅很多,从我所认识的人来看无一不是这样。嗯,其实言下之意就是我是一个没去过大厂熏陶的菜鸟,现在虽然是某千人独角兽创业公司的系统架构师,但是没去过大厂依然是我挺大的遗憾之一。

所以回到主题,写这系列的文章,一方面是对自己的过去以及现在做总结记录,以及坚定自己未来的道路;另一方面,也是希望文章能够给予看文章的你警示以及启发,避免重蹈我的覆辙,如果能确实有一点能帮到你,那将是我莫大的荣幸!

自我介绍

毕业于某985院校(挂科无数,勉强拿证),十年以上码农经验,主力后端,做过前端、App、小程序,做过嵌入式,做过架构,做过运维,带过数十人的团队,5年以上的创业(失败)经历,目前在某独角兽机器人公司担任软件架构师,见证了公司从100人到数千人的极速扩张

以后会写哪些内容?

既然是菜鸟架构师之路,那会以我自己的视角,记录从一个小小菜鸟,如何摸爬滚打的成长起来:

  1. 技术方向包含基础技能,技术进阶,架构设计,实战相关等
  2. 过程中我的心路历程,做的对的事情,错的事情等,都会娓娓道来
  3. 最后也会时不时的来一些杂谈,人生的感悟等等,包含我一段多年创业,从逐步走上正规,到最后心酸落幕的经历
  4. 目前在做机器人软件的架构,在脱敏之后,也可以时不时的给大家分享一些机器人行业,到物联网相关的知识

以上,就敬请期待了~

写在最后

曾几何时,我也是跟很多人一样,沉迷于游戏不可自拔,不是我自吹,WOW,AION,LOL,DNF等我都是第一天公测就开始玩,而且还靠着在wow里面当商人赚到了不少生活费,为此沾沾自喜。然而也因为心思都在游戏上,完美错过了深圳的楼市,虚拟币投资等财富自由的机会,大厂也没有进,年龄上来以后想混个领导层也特别难,突然就醒悟之前是多么颓废,周边的朋友买房的,结婚的,生小孩的,自己却只会坐在电脑前面打游戏看动漫?可能有人会说,这就是我想要的生活,也没太多追求,但是等你年龄大的时候,会发现社会上处处都散发着金钱的味道,房子,车,家庭,小孩,生活,健康,不说那么远,光现在的各种网游手游,没钱你都是被土豪一打十的那种小喽喽。我已经错过了黄金的几年,付出了更多的努力现在勉强才够看,但是假如我能更早的奋斗,肯定会比现状好的多。

所以,假如你恰巧看了我的文章,也恰巧跟当初的我一样,希望你能引以为戒,了解清楚自己真正想要什么,应该做什么,给自己制定一个合理的人生规划,并为之努力。游戏动漫这种可以把他当成减压工具,但不是你的全部。相信若干年后,你一定会感谢自己当初的理智克制。

要怎么努力?刚说了大厂是职业规划的直通车,能进入大厂就等于是站在了巨人的肩膀上,借着丰厚的资源走上能快速发展的高速路。

但是不是除了进入大厂,就么有晋升之路了?

当然不是,在日后的文章里,我会逐步的跟大家介绍我这个菜鸟是怎么做到现在这个成绩,拿到传说中的百万年薪和期权,离财富自由就差个上市

最后,拿个段子来结尾吧

以下:

菜鸟:“头儿,我们要造什么?”

老师傅:“菜鸟商城”

菜鸟:“嚯,已经设计好了吗?”

老师傅:“总共四层,负一层及以下停车场,一楼以女性消费为主体,二楼以大众娱乐为主体,三楼以美食为主体”

菜鸟:“这要怎么建设啊,感觉无从下手”

老师傅:“先打好地基,再搭好每一层的结构”

菜鸟:“哦(似懂懵懂)”

老师傅:“再进行围护结构施工,墙啊门窗栏杆等,就形成了每一间店面”

菜鸟:“哦(还是似懂懵懂)”

老师傅:“进行初装修和电气、通风、消防施工,整体结构就基本成型了”

菜鸟:“那我在这里面要干些啥”

老师傅:“按照老师傅的要求施工,指哪儿造哪儿”

菜鸟:“哦(虽然还是似懂懵懂,但是跟着老师傅干肯定没错)”

菜鸟:”为什么你这么厉害“

老师傅:“无他,唯手熟尔”

以上是关于1 开篇词 | “附身”大厂架构师,身临其境设计高并发系统的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟架构师之路开篇

2 01 | 软件建模与文档:架构师怎样绘制系统架构蓝图?

设计模式学习心得----开篇

Java基础案例教程pdf,圆我大厂梦!

基于Go语言实现高并发推荐系统架构设计

阿里架构师分享丨Java架构设计的重点知识和学习路径(建议收藏)