前言

软件系统的架构经过一步步演进和发展,经历了单体架构、分布式应用架构、微服务架构、服务网格架构、Serverless架构……其中,单体架构经历了简单单体时期(例如经典的JSP)、MVC 分层时期(各种MVC框架受到追捧)、前后端分离时期。

从整体上看,这一次次的演进是软件垂直和水平方向上的拆分,屏蔽了底层与重新定位。在演进过程中,软件开发人员的关注点越来越远离底层的部分,更多地关注上层简单的架构,技术团队的职能划分也越来越清晰。这使得软件的研发过程更高效,质量更可控,工期也更易评估。从这个角度来看,作为技术人员,我们都需要用历史的眼光去看技术的发展,拥抱变化。

微服务架构不是银弹,就像最近不断被提起的中台不能解决所有企业的问题。我们有时会存在某种认知的误区,对成功案例方法本身的关注甚于对问题本身的关注。企业的健康发展在于发现、分析和解决自身的问题,而不是盲目模仿成功的企业。

基于以上的警示,是否要在团队内部进行微服务实践?微服务落地该如何选型呢?作为一个技术人员,选择需要慎重。

希望Spring Cloud能够帮你解决当前的问题,而不只是做一个简单的门户或者网站,因为没有必要为一两个简单的管理系统来维护Spring Cloud 的一整套组件。在为新系统和遗留系统选择使用Spring Cloud前,我们需要分析当前面临的问题。

 

本文深入浅出地讲解了Spring Cloud生态组件,包括服务注册发现组件Eureka、配置中心Spring Cloud Config、容错组件Hystrix、接入赋能组件Zuul、路由负载均衡组件(高可用性和稳定性)Ribbon等,使读者能够熟悉Spring Cloud各组件的作用和使用方法。

此外,本文还对一些技术点举一反三,例如在讲解RestTemplate作为网络请求时,提到其他Spring Template,包括JdbcTemplate和JmsTemplate等。本文实用性强,代码示例全面,能够使读者在技术学习方法与认知上有一定的转变和提升。

我相信无论是正在学习Spring Cloud的朋友,还是正在推进或选型Spring Cloud落地的团队,都能从本文中有所收获。

本文究竟有哪些特点驱动大家来学习呢?

  • 基于Greenwich 版本,全面讲解Spring Cloud原生组件。
  • 深入原理,辅以图解,生动串联整个Spring Cloud生态。
  • 总结提升,利用综合案例展现构建微服务系统的全过程。

作为Java语言的落地微服务框架,Spring Cloud已经在各大企业普遍应用,各大云厂商也支持Spring Cloud微服务框架的云产品。可以说,Spring Cloud微服务框架已经应用到了各大行业之中,并成为Java开发者的必备技能之一,熟练掌握Spring Cloud是面试者的加分项。

阿里巴巴推出的Nacos和Sentinel等组件已经加入Spring Cloud孵化器项目,未来极有可能替代Netflixoss,因此Spring Cloud是一个极具生命力的微服务框架。

希望本文能够更好的帮助大家学习springcloud,并且能够灵活运用它,希望大家能够喜欢!!!

目录

 

主要内容

第1章介绍了什么是微服务、为什么需要微服务、微服务的优缺点和面临的挑战,并且将单体架构的系统和微服务架构的系统进行了比较。

 

第2章主要介绍微服务应该具备的功能以及Spring Cloud的基本组件,最后介绍了SpringCloud与Dubbo、Kubernetes之间的差异。Spring Cloud作为Java语言的微服务框架,它依赖于Spring Boot,有快速开发、持续交付和容易部署等特点。Spring Cloud的组件非常多,涉及微服务的方方面面,并在开源社区Spring和Netflix、Pivotal两大公司的推动下越来越完善。本章主要介绍Spring Cloud,将从以下方面来讲解。

  • 微服务应该具备的功能。
  • Spring Cloud介绍。
  • Dubbo介绍。
  • Kubernetes介绍。
  • Spring Cloud 与Dubbo比较。
  • Spring Cloud 与 Kubernetes比较。

 

第3章介绍了开发环境的构建,包括JDK的安装、IDEA和Maven的使用等;

 

