作为一部帮助大家实现微服务架构落地的作品,《Spring Cloud与Docker微服务架构实战》覆盖了微服务理论、微服务开发框架(Spring Cloud)以及运行平台(Docker)三大主题。全书可分为三部分,第1章对微服务架构进行了系统的介绍;第2-11章使用Spring Cloud开发框架编写了一个“电影售票系统”;第12-14章则讲解了如何将微服务应用运行在Docker之上。全书Demo驱动学习,以连贯的场景、具体的代码示例来引导读者学习相关知识,最终使用特定的技术栈实现微服务架构的落地。
本书以实战为主要特色,旨在将微服务理论引入工作实践;作为国内屈指可数的Spring Cloud专著,本书内容较为稀缺;此外,作者为本书书提供了系统连贯的配套Demo。
周立,Spring Cloud中国社区联合发起人。拥有近7年的软件系统开发经验,多年系统架构经验。对Spring Cloud、微服务、持续集成、持续交付有一定见地。
热爱技术交流,曾代表公司参加全球微服务架构高峰论坛、QCon等技术沙龙。拥抱开源,在GitHub与Git@OSC上开源多个项目,并获得了开源中国的推荐,例如开源电子书《使用Spring Cloud与Docker实战微服务》等。
笔者博客:http://itmuch.com,定期分享Spring Cloud相关博客。读者可扫码关注Spring Cloud 中国社区公众号以及作者公众号。
随着业务的发展,笔者当时所在公司的项目越来越臃肿。随着代码的堆砌,项目变得越来越复杂、开发效率越来越低、越来越难以维护,小伙伴们苦不堪言,毫无幸福感可言。
我们迫切需要能够解放生产力、放飞小伙伴的“良药”,于是,微服务进入视野。然而,微服务究竟是什么,众说纷纭,没有人能说清楚什么是微服务。不仅如此,大家对微服务的态度也是旗帜鲜明,吹捧者、贬低者比比皆是,在笔者的 QQ群、微信群中硝烟四起。笔者参加了不少交流会,感觉许多分享常常停留在理论阶段。一场会下来,常常觉得似乎懂了,却苦于没有对应的技术栈去实现这些理论。
Docker、Jenkins等工具笔者均有涉猎,然而使用什么技术栈去实践微服务架构,很长时间成为笔者心中的疑问。
2015年中,笔者偶然在 GitHub上看到一个名为 SpringCloud的框架,它基于 SpringBoot,配置简单、设计优雅,并且大多组件经过了生产环境的考验。笔者花 1个月左右的时间详细研究了 Spring Cloud的相关组件后,体会更深。然而,技术选型必须要进行客观、多维度、全方位的分析,而不应由我个人的主观意见作为决定因素。文档丰富程度、社区活跃度、技术栈生态、开发效率、运行效率、成功案例等,都是我们选型的重要因素。经过调研,其他几点都很 OK,只缺成功案例——在当时,国内几乎没什么成功案例,甚至连中文的博客、相关资料都没有。
这让笔者陷入两难,在这一过程中,公司一边继续使用阿里巴巴开源的 Dubbo(Dubbo虽然在国内非常流行,但毕竟有段时间没有维护了,开源生态也不是很好),一边在笔者的组织下进行一些 Spring Cloud相关的技术分享。一方面是希望借此开拓小伙伴们的视野,另一方面也希望能将两者相互印证,看能否在现有平台上借鉴 Spring Cloud的设计或使用其部分组件。
2016年 8月,笔者有幸代表公司参加了全球微服务架构高峰论坛。会上, Josh Long对 Spring Cloud的讲解在现场引起了不小的轰动,也让笔者眼前一亮。会后笔者咨询 Josh, Spring Cloud能否用于生产、是否大规模使用、国内是否已有成功案例,对方一一给出了肯定的回答。这一回答消除了笔者最后的一点疑虑,并定下了从 Dubbo逐步迁移至 SpringCloud的规划与方案。会后,笔者心想,不妨将 SpringCloud相关知识总结成一个“系列博客”,一来是加深自己的理解,二来也算是丰富 SpringCloud的中文资料。于是,笔者创建了自己的博客 http://www.itmuch.com,并开始了系列博客的编写。写了两篇后,笔者将博客链接分享到微信群中,没成想,恰好被 JoshLong看到,并引用到 Spring官方博客中去了。这让笔者感到无比荣幸的同时,也让自己贡献开源社区的欲望空前强烈,
于是乎,一口气又写了两篇。
再后来,笔者成立了微服务 /Spring Cloud/Docker相关的 QQ群( 157525002),在 QQ群小伙伴的鼓励下,笔者决定写一本 Spring Cloud开源书 https://github.com/eacdy/spring-cloud-book,没想到竟然获得开源中国的推荐。再然后,笔者在许进的邀请下,联合创始了 Spring Cloud中国社区。最后,在群管理员冯靖的引荐下,认识了网红级的大牛张开涛,开涛帮忙引荐了电子工业出版社编辑张春雨老师。从此,笔者正式撰写实体书。
本以为,有了开源书的撰写经验,实体书应该是较为轻松的一件事。然而,样稿发出后,却被春雨鄙视……主要是语文是体育老师教的,病句满天飞,况且,理论不是我的专长……期间一度想要放弃,多亏春雨老师的鼓励,总算坚持写了下去……
仓促完稿之际,感慨万千,激动与感激交织,于是,本段不可免俗,进入老生常谈的“鸣谢”环节——感谢我的家人,写书是个费时费力的活儿,在近半年的时间,我的父母和妻子给予了我极大的支持;感谢电子工业出版社小伙伴们的辛苦工作,没有刘佳禾、孙奇俏、张春雨等可爱的朋友们,我的书不可能面世;衷心感谢丁露、冯靖、张英磊、王天青、吴峻申(n本书的作者)在百忙之中帮忙校对;衷心感谢 QQ群、微信群的朋友们,你们给了笔者最大的帮助和支持!注:排名不分先后。
特别鸣谢:感谢吴峻申给笔者提出很多中肯实用的建议和意见;感谢张英磊帮忙重绘、美化书中绝大部分架构图。
谨以此书献给想要学习微服务、SpringCloud、Docker又不知从何开始的读者朋友们。希望本书能切切实实地帮助您使用特定技术栈实现微服务架构的落地,也希望本书不会令您失望。本书很多理论性的内容并未展开,例如 Cloud Native、12-factor App、DDD等,但笔者都在文中以 TIPS、拓展阅读或 WARNING的形式进行了标记,这部分内容希望读者能够自行拓展阅读。
周立 千米网
文中代码示例@Value(“user.userServiceUrl”) 应该改为 @Value(“${user.userServiceUrl}”)
“Java的RMI则协议”应该改成“Java的RMI协议则”
Eureka Serve —> Eureka Server
标题拼写错误,docket写成了dokcer
“而其他的仓库都不是镜像仓库”
应为
“而其他的仓库都不是官方镜像仓库”