Spring Cloud微服务云应用教程

  本套课程是基于spring cloud最Finchely版微服务基础框架整合教程,主要以架构思想为核心,兼顾详细代码演示。

  本使用Spring Cloud能够让我们的应用分布式部署,过去传统上,我们的应用总是将前端和后端打包成一个war包部署到Tomcat等服务器上,这种情况下,服务器这个概念成了我们应用的一个边界容器,每台服务器一般部署一个应用系统,这是一种传统的SOA架构,在这种情况下,WAR包、Tomcat服务器成了我们的服务的容器,而我们在编程时主要是面向一个个服务进行设计编码,怎么到了运行阶段反而多出了服务器概念?如何破?有了服务器概念,我们的服务的地位就下降了,而在微服务架构中,微服务才是第一等公民,服务器等概念应该隐藏在服务后面。

  下面一个问题是如何破解一个WAR包?WAR包中一般有SpringMVC前端和我们服务后端代码,这两端代码是直接通过服务接口调用的:

前端SpringMVC + 后端服务 = war包

  很显然,这是违背以服务为第一等公民和核心的宗旨的,前端耦合到后端服务,后端服务可能为前端定制一套代码,再通过暴露REST/web服务暴露另外一种接口服务给其他系统调用,我们把前端调用和其他系统调用分开处理,有了两套服务代码,无疑这加重了后端开发负担,那么只有将前端从后端分离出去,后端独立以后才能使用一套服务代码为不同的客户端服务。

前端(SpringMVC、ReactJS/VueJS或其他系统) ---->后端服务 = 分离部署

  通过这种分离,我们的微服务才能被打包进Docker容器,被K8s这样的容器管理平台调度,哪里不够打哪里,哪里不够用直接调用扩展容器数量即可,做到性能调整精确制导,当我们的后端微服务加上Docker+K8s的底座以后,真正的云平台就诞生了。

  SpringBoot框架配合SpringCloud帮助我们实现了这样目标,SpringBoot主要是实现了前后端分离,而SpringCloud则为后端服务建立了一套分布式系统架构,两者结合一起,使得开发人员不但开发业务,而且也介入云的基础底层设施,干涉到了业务系统运营管理,这就是DevOps的来历,Dev是业务开发,而Ops是运营,云应用包括这两部分概念,过去我们以服务器为第一公民的SOA架构中,服务器以下的基本属于运营部门管理,而业务人员只管开发即可,现在这种分离思维被打破了,这也是云计算平台化PaaS普及以后给我们带来的改变。

  当我们使用SpringBoot和Rest+JSON方式分离了前后端,那么后端可以组成一种服务网格式,前后端之间可以引入API网关等代理机制,通过代理这种门户模式屏蔽了后端服务对前端的暴露,同时也能对前后端路由以及运营情况进行监控。

Spring Cloud结构

  Spring Cloud是主要涉及分布式系统的开发,分布式系统主要有哪些概念呢?负载均衡、服务注册是必不可少的。

  负载均衡这个我们应该熟悉,在服务器为王时代也是需要负载均衡的,几台机器可以平均处理大量请求。

  服务注册则是延续SOA概念,因为在SOA过去是使用RPC方式进行服务调用,服务之间接口耦合,也就是调用者需要被调用者的代码,现在都采取 REST/JSON以后,因为JSON是一种字符串,调用双方就完全解耦了,因为对象的传输需要序列化和反序列化,这些当然不需要我们编码完成,因此双方实际是一种值数据额耦合,虽然降低一些性能,但是松耦合更高。

  因此,整个后端微服务架构其实分四个部分:

1. API网关,用于前后端交互,如果没有前端就无法调用后端

2. 服务注册与发现,如果没有服务之间就无法调用。

3. 服务之间在分布式环境中找到对方以后,如果对方很忙怎么办?负载均衡策略需要引入,同时需要运营监控。

根据这三个主要部分,我们看看下面Spring Cloud微服务图:

  我们发现Spring Cloud中主要有四个部分(中文红字),其中微服务容器里面提供了负载均衡Ribbon、REST客户端Feign和断路器Hystrix三个部分,也就是说,在我们每次编写微服务业务代码时,这三个基础设施的配置我们也需要完成的,表面上好像带来工作量,实际上这就是DevOps精华,能让我们细粒度控制我们业务的运行行为,当然也可以统一配置和修改,这就少不了配置服务器。

   通过以上简单介绍,我们已经大概了解我们需要学习和掌握的基本单元:

•1. 微服务容器: 业务服务、负载均衡Ribbon、REST客户端Feign和断路器Hystrix
•2. 服务注册发现:Eureka
•3. 运营监控:能够对流量和断路器运营进行可视化监控
•4. API网关:单一入口点来管理所有API调用,通过规则将请求路由到微服务,Zuul/Spring Cloud Gateway
•5. 配置服务: 相当于源码编程阶段的网关,统一配置运行时的各种参数

引用网上的一幅图,可以完整了解一下这些部件如何运作:

很显然,SpringCloud的核心是服务注册发现和调用,把这个核心学会了,基本掌握其原理,这也是业务程序员每天编码需要经常碰到的问题,让我们从这个核心开始学习:SpringCloud中有三个独立服务器性质的服务,分别是:注册服务器、API网关服务器和配置服务器,其他都是业务服务。这是切入Springcloud的基本概念区分。

第一篇: SpringCloud服务发现注册Eureka +Ribbon + Feign教程

第二篇:使用Netflix Hystrix的Spring Cloud断路器

第三篇:使用Jenkins、Artifactory和Spring Cloud Contract持续集成测试REST/JSON

第四篇:Spring Cloud Zuul作为API网关实现请求路由转发教程

第五篇:使用Spring Cloud Zuul实现过滤器或拦截器功能案例

第六篇:使用Spring Cloud Config基于本地文件实现微服务配置管理

第七篇:Spring Cloud Config使用Oracle数据库作为后端配置存储

第八篇:Spring Cloud Config Server和Spring Cloud Bus以及Kafka和数据库动态刷新配置

以上教程源码github

 

服务注册与发现

Eureka心跳健康检查机制

Eurake的自我保护机制

服务通讯

Spring Boot, Spring Cloud Stream 和 Kafka案例教程

使用Spring Cloud Ribbon重试请求

使用Spring Cloud Sleuth跟踪微服务

综合实战

Spring Cloud微服务abixen实战案例简介

SpringBoot过滤器

Spring Cloud Stream实战

相关文章

SpringCloud微服务架构介绍

使用Spring Cloud和Reactor在微服务中实现Event Sourcing

Netflix架构

使用Activiti和Spring集成完成BPEL和BPM

Istio是一个服务网格

其他专题

SpringCloud更多专题

Spring Boot专题

Spring专题

Spring Batch批处理专题

Spring各种教程源码项目下载

分布式计算专题

云计算专题