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图:

第一篇: 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

DDD+SpringBoot/SpringCloud微服务视频教程免费下载

1_DDD 聚合设计

2_订单聚合 Spring-data-jdbc 实现

3_订单状态模式实现业务规则

4_springcloud 注册服务器

5_Spring 微服务调用

6_Kafka 异步调用

7_docker_工作流

服务注册与发现

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是一个服务网格

Spring Cloud Stream的函数式和响应式Reactive编程特点 - spring.io

 

其他专题

#SpringCloud #Spring Boot #Spring Batch

#分布式计算 #云计算 #服务网格  #微服务