作 者:(美)马丁 L.阿伯特(Martin L.Abbott),(美)迈克尔 T.费舍尔(Michael T.Fisher) 著;陈斌 译 定 价:79 出 版 社:机械工业出版社 出版日期:2017年04月01日 页 数:301 装 帧:平装 ISBN:9787111563884 《架构真经:互联网技术架构的设计原则(原书第2版)》是经典著作《架构即未来》的姊妹篇,聚焦于技术架构本身,提供50条久经考验的互联网技术架构原则,几乎可以支持任何高速增长公司的扩展。硅谷有名互联网企业首席技术官和技术主管现身说法,生动形象地呈现“规则背后的故事”,便于读者理解并运用这些规则解决实际工作中所面临的挑战。
●本书赞誉
●中文版序
●中文版序二
●译者序
●前言
●致谢
●作者简介
●第1章大道至简1
●规则1——避免过度设计4
●规则2——方案中包括扩展9
●规则3——三次简化方案13
●规则4——减少域名解析16
●规则5——减少页面目标19
●规则6——采用同构网络23
●总结24
●注释25
●第2章分而治之27
●规则7——X轴扩展31
●规则8——Y轴拆分35
●规则9——Z轴拆分39
●部分目录
内容简介
本书是《架构即未来》的姊妹篇。全书共分13章,用成功互联网产品公司首席技术官和企业家的故事,引出了对构建可扩展的产品至关重要的50条规则,可帮助软件研发人员、技术运维人员和管理者修复或重新架构现有产品,了解关于扩展的佳实践并有计划地实施,还可以帮助建立一套架构原则以推动未来的研发。 (美)马丁 L.阿伯特(Martin L.Abbott),(美)迈克尔 T.费舍尔(Michael T.Fisher) 著;陈斌 译 马丁·阿伯特是研究增长和可扩展的咨询公司AKF的创始合伙人。马丁曾任Quigo的首席运营官,Quigo是一家从事广告业务的初创公司,后来被AOL收购。在AOL,他负责产品策略、产品管理、技术研发和客户服务。马丁曾在eBay工作了6年,先后担任不错技术副总裁、首席技术官和高管人员。加入eBay前,马丁在Gateway和Motorola公司担任美国靠前和靠前的工程、管理及行政职务。他还曾在几个私人和上市公司里担任董事。马丁从美国军事学院获得计算机学士学位,拥有佛罗里达大学计算机工程硕士学位,是哈佛商学院执行人员教育项目的毕业生,同时拥有凯斯威斯顿储备大学的管理学博士学位。
迈克尔·费舍尔是等 如今,这些担忧远不如从21世纪70年代末到80年代末这段时间。事实上,当我们询问客户关于立即读取刚写入数据的失败率
时,答案相当一致:“从来没有。”除非他们不妥当地处理写操作
返回的错误码,否则永远都不会出现失败。当然,时不时会发生数据损坏,但在大多敉怡况下,数据损坏是在实际写入时发现的。读取刚写入的数据使系统事倍功半。反过来也会降低利润率和盈利能例。较好的方案是直接读取正在执行的操作返回数据,并相信它的正确性,从而捉高有价值的事务处理量。在这里做个侧面说明,对数据损坏很稳妥的保护措施是合理地实现系统的高可用性,并有多个数据副本,如备用数据库或存储复制(参见第9章)。理想情况下很终实现多活。 前 言感谢你对本书第2版感兴趣!作为一本入门、进修和轻量级的参考手册,本书旨在帮助工程师、架构师和管理者研发及维护可扩展的互联网产品。本书给出了一系列规则,每个规则围绕着不同的主题展开讨论。大部分的规则聚焦在技术上,少数规则涉及一些关键的思维或流程问题,每个规则对构建可扩展的产品都是至关重要的。这些规则在深度和焦点上都有所不同。有些规则是高级的,例如定义一个可以应用于几乎任何可扩展性问题的模型;其他的则比较具体,可能用来解释一种技术,例如怎么修改HTTP头来大化内容缓存。在本版中,我们增加了成功的互联网产品公司中首席技术官和企业家的故事,这里涉及的公司既包括初创企业也有财富500强公司。这些故事有助于说明规则是如何形成的,以及它们为什么在海量事务处理环境中显得如此重要。没有什么其他故事可以比YA马逊更能说明在互联网上急速扩展所遇到的需求和挑战。里克·达尔泽尔是YA马逊等
《架构真经》(原书第2版)图书简介 在信息爆炸、技术飞速迭代的时代,软件系统的复杂性与日俱增。如何设计出稳定、高效、可扩展且易于维护的系统,成为每一位软件工程师和架构师面临的严峻挑战。本书《架构真经》(原书第2版)深入剖析了现代软件架构的精髓,系统地阐述了从宏观原则到具体实践的方方面面,旨在帮助读者构建能够应对复杂业务需求、抵御技术演进的坚实基石。 一、 穿越迷雾:理解架构的本质与价值 本书首先将读者带入架构的殿堂,澄清了“架构”这一概念的真正含义。它不仅仅是技术选型的堆砌,更是对系统整体蓝图的擘画,是对非功能性需求的深层考量。作者强调,架构是连接业务需求与技术实现之间的桥梁,其核心价值在于: 降低复杂性: 将庞大、复杂的系统分解为更小、更易于管理和理解的模块,降低认知负担。 指导决策: 为技术选型、团队协作、项目推进提供明确的方向和原则。 应对变化: 设计出能够灵活适应需求变更、技术升级和业务扩展的系统。 提升质量: 确保系统的可靠性、性能、安全性、可维护性等关键质量属性。 促进沟通: 为不同角色(开发、测试、运维、产品)之间提供共同的语言和理解基础。 本书将架构的本质抽丝剥茧,从战略层面引导读者认识到架构在软件生命周期中的关键作用,帮助读者建立起对“好架构”的清晰认知,为后续的学习和实践奠定坚实的基础。 二、 基石稳固:核心架构原则与模式 成功的架构并非空中楼阁,而是建立在一系列经过时间检验的核心原则和模式之上。本书详细介绍了这些不可或缺的基石,让读者能够掌握构建健壮系统的“内功心法”: 模块化与解耦: 深入探讨了如何将系统划分为独立的模块,并通过明确的接口和依赖关系实现低耦合,从而提高系统的可维护性和可重用性。读者将学习到各种解耦技术,如面向接口编程、事件驱动架构等。 关注点分离(SoC): 阐述了如何将不同的功能或关注点划分到不同的组件中,避免代码的“大杂烩”,提高代码的可读性和可维护性。 高内聚低耦合: 结合模块化和SoC,本书强调了内聚性(模块内部的功能紧密相关)和耦合性(模块之间的依赖关系)的权衡,指导读者如何设计出既专注又协作良好的模块。 演进式设计: 认识到软件架构并非一成不变,而是需要随着需求和技术的发展而不断演进。本书提供了如何设计可演进的架构的策略,例如采用插件式设计、服务化拆分等。 常见设计模式的运用: 尽管本书不局限于设计模式,但它会系统性地介绍和讲解在架构层面广泛应用的经典设计模式,如工厂模式、单例模式、观察者模式、策略模式等,并说明它们如何帮助解决特定的架构问题。 通过对这些核心原则的学习,读者将能够从根本上提升设计系统的思维能力,构建出易于理解、修改和扩展的系统。 三、 纵览全局:现代软件架构风格与蓝图 在掌握了基础原则后,本书将带领读者纵览现代软件架构的多种风格与蓝图,帮助读者根据不同的业务场景和技术需求,选择最合适的架构模式: 单体架构(Monolithic Architecture): 回顾了单体架构的特点、优缺点以及适用的场景,帮助读者理解其演进的历史背景。 微服务架构(Microservices Architecture): 深入剖析了微服务架构的核心理念、优势(如独立部署、技术多样性、弹性伸缩)以及挑战(如分布式事务、服务治理、部署复杂性)。本书将详细讲解如何进行服务拆分、服务间通信(REST, gRPC, 消息队列)、服务注册与发现、API网关等关键技术。 事件驱动架构(Event-Driven Architecture, EDA): 阐述了事件驱动架构的强大之处,即系统通过发布和订阅事件来响应变化。读者将学习到如何设计事件模型、选择消息中间件(如Kafka, RabbitMQ)以及处理异步通信带来的挑战。 领域驱动设计(Domain-Driven Design, DDD): 强调了以业务领域为核心的设计理念,帮助读者建立通用的语言、识别限界上下文(Bounded Context)以及设计领域模型。本书将DDD的理念与架构实践相结合,指导读者如何将DDD的思想融入到系统设计中。 面向服务的架构(Service-Oriented Architecture, SOA): 在微服务兴起之前,SOA也是一种重要的架构风格。本书会对比SOA与微服务的异同,让读者理解架构风格的演变。 本书不仅介绍这些架构风格的理论,更会结合实际案例,指导读者如何在不同的场景下选择和组合这些架构风格,构建出满足特定业务需求的系统蓝图。 四、 细枝末节:关键技术与实践深度解析 架构的落地离不开具体技术的支持和精妙的实践。本书将深入探讨在架构设计和实施过程中至关重要的技术细节与最佳实践: 数据存储与管理: 探讨了关系型数据库、NoSQL数据库(键值对、文档、列族、图数据库)的适用场景、优缺点以及在分布式系统中的选择策略。读者将学习到如何进行数据分片、复制、一致性保证等。 API设计与管理: 强调了良好的API设计对于系统集成和可扩展性的重要性。本书将介绍RESTful API的设计原则、版本管理、安全性以及API网关的作用。 消息队列与异步通信: 详细讲解了消息队列在解耦、削峰填谷、容错方面的作用,以及如何选择合适的中间件、设计消息模型和处理消息的顺序性与幂等性。 缓存策略: 探讨了不同类型的缓存(客户端缓存、服务端缓存、数据库缓存)及其应用场景,以及如何设计有效的缓存策略以提升系统性能。 容错与高可用: 深入研究了如何设计能够应对故障的系统,包括重试机制、熔断器、限流、负载均衡、服务降级等。本书将指导读者如何构建具有高可用性的系统。 安全性考量: 将安全性融入架构设计的每一个环节,包括身份认证、授权、数据加密、安全审计等方面。 可观测性(Observability): 强调了日志、监控、追踪在系统运行时的重要性,指导读者如何构建全面的可观测性体系,以便及时发现和解决问题。 本书将技术细节与架构理念紧密结合,帮助读者理解“为什么”以及“如何做”,将抽象的架构原则转化为可落地的技术方案。 五、 循序渐进:架构演进、团队协作与持续改进 架构设计并非一蹴而就,而是一个持续演进和优化的过程。本书最后将目光投向了架构的生命周期以及团队协作的重要性: 架构演进策略: 探讨了在已有系统上进行架构改造的策略,如“绞杀者模式”(Strangler Fig Pattern),以及如何逐步引入微服务等。 技术债务管理: 阐述了技术债务的概念,以及如何识别、度量和管理技术债务,避免其对系统产生负面影响。 团队组织与架构: 探讨了康威定律(Conway's Law)的意义,以及如何根据系统架构来组织团队,以及如何实现团队之间的有效协作。 架构评审与度量: 介绍了进行架构评审的方法和重要性,以及如何通过一系列指标来度量架构的健康状况。 学习与适应: 强调了在快速变化的技术环境中,持续学习和适应新技术、新趋势的重要性,以及如何构建学习型组织。 本书的结构清晰,逻辑严谨,从宏观原则到微观实践,从理论到应用,层层深入,环环相扣。书中充斥着作者丰富的实战经验和深刻的洞察,通过大量生动的案例和图示,将复杂的架构概念变得易于理解和掌握。 《架构真经》(原书第2版) 是一本不可多得的软件架构领域的权威指南。无论您是初涉架构设计的软件工程师,还是经验丰富的架构师,亦或是希望提升系统设计能力的开发者,本书都将为您提供宝贵的知识和启迪。阅读本书,您将能够: 建立系统的架构思维: 从整体视角审视软件系统,理解不同组件之间的关系和相互影响。 掌握设计高可用、高性能系统的关键技能: 能够设计出稳定可靠、能够应对高并发访问的系统。 熟悉主流架构风格与模式: 了解并能灵活运用微服务、事件驱动等现代架构模式。 提升技术选型和决策能力: 能够根据业务需求和技术特点,做出明智的技术选择。 成为一名更优秀的系统设计者: 能够构建出易于维护、易于扩展、适应未来变化的优秀软件系统。 踏上架构的探索之旅,让《架构真经》成为您不可或缺的向导,助您在纷繁复杂的技术世界中,建造出坚不可摧的数字基石。
拿到《架构真经(原书第2版)》这本书,我原本是抱着一种“求知若渴”的态度,期待能从中提炼出一些能让我的项目经验更上一层楼的“内功心法”。然而,翻阅了前面一些章节后,我发现这本书的切入点比我想象的要更加宏观和基础。它并没有直接深入到某个特定技术栈的框架设计或者性能调优的细节,而是更多地从“为什么”和“是什么”的角度出发,探讨了架构设计的底层逻辑和指导原则。 书中花了相当大的篇幅来阐述“领域驱动设计”的理念,这让我有些意外。我原本以为“真经”会聚焦于更为通用的设计模式,比如如何组织微服务、如何处理分布式事务等等。但《架构真经》却花了大量笔墨去讲解如何理解业务的本质,如何通过识别领域和子领域来划分系统的边界,以及如何用通用的语言来描述这些概念。这部分内容虽然重要,但对于我这种急于解决实际问题的开发者来说,前期可能显得有些“纸上谈兵”。我更希望看到的是如何将这些抽象概念落地到具体的代码实现中,或者提供一些可供参考的架构图和案例分析。当然,也可能是我的期望值过高,希望它能成为一本“万能手册”。