本书从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,本书主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。
本书适合所有Java开发人员,尤其适合正在做微服务架构技术选型或正在实施微服务架构的团队查阅和参考。
面向生产的一站式解决方案
领航微服务低成本转型实践
推荐序一
我和Java很有缘,2003年在富士通南大实习的时候,就开始用Struts/JSP/Hibernate/ MySQL做第一个Java项目——SPIF(http://www.fujitsu.com/cn/products/software/applications/ spif/)。
工作之后,主要做J2EE的开发,并开始慢慢接触和使用Spring。加入EMC之后,很有幸和Spring成为一个大家庭(EMC收购了VMware,VMware收购了Spring)。2012年,我和Spring Data/XD的负责人Mark Pollack在中国开过一次小会,和他探讨了一些关于Data Pipeline的想法。后来我也看了很多Josh Long(龙应春)的演讲视频,并在2016年终于有幸能够与他在一个技术大会上同场演讲,并在会议之后做了很多深入沟通。
2015年上半年,我读了两本书:The Phoenix Project和Migrating to Cloud-Native Application Architectures,让我对DevOps、微服务和云原生架构有了初步的认识,也让我对Netflix的那套OSS套件有了一个初步印象。
我是在2015年9月加入麻袋理财之后开始接触Spring Boot的,试用之后感觉它很神奇,再也没有被Spring之前那些烦琐配置所束缚。当时正好和一个架构师讨论要做一个项目的升级改造,决定采用Spring Boot和微服务架构。开始的时候,服务治理还是用了Dubbo。之后因为对Spring Cloud有了比较深刻的认识,在之后一个全新项目上,我们完全按照微服务架构,使用Spring Boot和Cloud进行开发,并采用CI/CD自动化流程和容器化部署。
因为使用了Spring Cloud,让我对Spring Cloud的相关信息特别关注。一个偶然的机会,我认识了Spring Cloud中国社区的负责人许进、翟永超(本书作者)和周立,探讨了很多使用Spring Cloud的经验,感觉与他们和Spring Cloud相见恨晚。
翟永超本人写了很多关于Spring Cloud使用的博客,不同于一般作者,他写的内容更加贴近实际,是自己工作经验的深刻总结,可以拿来直接用于生产。
有一次我们聊到关于配置中心(Spring Cloud Config)如何在生产中使用,他解答了我很多问题,并告诉我他写了一本书,书中就会包含这些内容。这让我对这本书充满期待。后面也有幸见到了本人,一个瘦瘦高高的书生,一看就是一个很有内涵的技术人。畅聊之后,翟永超就把书发给了我,让我先睹为快。
我把翟永超的书仔细拜读了一遍,最大的收获就是让我对Spring Cloud的认识又上升了一个层次。我之前对Spring Cloud的理解更多的是知其然,但是却不知道其所以然,对Spring Cloud里面的逻辑知之甚少。而读了翟永超的《Spring Cloud微服务实战》一书后,让我对Spring Cloud各个组件的认识提升了一个层次,同时也让我对Spring Cloud各个组件的实现原理有了初步的认识,因此我建议所有打算将Spring Cloud用于生产的朋友一定要好好读一下这本书。
王天青
DaoCloud 首席架构师
2017年3月
推荐序二
2016年10月开始,我在冰鉴科技负责微服务架构迁移相关的调研和筹建工作。我比较了Dubbo、Dubbox、Motan、Spring Cloud等框架后,最终锁定在Spring Cloud上。这是一个非常年轻的框架,关于它的中文文档少之又少,更不用说有深度的技术干货了。
当我的团队在利用搜索引擎进行相关检索时,永超的技术博客十分显眼地排在了前列,我非常感激他贡献的这个系列的文章,这在我们团队做微服务架构迁移的工作中,起到了关键作用。后来有一天,我俩在一个架构群中相识,一番讨论后发现是博主本人并且他有写书计划时,我告诉了我的团队,我们不谋而合地决定要在该书出版时迅速收入囊中,做到人手一本。而今天对于我来说更是非常荣幸,能够给永超的新书写推荐序。
Spring Cloud是一个微服务架构实施的综合性解决框架,而在如何构建微服务的选择上,由于我们团队是从SSM(Spring + Spring MVC + MyBatis)框架开始演进的,基于让演进中改动最小的初衷,我们决定使用Spring Boot做微服务构建。我们从对Spring Boot的调研开始就一直关注着永超的技术博客,在第一次接触 Spring Boot 的时候就被它“习惯优于配置”的设计概念深深吸引,这无疑简化了做业务逻辑开发同事的工作量,也使得他们可以不用关注配置细节。本书中也有关于Spring Boot基础知识的详细讲解以及一个案例工程带你快速构建属于你的第一个微服务。
如开头所述,为了将系统微服务化,我们也一直在对 Spring Cloud 进行相关调研。这本书也是国内市场上为数不多的、全面讲解 Spring Cloud 微服务的中文图书。本书详细讲解了 Spring Cloud 生态的各类组件,涵盖了服务治理组件 Eureka、客户端负载均衡组件 Ribbon、服务容错保护组件Hystrix、声明式服务调用组件 Feign、API 网关治理组件Zuul、分布式配置中心组件 Config、消息总线组件 Bus、消息驱动组件 Stream、分布式服务跟踪组件 Sleuth。这包含了我们在实施微服务中需要深入了解的各个轮子,是一本需要仔细研读、反复阅读的精品之作。
最后,预祝永超在Spring Cloud的学习和工作中再创佳绩,也希望读者朋友能够在阅读完本书后快速地搭建好实施微服务过程中的基础脚手架,并在未来工作中能够将团队的一些实践通过Spring Cloud中国社区进行交流,为开源贡献自己的一份力量。
朱清
冰鉴科技信息技术部总监
Spring Cloud中国社区联合创始人
2017.03.27
推荐序三
收到本书作者翟永超的邀请为这本书写推荐序,其实我是很谨慎的。抱着对读者负责、对技术严谨的态度,不能在完全不懂Spring Cloud的基础上妄加评论。就像2009年的云计算和现在的大数据,“Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.”。所以我概读了书中的内容,的确是一本好书,特别是在基于技术实践的阐述中又不失对“微服务化”理论层面的讲解以及发展演进过程的说明。
结合在云计算行业中为大量企业级客户做的服务案例,“集中化”的系统架构确实在企业级客户业务中受到越来越多的挑战,随着业务变化对IT需求的不断增加,处于逐渐失控的状态。CIO们受到越来越大的挑战,希望做到数据驱动业务,那第一个阶段就要做去中心化的改造。如书中所阐述,“微服务化”其实并不是简单的技术革新,而是对团队组织,系统架构,系统研发,自动化测试、发布、运维都提出了一系列的变革要求。所以我觉得,不管是架构师、运维经理、研发主管还是CIO都可以从本书中有所收获。
同样,阿里云的企业级中间件EDAS(基于阿里系的Dubbo开源项目)配合强大的飞天云平台与Docker服务的支持,在大中型企业客户业务中得到更多的验证,如森马服饰、来伊份、正佳广场、中石化的易派客电商平台等。与这些商业化的中间件产品相比,Spring Cloud得到了更多热衷开源项目的人的支持,相信在有足够团队技术能力的保障下,也会取得越来越多的成功案例。书如其人,值得认真拜读,我会推荐给更多的人,为翟永超点赞。
李俊涛
上海驻云科技执行总监
推荐语
本书从时下流行的微服务架构概念出发,结合Spring Cloud的解决方案,深入浅出地剖析了其在构建微服务架构中所需的各个基础设施和技术要点,包括服务治理、容错保护、API网关、配置管理、消息总线等。作者不仅对如何使用各个组件做了详细介绍,还从原理上做了很多分析,可以帮助读者更好地理解Spring Cloud的运行原理,这有助于我们在实战中有效地排错和做进一步扩展。本书是微服务架构方面非常不错的实战书籍,强烈推荐正在做微服务实践或打算实施微服务的团队作为参考资料。
南志文
百联全渠道研发总监
Spring Cloud的诞生对于没有足够资金投入或者技术储备实力的技术团队是一种福音。利用Spring Cloud的一站式解决方案,可以很轻松地搭建起微服务架构的软件系统,大大减少了开发成本,从容应对业务的快速发展。本书是国内第一本Spring Cloud的实战书籍,给我带来了无限惊喜。作者由浅入深地讲解了基于Spring Cloud构建微服务所需要的各个核心组件,并配有大量实战代码,理论和实践兼备,读后收获颇丰。强烈推荐给每一位对Spring Cloud感兴趣或是打算使用Spring Cloud的技术人员阅读。
覃罗春
德比软件产品开发负责人
当下最火的词无外乎就是“微服务”了,但是很多创业公司想要实现微服务架构体系还需要做很多方面的工作才可以逐步实现,所需花费的成本还是较大的。而近年来Spring Boot/Cloud生态架构体系的出现为行业提供了一站式解决方案,解决了不少公司的架构选型和维护方面的难题。本书是国内第一本以Spring Cloud为技术蓝本的微服务类实战书籍,不仅结合实际案例介绍了Spring Cloud的使用,还从源码的角度深入分析了原理实现,强烈推荐每一位开发者和架构师收藏和学习。
程超
合众支付资深技术专家
随着微服务架构的兴起,企业IT架构开始变革,国内出现首批微服务实战布道者。本书作者翟永超,作为Spring Cloud中国社区联合发起人和国内首批Spring Cloud实践与布道者,发表的博文超过数百万次访问量。他的《Spring Cloud微服务实战》一书,包含大量生产实战经验,把Spring Cloud常用组件通过案例剖析,可帮助企业和开发者快速实施微服务架构。
许进(xujin.org)
Spring Cloud中国社区创始人
中间件高级研发工程师
近几年,微服务概念逐渐深入人心,国内各家互联网公司都引入了相应的实践。而被应用最多的就是Spring Cloud这套被戏称为“全家桶”的微服务框架。它几乎实现了微服务的所有功能,而且又完美符合微服务的基础理论,可帮助大家提高工作效率。但是,国内关于Spring Cloud的中文资料相对比较匮乏,很多学习者遍寻入门而不得。在此大背景下,有一些有识之士无私贡献了自己的绵薄之力,本书作者翟永超就是其中一位。这本书对于广大需要在公司中实践微服务的人们来说绝对是一本可以快速上手实现微服务的工作手册。我希望这本书犹如一颗种子,能在国内互联网环境的土壤中生根发芽,最后变成一棵参天大树。
吴峻申
上海青客机器人有限公司架构师
前言
“微服务”架构在这几年被广泛传播,变得非常火热,以至于关于微服务架构相关的开源框架和工具都变得越来越活跃,比如:Netflix OSS、Dubbo、Apache Thrift等。Spring Cloud也因为Spring社区在企业应用领域的广泛知名度和强大影响力,受到了广大架构师与开发者的高度关注。
从接触Spring Cloud开始,我除了被其庞大的项目结构震撼之外,还被其所要完成的远大目标所吸引。该项目不同于其他Spring的优秀项目,它不再是一个基础框架类,而是一个更高层次的、架构视角的综合性大型项目,其目标旨在构建一套标准化的微服务解决方案,让架构师、开发者在使用微服务理念构建应用系统的时候,面对各个环节的问题都可以找到相应的组件来处理。引用网友戏称的一个比喻:Spring Cloud可以说是Spring社区为微服务架构提供的一个“全家桶”套餐。由于“套餐”中的组件通过一个社区进行包装与整合,使得“套餐”中各个组件之间的配合变得更加和谐,这可以有效减少我们在组件的选型和整合上花费的精力,所以它可以帮助我们快速构建起基础的微服务架构系统。
虽然,Spring Cloud提供了很多我们期待的内容,但是因其涵盖的内容非常广泛,并且知识跨度较大,因此对于很多初学者来说就像被专业名词轰炸了一样,入门的难度也就大大提高了。同时,中文文档与资料的匮乏,以及官方文档的内容对于使用描述并不够细致等问题,也直接提升了使用者的学习门槛。这些看似都不是什么大问题,但是却在一定程度上阻碍了Spring Cloud在国内的推广与发展,毕竟任何一项优秀技术都需要有大批的实践者才能得到不断优化、完善和发扬光大。作为一名Spring社区的忠实粉丝和长期实践者,自然希望可以有更多的开发者可以参与到Spring Cloud的使用和贡献中来,笔者也就萌生了想要编写一些入门文章的念头,一方面对自身知识的掌握做一些整理,另一方面也希望这些内容可以成为后来者的学习资料。于是就开始坚持着写了一些基础的入门文章和示例,没有想到会受到不少Spring爱好者的持续关注,在创建了相关的QQ交流群之后,短短一个月的时间,交流群的人数就突破了1000人。由于在交流过程中发现很多问题重复出现,而这些问题并没有得到很好的整理,也没有办法被搜索引擎收录,于是就创建了Spring Cloud中文社区论坛,以帮助收集交流过程中提出和解决的各种问题,方便将来学习者可以搜索到这些前人踩过的坑。
之后,有幸在电子工业出版社计算机出版分社的张春雨先生的邀请下,开始编写这本关于Spring Cloud的入门书籍。在这本书的编写期间,由于工作、家庭等因素,使得与大家交流的时间变得越来越少,但好在有诸多网友和热心爱好者帮忙一起维护着交流群与论坛,为大家提供了很多宝贵的学习资源,我也从中得到了不少启发和收获。同时,感谢后来建议并牵头整合目前国内Spring Cloud学习资源的许进,他在此期间承担了很多沟通和网站维护工作,为Spring Cloud中国社区付出了不少精力,后续我也会重新加入进来,继续编写在线免费入门教程,以帮助更多的爱好者快速入门Spring Cloud。我们也欢迎更多的爱好者参与进来,一起为社区贡献力量,以帮助Spring Cloud在国内被更好地应用与成长。
轻松注册成为博文视点社区用户(www.broadview.com.cn),即可享受以下服务:
下载资源:本书所提供的示例代码及资源文件均可在“下载资源”处下载。
提交勘误:您对书中内容的修改意见可在“提交勘误”处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
与作者交流:在页面下方“读者评论”处留下您的疑问或观点,与作者和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/31301
原文:最后导致服务A也不能正常服务
应为:最后导致服务C也不能正常服务
原文:Apache的Consul等
应为:HashiCorp的Consul等
原文:
并且根据不同的组件还提供了更多有空的端点
应该是:
并且根据不同的组件还提供了更多有用的端点
compute-service 应为 hello-service
“只要有一个符合就不再进行过滤”
应为
“两个都符合就不再进行过滤”