凤凰架构

周志明

出版时间

2021-06-30

ISBN

9787111683919

评分

★★★★★

标签

编程

书籍介绍

这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。

全书共16章,分为演进中的架构、架构师的视角、分布式的基石、不可变基础设施和技术方法论五部分。

第一部分 演进中的架构(第1章)

着重介绍了软件开发历史中多种主流架构风格出现的契机、解决的问题以及带来的新缺陷。

第二部分 架构师的视角(第2~5章)

总结了一名架构师应该在架构设计时思考哪些问题,有哪些主流的解决方案和行业标准做法,各种方案有什么优缺点,不同的解决方法会带来什么不同的影响,等等。

第三部分 分布式的基石(第6~10章)

重点讨论了“不同架构风格是应该在技术规范上统一,还是由应用系统自行解决”这个问题,给出了解决思路、方法和常见工具。

第四部分 不可变基础设施(第11~15章)

重点讲解了基础设施不变性的目的、原理与实现途径,包括虚拟化容器、容器间网络、持久化存储、资源与调度、服务网格等内容。

第五部分 技术方法论(第16章)

面向技术决策者集中讨论了与分布式、微服务、架构等相关的理论话题,将解决问题的能力归纳、总结、升华为方法论。

全书以实践为导向,一个案例贯穿全书,同时给出了基于Spring Boot、Spring Cloud、Kubernetes、Istio、AWS Lambda 五种架构风格的样例工程。

AI导读
核心看点
  • 从架构视角解析大型分布式系统构建
  • 涵盖从单体到无服务的架构演进史
  • 深入讲解分布式事务与不可变基础设施
适合谁读
  • 从事后端开发与系统设计的工程师
  • 希望深入理解分布式系统原理的读者
  • 寻求架构方法论与技术决策指导者
读前提醒
  • 建议结合书中提供的开源样例工程阅读
  • 需具备计算机网络与数据库基础知识
  • 重点关注架构演进背后的设计哲学
读者共识
  • 作者文笔严谨,逻辑清晰,深入浅出
  • 内容详实系统,兼具理论深度与广度
  • 被誉为国内软件架构领域的标杆之作

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "不过,以上列举的这些问题都还不是今天以微服务取代单体系统成为潮流趋势的根本原因,笔者认为最重要的原因是:单体系统很难兼容“Phoenix”的特性。这种架构风格潜在的要求是希望系统的每一个部件、每一处代码都尽量可靠,尽量不出或少出缺陷。然而战术层面再优秀,也很难弥补战略层面的不足。单体系统靠高质量来保证高可靠性的思路,在小规模软件上还能运作良好,但当系统规模越来越大时,交付一个可靠的单体系统就变得越来越具有挑战性。如本书前言所说,正是随着软件架构演进,构建可靠系统的观念从“追求尽量不出错”到正视“出错是必然”的转变,才是微服务架构得以挑战并逐步取代单体架构的底气所在。"
  • "关于UNX设计哲学,有几个不同的版本,这里指的是Common Lisp的作者Richard P.Gabriel提出的简单优先原则,即“Worse is Better”。"
  • "最终,到1994年至1997年间,由ACM和Sun院士Peter Deutsch、套接字接口发明者BilJoy、Java之父James Gosling等一众在Sun公司工作的专家们共同总结了通过网络进行分布式运算的八宗罪(8 Fallacies of Distributed Computing)。 1)The network is reliable。网络是可靠的。 2)Latency is zero。延迟是不存在的。 3)Bandwidth is infinite。带宽是无限的。 4)The network is secure。网络是安全的。 5)Topology doesn't change"
  • "以上四种隔离级别属于数据库理论的基础知识,多数大学的计算机课程应该都会讲到,可惜的是不少教材、资料将它们当作数据库的某种固有属性或设定来讲解,导致很多同学只能对这些现象死记硬背。其实不同隔离级别以及幻读、不可重复读、脏读等问题都只是表面现象,是各种锁在不同加锁时间上组合应用所产生的结果,以锁为手段来实现隔离性才是数据库表现出不同隔离级别的根本原因。 可串行化:读锁、写锁、范围锁 可重复读:读锁、写锁,持续到事务结束。 读已提交:读锁在查询完成后释放,写锁持续到事务结束。 读未提交:只加写锁。"
  • "宕机恢复能力这一点不必多谈,1985年Fischer、Lynch、Paterson提出了“FLP不可能原理”,证明了如果宕机最后不能恢复,那就不存在任何一种分布式协议可以正确地达成一致性结果。该原理在分布式中是与CAP不可兼得原理齐名的理论。"
  • "可用性(Availability):代表系统不间断地提供服务的能力。理解可用性要先理解与其密切相关的两个指标:可靠性(Reliability)和可维护性(Serviceability)。可靠性使用平均无故障时间(Mean Time Between Failure,MTBF)来度量;可维护性使用平均可修复时间(Mean Time To Repair,MTTR)来度量。可用性衡量系统可以正常使用的时间与总时间之比,其表征为:A=MTBF/(MTBF+MTTR),即可用性是由可靠性和可维护性计算得出的比例值,譬如99。9999%可用,即代表平均年故障修复时间为32秒。"
  • "最终一致性的概念是由eBay的系统架构师Dan Pritchett在2008年在ACM发表的论文“Base:An Acid Alternative”中提出的,该论文总结了一种独立于ACID获得的强一致性之外的、使用BASE来达成一致性目的的途径。BASE分别是基本可用性(BasicallyAvailable)、柔性事务(Soft State)和最终一致性(Eventually Consistent)的缩写。BASE这种提法简直是把数据库科学家酷爱凑缩写的恶趣味发挥到淋漓尽致,不过有ACID vs BASE(酸ⅴs碱)这个朗朗上口的梗,该论文的影响力的确传播得足够快。"
  • "以上这种依靠持续重试来保证可靠性的解决方案谈不上是Dan Pritchett的首创或者独创,它在计算机的其他领域中已被频繁使用,也有了专门的名字一“最大努力交付”(Best-Effort Delivery),譬如TCP协议中未收到ACK应答自动重新发包的可靠性保障就属于最大努力交付。而可靠事件队列还有一种更普通的形式,被称为“最大努力一次提交”(Bst-Effort1PC),指的是将最有可能出错的业务以本地事务的方式完成后,采用不断重试的方式(不限于消息系统)来促使同一个分布式事务中的其他关联业务全部完成。"