第4章介绍了Spring Boot的基本使用方法,包括Spring Boot的特点、用IDEA创建一个Spring Boot项目、Spring Boot配置文件详情、Spring Boot的Actuator模块,以及Spring Boot集成JPA、Redis和Swagger2等。

 

第5章服务注册和发现Eureka,“Eureka”来源于古希腊词汇,意为“发现了”。在软件领域,Eureka是Netflix在线影片公司开源的一个服务注册与发现的组件,和其他Netflix公司的服务组件(例如负载均衡、熔断器、网关等)一起,被Spring Cloud社区整合为Spring Cloud Netflix模块。

本章将从以下4个方面来讲解服务注册与发现模块Eureka。

  • Eureka简介。
  • 编写一个Eureka注册和发现的例子。
  • 深入理解 Eureka。
  • 编写高可用的Eureka Server。

 

第6章负载均衡Ribbon,上一章讲述了服务注册和发现组件Eureka,同时追踪源码深入讲解了Eureka的机制,最后通过案例讲解了如何构建高可用的Eureka Server。本章讲解如何使用RestTemplate和Ribbon相结合作为服务消费者去消费服务,同时从源码的角度来深入讲解Ribbon。

 

第7章声明式调用Feign,在上一章中,讲解了如何使用RestTemplate来消费服务,如何结合Ribbon在消费服务时做负载均衡。本章将全面讲解Feign,包括如何使用Feign来远程调度其他服务、FeignClient的各项详细配置,并从源码的角度深入讲解Feign。

Feign受Retrofit、JAXRS-2.0和WebSocket的影响,采用了声明式API接口的风格,将Java Http客户端绑定到它的内部。Feign的首要目标是将Java Http客户端的书写过程变得简单。Feign的源码地址: https://github.com/OpenFeign/feign。

 

第8章熔断器Hystrix,前两章讲述了如何使用RestTemplate和Feign去消费服务,并详细地讲述了Ribbon做负载均衡的原理和Feign 的工作原理。本章将讲述如何在用RestTemplate和Feign消费服务时使用熔断器Hystrix,将从以下7个方面进行讲解。

  • 什么是Hystrix。
  • Hystrix解决了什么问题。
  • Hystrix的工作原理。
  • 如何在RestTemplate和Ribbon作为服务消费者时使用Hystrix。
  • 如何在Feign作为服务消费者时使用Hystrix。
  • 如何使用Hystrix Dashboard监控熔断器的状况。
  • 如何使用Turbine聚合多个Hystrix Dashboard。

 

第9章路由网关Spring Cloud Zuul,前文已经讲解了Netflix的一系列组件,包括服务发现和注册组件Eureka、负载均衡组件Ribbon、声明式调用组件Feign和熔断器组件Hystrix。本章讲解Netflix构建微服务的另一个组件——智能路由网关组件Zuul。Zuul作为微服务系统的网关组件,用于构建边界服务(EdgeService ),致力于动态路由、过滤、监控、弹性伸缩和安全。本章将从以下3个方面来讲述Zuul。

  • 为什么需要Zuul。
  • Zuul 的工作原理。
  • Zuul的案例实战。

 

第10章服务网关,

服务网关(Spring Cloud Gateway)是Spring Cloud官方推出的第二代网关框架,用于替代第一代网关Netflix Zuul,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关的基本功能。服务网关建立在Spring Framework 5 之上,使用非阻塞模式,并且支持长连接Websocket。Netflix Zuul是基于Servlet的,采用HttpClient进行请求转发,使用阻塞模式。在性能上,服务网关优于Netflix Zuul,并且服务网关几乎实现了Netflix Zuul的全部功能。在使用和功能上,用服务网关替换掉Netflix Zuul的成本上是非常低的,几乎可以实现无缝切换。

服务网关作为整个分布式系统的流量入口,有着举足轻重的作用,列举如下。

  • 协议转换,路由转发。
  • 流量聚合,对流量进行监控,日志输出。
  • 作为整个系统的前端工程,对流量进行控制,有限流的作用。
  • 作为系统的前端边界,外部流量只能通过网关才能访问系统。
  • 可以在网关层做权限判断。
  • 可以在网关层做缓存。

 

