近些年来,伴随着技术的进步,越来越多的Web应用系统需要存储、转化、处理越来越多的数据,而这必将要求工程师们掌握构建可伸缩的Web系统的能力。

当我了解到大多数工程师都缺乏这种构建可伸缩Web系统的能力时,我觉得有必要写一篇与此有关的文章。一方面,目前市面上缺乏相关的材料;另一方面,那些在小公司工作的工程师们也缺乏必要的环境去学习可伸缩架构的设计方法。因此,本文致力于讲解软件架构与基础设施如何协同工作,并最终实现系统的可伸缩性。

希望本文可以成为开启读者可伸缩架构设计之旅的一个里程碑。文中既给出了可伸缩架构设计的整体概览视图,同时也深入探讨了一些重要的技术点并给出了一些最佳实践建议。然而,文中并没有对每一个技术细节都深入阐述,而是尽可能地为读者呈现那些必要的概念、基本的规则,以及有意义的实例。

可伸缩架构 可伸缩结构设计_可伸缩架构


今天给大家介绍的是可伸缩架构的设计方法,目前市面上相关的材料少之又少,希望今天的这篇文章能够帮助你百万年薪的路上更近一步。

先看看目录干货

可伸缩架构 可伸缩结构设计_系统架构_02


可伸缩架构 可伸缩结构设计_数据库_03


可伸缩架构 可伸缩结构设计_系统架构_04


可伸缩架构 可伸缩结构设计_数据库_05


可伸缩架构 可伸缩结构设计_数据库_06


可伸缩架构 可伸缩结构设计_运维_07


再来看看重点内容

第1章【核心概念】 作为本书第1章,本章主要介绍可伸缩性架构的一些核心概念及关于本书的一个概览性描述。本章通过描述可伸缩Web系统演化的不同阶段介绍相关的概念,同时,也会涉及一些基础设施与可伸缩Web系统架构方面的整体描述。

可伸缩架构 可伸缩结构设计_可伸缩架构_08

第2章【软件设计原则】 本章主要探讨一些构建弹性可伸缩系统的设计原则。首先是那些最基础的概念,比如简化与解耦;其次是一些面向对象的设计原则,比如单一职责原则和依赖注人原则;最后是那些与可伸缩性直接相关的设计概念,比如功能分割、数据分区,以及自我恢复。

可伸缩架构 可伸缩结构设计_系统架构_09


第3章【构建前端层】 本章内容主要集中在直接与客户端软件(比如Web浏览器及移动APP)交互的那部分基础设施上。本章会深入解释前端管理状态的几种方式,以及构建可伸缩前端的几种重要组件,比如负载均衡、代理、内容分发网络(CDN);之后会探讨自动化伸缩及几种部署场景。

可伸缩架构 可伸缩结构设计_数据库_10


第4章【Web服务】 本章主要探讨几种不同的Web服务架构的优缺点。解释Web服务设计原则并深入细节讲解基于REST-fulAPI的伸缩性技术。

可伸缩架构 可伸缩结构设计_运维_11


第5章【数据存储层】 本章会解释数据层伸缩性技术的若干核心要点。除了涉及MySQL这一类关系数据库相关的技术外,还会花大量篇幅探讨Cassandra这类NoSQL数据存储技术。本章会穿插讲解一些技术细节,比如数据分区(也常称作分片技术)、数据复制,以及最终一致性。比较几种不同的数据存储层拓扑结构及与此有关的技术挑战。

可伸缩架构 可伸缩结构设计_数据库_12


第6章【缓存】 本章内容主要着眼于缓存,缓存是一种改善Web系统伸缩性和性能的关键性手段。主要讲解基于HTTP的几种不同的缓存技术,以及HTTP缓存的伸缩性技术。此外,还会阐述对象缓存技术及其常用的伸缩性技术。最后,花一些篇幅探讨缓存最佳实践,以帮助读者在使用缓存时做出更好的决策。

可伸缩架构 可伸缩结构设计_系统架构_13

第7章【异步处理】 本章会讲解有关消息与事件驱动架构方面的主题。首先,探讨异步处理的概念与优点及如何利用消息代理改善Web应用的可伸缩性;其次,重点论述异步系统的挑战与使用中可能出现的陷阱;最后,简要比较几种主流的消息平台以帮助读者在具体工作中做出最佳选择。

可伸缩架构 可伸缩结构设计_Web_14


第8章【数据搜索】 本章主要讨论数据搜索方面的有关问题。数据搜索与数据存储密切相关,随着数据集的快速增长,优化数据搜索与访问方面的技术变得越来越重要。首先,会讲解不同类型的索引是如何工作的;其次,会花一些篇幅描述数据建模如何有助于改善伸缩性,以及如何在诸如Cassandra之类的NoSQL 数据存储系统中考虑数据建模。最后,做一些搜索引擎方面的介绍及讲述相关技术如何应用于Web应用系统。

可伸缩架构 可伸缩结构设计_数据库_15


第9章【伸缩性的其他维度】 这是本书的最后一章,阐述一些扩展读者自身工作效率的有关概念,以方便读者更好地实现自我管理与团队成长。首先,强调自动化作为一项关键技术在提高工程效率方面的重要作用,探讨有关自动化测试、部署、监控与报警方面的话题。其次,分享一些项目管理方面的个人经验与观察,这些技能将帮助读者在创业中更好地生存下来。最后,对成长中的敏捷团队可能遇到的挑战做一些反思。

可伸缩架构 可伸缩结构设计_系统架构_16


这份【可伸缩架构设计核心技术】共有三百多页,觉得有兴趣的朋友,可以转发该文章关注小编,然后直接私信我即可免费获取

面向读者的类型

本书的主要目标读者是软件工程师、技术经理、DevOps,以及系统工程师。对于在校学生而言也许会有一定难度,不过对于中等水平甚至是初级工程师而言,绝大多数内容都是比较容易理解的。

还得到了行业顶尖大佬的推荐,大佬们是这样评价的

可伸缩架构 可伸缩结构设计_可伸缩架构_17


相信各位读者朋友们看到这里的适合,已经有了初步的了解。但是里面更多更深的内容,还要自己去理解。希望各位拿到之后可以细细品味其中的奥妙,把理论知识完美运用到实际工作中去。

星空就在你的头顶,路就在你的脚下,梦想就在你的前方,加油吧!