作者简介
人工智能与企业级研发资深专家,前远光软件研究院院长,阿里云MVP、腾讯云TVP、华为云MVP。在Java技术栈、微服务、云原生架构等领域有深入研究。 开源技术的积极倡导者和推动者,QCon全球开发者大会明星讲师、极客时间布道师、InfoQ.CN专栏撰稿人, 作为组织者或主讲人,参与了多场线上、线下的技术布道活动。 计算机技术作家,十年间出版过八部技术专著,口碑和销量均得到业内认可,其中四本书在豆瓣上获得了9.0分或以上的评价。如知名畅销书《深入理解Java虚拟机:JVM高级特性与最佳实践》目前已经出至第3版,累计印刷超过50次,仍长销不衰,是中文计算机图书领域公认的、难得一见的佳作。
目录
赞誉
自序
前言
【第一部分 演进中的架构】
第1章 服务架构演进史2

显示全部
用户评论
虽不算深入,但够系统化,通过对各构架演进的历史背景 解决问题 以及存在问题的介绍 给人以站在高处看问题的感觉,加上作者自身功底深厚 见解独特,读起来确实上头,连着2天基本算是看了一遍
还只看了远程调用这节的内容,写的真的是牛。
此时的我正在找云原生相关的工作岗位,真本书真的是我看过的国人出的书中最好的一本了,可能是我以前看的书比较少,或者理解能力有限,但是这本书的作者的表达能力实在是太棒了,让我这种菜鸟都能读懂。
非常好的书。作者不仅说明某个技术的用法,还说明了这个技术的目标,并且描述演进过程。比如对流量控制技术,介绍技术的目标,然后使用Spring Cloud、Istio等不同的技术实现,演示技术实现的区别,理解不同方式的思路。周志明也是《深入理解JVM》的作者,也是一本好书。
对现有服务端技术的一个综述,内容网上都有,价值就在于作者的总结的脉络和架构。认的人就会觉得是本好书,不认的就会觉得讲的浅。
有几章写的很漂亮,但需要反复读,有可能是我比较笨吧
醍醐灌顶
从历史背景讲到当今技术潮流,娓娓道来,构筑了一个清晰明了的云原生、分布式、微服务知识框架
太牛逼了,这书只看了一章就服了。
周志明博士太牛了!对整个软件架构的做了很直白的概括,像我这样的的普通开发者,对系统很难一窥全貌,但通读这本书后,对整个系统架构有了很整体的认识。软件技术的提升,不能仅局限于编程语言,最终我们是需要构建一套软件系统的。以前,自己对编程开发认知太局限了,这本书让我看到了系统架构的全貌。 按书中的知识点,去学习,必然能提升自己的编程水平,形成自己的编程思维。感谢周博士写出如此佳作。
下载
收藏