前言

我们在用心做事,做最好的教育,写最好的原创图书。

笔者是一名从事Java开发快二十年的技术爱好者,一位普通的培训班老师,喜欢和学生们一边开着玩笑,一边教会他们当下流行与实用的技术。很多时候我会跟学生说:“信息产业是一个不断发展变化的行业,没有人可以精确预测这个行业的未来发展方向,更没有人可以在这个行业里拥有绝对的技术实力。同样,也没有永远不过时的技术。我们能做的只是努力地学习与提升,每一天都要在踩坑与填坑的路上不断爬行,磕磕碰碰习惯了,解决问题所花费的时间就越来越少了。想要在这个行业走得长远,一定要喜欢这个行业,喜欢钻研。”

遥想起2003年开源风在中国兴起时,SSH(Spring 1.x + Struts 1.x + Hibernate 2.x)整合开发框架是当时最大的技术亮点。作为开发者的我们,最大的感受是再也不需要去编写那些重复的代码了,利用开发框架我们几乎可以解决当时所有的问题。然而技术的经典是短暂的,随着时间的流逝,SSH的光环也不再辉煌。后来,有了SSH2(Spring 2.x + Struts 2.x + Hibernate 3.x),又有了SSM(Spring + Shiro + MyBatis)。随着开发框架的不断增加,以及Spring对各类开发框架的不断支持,新的问题出现了—参与整合的配置文件过多,项目的集成化太高。大家转而开始寻找新的解决方案。就在所有人都认为Pivotal公司(Spring项目所属公司)已经停滞不前的时候,其在2016年推出了一套完善的轻量级分布式解决方案,就是今天流行的微架构(或称微服务),之中的主要技术手段是SpringBoot + SpringCloud。

微架构的出现,很好地适应了这个时代对快速发展变化的要求。它不再提倡一体化的项目设计,而是对项目进行有效的“业务区”(可以简单理解为不同的子系统)划分,并利用合理的技术对业务性能做出提升和改善,同时又极大地简化了配置文件的使用与profile配置。总而言之,微架构是开发之中看起来非常简单的一种实现技术,但简单的背后考究的却是开发者对于开源技术的熟练程度。

SpringBoot作为一种Web整合开发框架,很好地解决了Web程序的编写困难,可以更简单、高效地实现MVC设计模式。更为重要的是,它可以轻松地整合当前各类主流的开发项目,如消息组件、SQL数据库、NoSQL数据库、邮件服务等,因此能极大地缩短项目的开发周期,更快地响应客户的需求变更。SpringCloud作为SpringBoot的延续,可以基于Restful流行架构实现RPC业务中心的搭建,可以基于消息组件实现远程配置动态的抓取,还可以与Docker相结合,采用虚拟化手段实现便捷的云服务管理。可以说,微架构的出现与云时代是密不可分的。

本书是笔者多年开发经验的总结,写作时力求能一针见血地分析透Java微服务的设计架构(见下图)与各类技术实现。全书围绕着当前的主流方案(高性能+高可用+分布式)进行展开,不仅讲解了所有微架构中的内容,还给出了真实有效的学习案例;不仅可以与虚拟化Docker整合开发,还可以实现大型企业分布式授权OAuth解决方案。可以说,本书就像Java微服务实现架构的一个技术宝典,读者学习后完全可以直接在实际项目之中进行应用。另外,由于微架构涉及到的技术非常广泛,对于某些技术还不十分清楚的读者,可以登录魔乐科技网站(www.mldn.cn)进行视频学习。

笔者崇尚原创,所出版的图书也均为原创。笔者将“技术实现优先”这一原则贯穿于全书,采用步骤分解的模式详细讲解每一步的开发,希望读者可以通过本书学习到微服务的技术精髓。另外,由于技术更新迭代过快,加之本人水平有限,书中难免有表达不到位或不明确的地方,欢迎读者批评指正,万分感谢。

创作不易。感谢我最爱的妻子和我的家人,是你们的付出与支持才让我可以安心创作,同时也祝福我年幼的儿子可以健康快乐地成长。

本书特色

资深Java讲师进行技术剖析,全面把握学习命脉,问题分析一针见血。

140个课程案例,完美演示微服务的方方面面。

基于Maven实现项目管理,与真实项目完美衔接。

