我们都知道,互联网服务的核心价值在于流量,流量越大,平台的盈利机会和发展空间就越大,这也是为何大厂总是倾向于招聘拥有高并发经验的研发人员。2007 年,中国电子商务总和交易额突破一万亿人民币,网民数量快速增加,中国互联网正式进入了高并发时代。之后,大厂与创业公司之间的技术壁垒不断加强。如今,掌握高并发技术已成为大厂技术人员的基本要求。
当然,大厂可以为我们提供高并发系统架构设计的实践机会。然而,如果你没有相关的架构设计经验,大厂的大门又怎会向你敞开呢?这就形成了一个逻辑悖论。
难道我们只能一直陷在这个困境中吗?实际上,我们自己也是这些高并发应用的用户,例如使用微信、使用搜索引擎、刷微博、刷短视频。我们只需要将自己从用户角色转换为设计者的角色,想象自己成为这些大厂的架构师,设身处地思考:如果我来设计这个系统,我该怎么做。
尽管我们都知道高并发的重要性,并学习了许多高并发系统设计的技术资料,但仍然会感到困惑:为什么我们仍然缺乏对设计一个完整的高并发系统的了解?
这是因为你缺乏真实业务场景中的架构设计经验。没有亲自接触过真实的业务需求,就无法感受到面对压力、迎接挑战以及完成任务后的喜悦和轻松。只有通过真实的现场感受,我们学到的各种技术才能真正融会贯通,而不只是一堆零碎知识的杂乱集合。就像那句著名的“我听过很多道理,却仍然过不好这一生”。归根结底,还是缺乏实践。
通过阅读本书,你可以“化身”为那个真的需要解决高并发问题的人,借助笔者的真实高并发处理经验,身临其境地站在架构师的角度,深入理解高并发系统设计的哲学原理。
开门见山,先说结论,高并发的哲学原理就是——找出单点,进行拆分。要将每一个“大单点”都拆成“一个小单点 + 多个资源并行”的形式。
单点指的是一个 Web 系统中,几乎所有流量都必须经过的特定部分,如果它出现瓶颈或故障,将导致整个系统的性能下降或不可用。单点是一个逻辑概念,在系统架构层面它可能指代各种不同层面的软件、硬件实体。在传统的单体式应用中,可以说遍地都是单点。
在解决高并发问题的过程中,我们会不断地遇到各种单点:Web Server、单个操作系统、虚拟化/容器技术、编程语言运行架构、网络、Unix 进程模型、数据库等。每遇到一个单点,我们都要见招拆招,使用架构工具拆掉它。计算机的虚拟化程度非常高,理论上每个单点都是可以继续往下拆分的。
📙 高并发的哲学原理 《Philosophical Principles of High Concurrency》
Copyright © 2023 吕文翰