今天我们开始学习第二部分的内容:企业级应用架构。该部分的内容分为四章:第三章展示了构建大规模多人在线游戏所需的架构技术;第四章介绍了一个多阶段、多地点的数据处理系统的架构,展示了让系统能工作所必须的折中;第五章讨论了创建数据驱动的应用时资源映射的威力,提供了纯面向资源架构的一个优雅例子;第六章则是提倡以数据为中心的系统,解释了好的架构如何能够创造并支持应用生态系统。
第三章描述的是伸缩性架构设计。在设计系统架构时,一个比较有趣的问题就是确保系统在伸缩时的弹性。随着越来越多的系统运行在网络上或在互联网上提供访问,伸缩性变得越来越重要。书中就以游戏世界为例,让我学习到了很多。首先我们需要先确立目标,就是游戏程序员应该把该系统视为一台单机,运行着一个线程,所有允许部署到多线程和多计算机上的机制都应该由项目的基础设施来考虑。之后就是对整个游戏的架构,我们需要审视一个游戏的宏观结构、基本服务、通信服务和任务的可移动性。关于架构的设计和优化,是一个值得深思的问题。
第四章描述的是记忆留存。在这一方面,我们的架构关注点是将一个多维的、动态的系统简化为一种线性的描述形式总是一项挑战,不论我们是在谈论对还不存在的系统愿景,还是试图解释已经构建好的系统中各个部分的交互。当我们研究每一个架构关注点时,要记住它们是研究整个系统的不同方式。例如,我们使用模块化的架构来支持不同的部署场景。同时,每个模块又是按分层架构来创建的。它们是正交的、相互穿插的考虑。每个模块都是按照相同的方式来分层,每个层都可以在所有模块中找到。通过保持关注点分离,坚持增量式设计和开发,以一种令人满意的方式平衡各方面的需求。
第五章描述的是在Web中面向资源的架构。在开始为信息驱动的环境寻找新的构架之前,本书让我们先了解最近是如何构建类似的系统,怎样才能做得更好。我们要在新愿景下的目标不是与以往不同,而是要增加价值,改变我们所看到的“面向服务恶化”的状况。面向资源的方法在业务部门和支持它们的技术部门之间提供了引人注目的桥梁。以信息为中心的视图和我们的各系统之间连接的方式,为我们提供了真正的效率和业务价值主张。机构是有人居住的雕塑,我们不得不在一段时间内承受这些选择的影响。我们应该抓住机会,让功能性、美和弹性渗入到架构之中,使我们在架构中的生活变得更舒适。
第六章给我们介绍了Facebook平台的架构的数据的增长。本章中详细介绍了对Facebook的全部改进,向我们很好地展示了如何协调不断扩展的数据访问方法和容器网站的预期,特别是对数据隐私和站点体验集成方面的要求,还有每次对数据架构的新改动都发现了Web架构的一些新问题,而怎样又通过对数据访问模式的更强改进来解决这些问题。