前言
目前,Spring Boot+Spring Cloud架构已经成为Java程序员的必备技能之一,刚开始学习时看到琳琅满目的Spring全家桶,可能会感到无从下手。如果只了解微服务中的各知识点,而忽略了以微服务分布式架构的方式学习系统的架构顺序,初学者可能就不知道如何使用微服务构建分布式系统。为了使读者更快掌握Spring Boot+Spring Cloud的基础知识与架构方法,本书的章节顺序即应用系统的架构顺序。
分布式可以理解为人体器官,人体可看成分布式系统,大脑是注册中心的集群,四肢与器官是提供服务的微服务,前进的距离是微服务运行之后的返回值,消耗的体力是微服务中处理的逻辑,影响的记忆是某些微服务对数据库的增删改查。分布式可看成一种思想,而Spring Cloud与Spring Boot是实现了这种思想的工具。
无论多复杂的分布式应用程序,整合多少个服务器,调用多少种服务接口,使用多少种协议,使用集群还是高可用的何种架构方式,使用客户端还是服务端的何种负载均衡,使用哪个消息中间件、哪个数据库集群,使用搜索引擎/非关系型数据库/时序性数据库/关系型数据库/文件管理等多少种存储介质,其分布式本质都是分布式自身的思想。建议读者动手将本书实例都敲在IDE中,在Linux服务器上搭建各集群,那么上面那些看起来颇具难度的问题,都将不会是难题。
本书主要内容如下。
介绍微服务分布式的相关概念,搭建第一个微服务项目,了解微服务项目的运行过程。通过微服务整合Consul注册中心,搭建第一个微服务+注册中心的分布式系统。多个微服务与Consul注册中心相连,彼此通信,微服务获得彼此的接口及地址,调用彼此的接口与服务。然后无可避免地需要处理彼此通信时报错的情况,以免单一微服务无法正常提供服务,导致整个分布式系统的瘫痪。此时采用Ribbon客户端负载均衡方案,依靠多台服务器部署多个相同微服务项目,以提高系统的性能。在分布式通信不足以解决全部报错问题时,可选择Hystrix进行更精细划分,保证在任何一台微服务出现问题时,系统整体仍然能正常运行。
至此初步搭建了分布式系统,然后开始增加微服务的增删改查等业务功能。在系统处理增删改查过程的同时,还需要事务功能的支撑与管理。在初步增删改查后,依靠微服务的缓存增加微服务的性能,同时需要确保Redis与MySQL之间的增删改查一致性。另外,如果有特殊业务需求,可由分布式消息通信彼此协作、沟通、处理。
在处理基本业务后,还会有定时任务等业务需求,此时需要微服务的任务调度进行处理。而单节点任务调度的微服务可能会有宕机或重复执行等相关问题,只有使多台微服务同时进行任务调度,且彼此协同的情况下,才能解决此类问题。这时需要Quartz分布式任务调度解决多个任务调度间彼此协同、相互管理等问题。若有文件上传、下载等相关需求,需要使用微服务的文件上传管理。单节点文件上传可能存在磁盘空间不足或不易管理等问题,需要FastDFS分布式文件管理以解决多台文件管理服务器彼此协同、磁盘扩容等问题。
在对整体分布式微服务编程后,需要进行部署,第12章介绍如何部署微服务分布式项目,以及架构方案、设计方式、编程框架、网关等。
本书适合作为高等学校计算机、软件工程等相关专业Java架构课程的教材,也可供对微服务分布式架构感兴趣的人员参考阅读。
本书由张方兴编著。本书即将付梓,还要感谢张鑫编辑持之以恒的支持与帮助。编者微信公众号为北漂程序员的吐槽人生(微信号:beipiaochengxuyuan),读者有任何意见与建议,可随时沟通。
非常感谢阅读本书,学无止境,与君共勉。
由于编者水平有限,加之编写时间仓促,书中难免出现错误与不足之处,欢迎读者批评指正。
编者
2020年1月