分布 & 分享

分布式计算不是一门年轻的技术,早在上个世纪70年代末便已是计算机科学的一个独立分支了;它也不是一门冷僻的技术,从C/S模式到P2P模式,从集群计算到网格计算,乃至风靡当下的云计算,都是其表演的舞台。另一方面,Java作为一门应网络而生的语言,对分布式计算有着天然的友好性,同时也是当今最流行的编程语言。然而令人稍感意外的是,以“分布式Java应用”为专题的书籍并不多见,佳作则更少。至于国人所著者,请恕在下孤陋,尚未得见。不过细想之下,其实不足为奇。要开发一个高质量的分布式Java应用,以达到高性能、可伸缩、高可用、低延迟的要求,同时保证一致性、容错性、可恢复性和安全性,是何等的不易啊。它对程序开发的挑战在于:不仅需要对Java语言、类库、各种框架及相关工具极为熟悉,还需要对底层的JVM机制、各种网络协议有足够的了解;它对分析设计的挑战在于:不仅需要熟悉传统的应用架构模式,还需要掌握适用于分布式应用的架构模式和算法设计。此外,分布式应用对数据库管理员、测试分析人员等也提出了更高的要求。一本书若想涵盖这么多的内容,其难度可想而知。作者不仅需要具备起码的理论素养,更需要有丰富的实践经验。如果仅仅是纸上谈兵,对读者是无甚裨益的。

正因如此,半年多前收到林昊先生的部分书稿时,便窃感欣喜,认定这是一个很好的选题。作为淘宝网的系统架构师,他有着令人艳羡的得天独厚的实践机会。尤其难得的是,林昊亲身经历了淘宝网的快速成长和转型期,饱尝其间的成败甘苦,从中也获得了许多宝贵的第一手经验。如今,他选择将这些经验以书籍的形式与众共享,对有志于分布式应用开发的读者而言无疑是一大福音。

本书的基础部分介绍了分布式Java应用的基本实现方式(重点是SOA)、相关的JDK类库和第三方框架,并对JVM的基本机制进行了深入解析;实践部分则关注于高性能、高可用和可伸缩系统的构建等。全书文风朴实,并附有大量的代码、数据和图表,比较符合大多数程序员的口味,也非常具有实践指导意义。如果用挑剔的眼光看,本书在深度、广度和高度上还有继续改进的余地,比如:对关键性的并发设计和算法设计可以介绍得更深入些;尚未涉及分布式应用中的安全问题;在性能调优一章中对Java源码级别的优化介绍似嫌不足;未能高屋建瓴地总结和提炼出分布式应用独有的编程和设计原则、架构和思维模式,等等。当然,对于这样一本上乏经典可参、下需躬身实践的书籍来说,以上多属苛求。事实上,本人在审稿过程中也是获益良多。

另值一提的是,林昊先生利用业余时间写作,已是经年有余,其间数易其稿,且从善如流,充分体现了技术人员的求道精神。本书的主题在明是分布,在暗则是分享——分享一段成长经历、分享一份宝贵经验,无论对作者还是读者,都是善莫大焉。

郑晖

http://blog.zhenghui.org/

《冒号课堂——编程范式与OOP思想》作者

2010年5月于广州