第11章介绍了服务注册中心Consul,详细讲解了如何使用Consul进行服务注册和发现,以及如何使用Consul作为分布式配置中心。

 

第12章配置中心Spring Cloud Config,前面的章节详细讲解了Spring Cloud Netflix组件,包括服务注册和发现组件Eureka、负载均衡组件Ribbon,声明式调用Feign、熔断器组件Hystrix和路由网关组件Zuul。本章讲述SpringCloud的另—组件——分布式配置中心Spring Cloud Config。

本章以案例的形式来全面讲解Spring Cloud Config 的知识,分为以下4个方面。

  • Config Server从本地读取配置文件。
  • Config Server从远程Git仓库读取配置文件。
  • 搭建高可用Config Server集群。
  • 使用Spring Cloud Bus刷新配置。

 

第13章介绍了链路追踪组件Spring Cloud Sleuth,包括微服务系统为什么需要链路追踪组件,并以案例的形式详细介绍了如何在Spring Cloud微服务系统中使用链路追踪,以及如何传输、存储和展示链路数据。

 

第14章以案例的形式介绍了Spring Boot Admin,包括Spring Boot Admin在微服务系统中的应用、在Spring Boot Admin中集成安全组件。Spring Boot Admin用于管理和监控一个或者多个Spring Boot程序。Spring Boot Admin分为Server(服务端)和Client(客户端),客户端可以通过向服务端注册,也可以结合Spring Cloud的服务注册组件(Eureka和Consul)进行注册。Spring Boot Admin提供了用React编写的UI界面,用于管理和监控。其中,监控内容包括Spring Boot的监控组件Actuator的各个Http节点,也支持更高级的功能,包括Jmx和Loglevel等。

 

第15章详细介绍了如何在Spring Boot应用中使用SpringBoot Security;

 

第16章使用Spring Cloud OAuth2保护微服务系统,上一章全面讲解了Spring Boot Security,本章将从以下4个方面讲述如何在Spring Cloud构建的微服务系统中使用Spring Cloud OAuth2来保护微服务系统。

  • 什么是OAuth2。
  • 如何使用Spring OAuth2。
  • 案例分析。
  • 总结。

 

第17章使用Spring Security OAuth2和JWT保护微服务系统,上一章讲述了如何通过Spring Security OAuth2来保护Spring Cloud架构的微服务系统。上一章的系统有一个缺陷,即每次请求都需要经过Uaa服务去验证当前Token 的合法性,并且需要查询该Token对应的用户的权限。在高并发场景下,会存在性能瓶颈,改善的方法是将Uaa服务集群部署并加上缓存。本章针对上一章的系统的缺陷,采用Spring Security OAuth2和JWT的方式,避免每次请求都需要远程调度Uaa服务。采用Spring Security OAuth2和JWT的方式,Uaa服务只验证一次,返回JWT。返回的JWT包含了用户的所有信息,包括权限信息。

本章主要从以下3个方面来讲解。

  • JWT详解。
  • Spring Security OAuth2和JWT保护微服务系统案例详解。
  • 总结。

 

第18章使用Spring Cloud构建微服务综合案例,本章利用一个使用Spring Cloud 构建微服务的综合案例对前面所有章节的内容进行整合和总结,这个案例也是我在实际工作中对Spring Cloud构建微服务内容的一个提炼。希望通过本章内容,为读者提供一整套使用Spring Cloud构建微服务的解决方案。

 

这份【深入理解Spring Cloud与微服务构建第2版】共有315页,需要完整版的朋友,可以转发此文关注小编👇👇👇

大牛对本文的高度评价

 

本文从目录、内容和大牛对本文评价三部分内容,来对springcloud进行深入剖析,让大家完全掌握springcloud这门技术,希望大家能够喜欢!!

大家一定要加油努力学习了,今年这个疫情耽误了好多时间,希望大家能够静下心来学,利用业余时间补回来,每天花两个小时学习,不断充实自己!!

成功在于积累,大厂正在向你招手!

其实,进大厂也不是有多难,只要靠自己努力就够了,但是你得走对方向,有人引导,不断积累自己的项目经验和管理能力,让自己变得更加有价值!!

加油!