序
无论使用什么样的开发语言,无论软件运行在何种操作系统上,无论架构采用的是单体应用架构还是分布式微服务架构,只要我们开发复杂的交易型业务系统,必然就有一个困扰诸多开发人员的技术难题无法绕开,那就是事务。
许多作者在讲解架构模式与设计模式,或者介绍软件开发方法与理论,抑或剖析业界与社区主流的开发框架时,大多会用一定篇幅介绍事务这一概念,由此可见它的重要性。奇怪的是,据我所知,整个技术社区却没有一本专门讲解事务的图书。
这是因为事务涉及的知识面既广且深,这些知识的叠加对作者的能力提出了极高的要求,即至少要在事务领域实践多年,真刀真枪地写过底层事务框架。作为一名业务系统的架构师和程序员,我对事务的认识也只是一知半解。虽然我也曾在书中用相当一部分篇幅详细介绍事务的相关知识,但是很惭愧,我并未建立对事务的系统认知。究其原因,是我获取的事务相关知识皆来自散落于各种文献的片言只语。幸运的是,肖宇看到了这一关键空白,与他的朋友冰河共同创作了本书,为我们推开了认识并了解事务的一扇窗。
本书可谓事务,尤其是分布式事务的极佳学习与实战宝典。书中首先介绍了事务的基本概念、MySQL事务和Spring事务的实现原理。在夯实这些基础知识后,进而向分布式事务迈进,相继介绍了分布式系统架构的演进、分布式事务场景与分布式事务的理论知识。在读者具备了足够的事务知识后,书中陆续抛出干货,相当深入地介绍和分析了强一致性与最终一致性分布式事务的解决方案,高屋建瓴地剖析与总结了各种分布式事务模式的原理,将XA强一致性、TCC、可靠消息最终一致性、最大努力通知型等事务模式一网打尽,各种技术知识的讲解精彩纷呈。即便如此,作者尤嫌不足,进一步引出源码分析,先后对ShardingSphere、Atomikos、Narayana、Hmily-TCC等框架的源码进行剖析,并给出了实战演练的案例。
本书的结构安排体现了作者的匠心独运,充分证明了作者的事务知识已经烂熟于胸,因而下笔才能游刃有余。何以证明?肖宇是Apache ShardingSphere的贡献者之一,也是Hmily、RainCat、Myth等分布式事务框架的作者,毫不夸张地说,事务这门技能已经融入他的技术血液中了!而他的朋友冰河,也是深耕分布式事务领域多年的高级技术专家和资深架构师。
倘若你对国内开源社区有所关注和了解,就一定感受到了Dromara开源社区的影响力,而肖宇作为该社区的创始人,正在默默地为推动中国开源技术的发展贡献自己的力量。肖宇还是微服务网关ShenYu框架的创始人,在他的努力下,该框架目前已经成功进入Apache基金会的孵化阶段。在认真拜读过ShenYu框架的源代码后,我认为该框架的代码质量与设计能够在众多开源框架中名列前茅。肖宇在开源方面已经取得了如此斐然的成绩,没想到他还笔耕不辍,携手冰河历经近两年的时间为大家贡献了如此具有深度的技术书。
很荣幸受肖宇兄所邀为本书作序,我已经能够预见,随着本书的出版,必定会有越来越多的同行将目光投向事务,并愿意沉下心去理解事务,认真地学习事务,努力掌握事务编写的技巧,进而熟练地运用事务,为推动事务发展贡献一份力量。
张逸 场量科技联合创始人、《解构领域驱动设计》作者