丰富的架构图示说明,轻松掌握微架构设计方案。

手把手步骤学习法,轻松掌握微架构开发。

OAuth使用分析与代码实现,掌握企业级RPC认证与授权解决方案。

微服务与Docker虚拟化技术结合使用,轻松实现云服务。

本书章节安排

全书涉及到的技术包括:SpringBoot、Thymeleaf、Jetty、Redis整合、C3P0整合、Druid整合、MyBatis整合、ActiveMQ整合、RabbitMQ整合、Kafka整合、Shiro整合、SpringDataJPA整合、Mail整合、Actuator监控、Restful、RestTemplate、Eureka、Ribbon、Feign、Hystrix、Turbine、Zuul、SpringCloudConfig、SpringCloudBus、SpringCloudStream、SpringCloudSleuth、Zipkin、OAuth、RabbitMQ和Docker。

考虑到学习层次,本书共分为3个组成部分:SpringBoot篇、SpringCloud篇和微服务辅助篇。

第一部分:SpringBoot篇

第1章 SpringBoot编程起步:本章将为读者讲解SpringBoot的发展背景与SpringBoot编程起步。

第2章 SpringBoot程序开发:本章将为读者详细讲解SpringBoot开发常用的各项技术,包括代码测试、Jetty配置、资源加载、访问路径、profile配置、项目打包等。

第3章 Thymeleaf模板渲染:Thymeleaf是模板技术,也是当下Web开发中使用最多的一项技术,在SpringBoot中默认支持有此模板使用,本章将为读者讲解Thyemeleaf之中的使用语法以及与JSP语法的关联。

第4章 SpringBoot与Web应用:主要讲解https协议整合、Tomcat发布、全局异常处理、文件上传等。

第5章 SpringBoot服务整合:主要讲解C3P0、Druid、MyBatis、SpringDataJPA、ActiveMQ、RabbitMQ、Kafka、Redis、Shiro、Mail、Actuator监控等组件的整合应用。

第二部分:SpringCloud篇

第6章 SpringCloud简介:主要讲解RPC技术的主要作用及SpringCloud技术实现架构。

第7章 SpringCloud与Restful:主要讲解Restful架构的基础实现方案、RestTemplate调用微服务以及SpringSecurity基础认证处理。

第8章 Eureka注册服务:主要讲解Eureka的作用、Eureka微服务创建、Eureka集群搭建、打包部署等。

第9章 SpringCloud服务组件:主要讲解Ribbon负载均衡、Feign接口转换、Hystrix熔断机制以及Zuul代理机制。

第10章 SpringCloudConfig:与GitHub结合实现分布式配置文件管理、加密处理、SpringCloudBus更新服务。

第11章 SpringCloudStream:讲解微服务中信息采集的搭建,主要与RabbitMQ整合。

第12章 SpringCloudSleuth:讲解微服务调用监控跟踪、Zipkin、数据采集。

第13章 OAuth认证管理:分析SpringSecurity实现方案缺陷、OAuth与RPC结合流程,并基于SQL数据库与Redis数据库实现OAuth认证与授权管理。

第三部分:微服务辅助篇

第14章 RabbitMQ消息组件:RabbitMQ与Spring微服务有着密不可分的关联,本章将为读者讲解RabbitMQ的安装、管理、Java开发与集群使用。

第15章 Docker虚拟化容器:虚拟化与云开发是流行话题,本章主要讲解Docker虚拟化容器管理技术,同时讲解微服务与Docker的整合开发以及DockerCompose组件的使用。

寄语读者

本书全篇由笔者根据实践项目与教学经验总结而来,虽经过再三斟酌和审校,仍难免存在技术理解上的偏差和解释不到位的地方,欢迎读者批评指正。您的宝贵建议将帮助我们修正此书,大家一起努力,将传道、授业、解惑贯彻到底。

本书用到的程序源代码,读者可扫描下面的“文泉云盘”二维码获取其下载方式,也可登录清华大学出版社网站(www.tup.com.cn)进行下载。技术学习部分,读者可登录魔乐科技官网(http://www.mldn.cn)及沐言优拓官网(http://www.yootk.com)进行学习,也可登录笔者的新浪微博进行留言交流。

文泉云盘
获取学习资源

最后,希望本书成为您的良师益友。祝您读书快乐!