前言 随着业务的发展,笔者当时所在公司的专案越来越臃肿。随着程式的堆砌,专案变得越来越复杂、开发效率越来越低、越来越难以维护,伙伴们苦不堪言,毫无幸福感可言。
我们迫切需要能够解放生产力、放飞伙伴的「良药」,于是,微服务进入视野。然而,微服务究竟是什么,众说纷纭,没有人能说清楚什么是微服务。不仅如此,大家对微服务的态度也是泾渭分明,吹捧者、贬低者比比皆是,在笔者的QQ群、微信群中硝烟四起。笔者参加了不少交流会,感觉许多分享常常停留在理论阶段。一场会下来,觉得似乎懂了,却苦于没有对应的技术堆叠去实现这些理论。
Docker、Jenkins等工具笔者均有涉猎,然而使用什么技术堆叠去实作微服务架构,在很长时间内都是笔者心中的疑问。
2015年中,笔者偶然在GitHub上看到一个名为Spring Cloud的架构,它以Spring Boot为基础,设定简单、设计优雅,并且大多元件经过了生产环境的考验。笔者花1个月左右的时间详细研究了Spring Cloud的相关元件后,体会更深。然而,技术选型必须进行客观、多维度、全方位的分析,而不应由我个人的主观意见作为决定因素。文件丰富程度、社区活跃度、技术堆叠生态、开发效率、执行效率、成功案例等,都是我们选型的重要因素。经过研究,其他几点都很OK,只缺成功案例—在当时,国内几乎没什么成功案例,甚至连中文的部落格、相关资料都没有。
这让笔者陷入两难,在这一过程中,公司一边继续使用阿里巴巴开放原始码的Dubbo(Dubbo虽然非常流行,但毕竟有段时间没有维护了,开放原始码生态也不是很好),一边在笔者的组织下进行一些Spring Cloud相关的技术分享。一方面是希望借此开拓伙伴们的视野,另一方面也希望能将两者相互印证,看是否可在现有平台上参考Spring Cloud的设计或使用其部分元件。
2016年8月,笔者有幸代表公司参加了全球微服务架构高峰讨论区。会上,Josh Long对Spring Cloud的说明在现场引起了不小的轰动,也让笔者眼前为之一亮。会后笔者谘询Josh,Spring Cloud是否可用于生产、是否大规模使用、国内是否已有成功案例,对方一一给予肯定的答覆。此一回覆消除了笔者最后的一点疑虑,开始考虑从Dubbo逐步移转至Spring Cloud的规划与方案。会后,笔者心想,不妨将Spring Cloud相关知识归纳成一个「系列部落格」,一来是加深自己的了解,二来也算是丰富Spring Cloud的中文资料。于是,笔者建立自己的部落格(http://www.itmuch.com),并开始了系列部落格的撰写。写了两篇后,笔者将部落格连结分享到微信群中,没成想,刚好被Josh Long看到,并引用至Spring官方部落格中。这让笔者感到无比荣幸的同时,也让自己贡献开放原始码社区的欲望空前强烈,于是乎,一口气又写了两篇。
再后来,笔者成立了微服务/Spring Cloud/Docker相关的QQ群(157525002),在QQ群伙伴的鼓励下,笔者决定写一本Spring Cloud开放原始码书(github.com/eacdy/spring-cloud-book),没想到竟然获得开放原始码中国的推荐。再然后,笔者在许进的邀请下,联合创办了Spring Cloud中国社区。最后,在群管理员冯靖的引荐下,认识了网红级的高手张开涛,开涛帮忙引荐了电子工业出版社编辑侠少。从此,笔者正式撰写实体书。
本以为,有了开放原始码书的撰写经验,实体书应该是较为轻松的一件事。然而,样稿发出后,却被侠少鄙视⋯⋯主要是语文是体育老师教的,病句满天飞,况且,理论不是我的专长。期间一度想要放弃,多亏了侠少的鼓励,总算坚持写了下去⋯⋯。
仓促完稿之际,感慨万千,激动与感激交织,于是,本段不可免俗,进入老生常谈的「鸣谢」环节—感谢我的家人,写书是件费时费力的功夫,在近半年的时间,我的父母和妻子给予我相当大的支援;感谢电子工业出版社伙伴们的辛苦工作,没有刘佳禾、孙奇俏、侠少等可爱的朋友们,我的书不可能问世;衷心感谢丁露、冯靖、张英磊、王天青、吴峻申(N本书的作者)在百忙之中帮忙校对;衷心感谢QQ群、微信群的朋友们,你们给了笔者最大的帮助和支援!(註:排名不分先后。)
特别鸣谢:感谢吴峻申对笔者提出很多中肯实用的建议和意见;感谢张英磊帮忙重绘、美化书中绝大部分架构图。
谨以此书献给想要学习微服务、Spring Cloud、Docker又不知从何开始的读者朋友们。希望本书能切切实实地帮助你使用特定技术堆叠实现微服务架构的落地,也希望本书不会令你失望。本书很多理论性的内容并未展开,例如Cloud Native、12-factor APP、DDD等,但笔者都在文中延伸阅读、Tips或Warning的形式进行註记,这部分内容希望读者能够自行延伸阅读。本书书附程式码放在Github上,网址为:「github.com/eacdy/spring-cloud-study」。
周立