01.Spring Cloud基本介绍

官方文档 https://spring.io/projects/spring-cloud

提出问题,引出微服务

  • 先思考一个问题,没有微服务,是不是程序员就不能开发大型项目?
    是可以的,对大型项目进行模块划分,对各个模块进行实现,模块之间 更多的是以API调用完成,耦合度较高,不利于扩展和维护
  • 再思考,标准的微服务解决方案(springcloud和cloud alibaba)出现原因和价值是什么?
  • 微服务可以根据业务不同,将一个大项目,分解成不同的服务(微服务,比如搜索服务/网关服务/配置服务/存储服务/发现服务等等)
  • 各个服务通过分布式方式进行工作,从而可以高效,快速,稳定的完成复杂的功能
  • 也可以理财成将原来大项目的某些模块->抽出形成微服务->配合分布式工作方式->从而高效,快速,稳定的完成复杂业务

系统架构的演变构成

单机架构

springcloudalibava官网 springcloud ali_spring

动静分离架构:静态缓存+文件存储

springcloudalibava官网 springcloud ali_spring_02

分布式架构:业务拆分+负载均衡

springcloudalibava官网 springcloud ali_spring cloud_03

微服务架构:使用Spring Cloud

springcloudalibava官网 springcloud ali_spring cloud_04

“微服务”一词源于Martin Fowler的名为Microservice的博文,简单的说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分为多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的REstful API进行通信协作。

被拆分的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储,业务开发,自动化测试案例以及独立部署机制,由于有轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。

Spring Cloud 核心组件图

springcloudalibava官网 springcloud ali_spring cloud_05


springcloudalibava官网 springcloud ali_java_06


springcloudalibava官网 springcloud ali_spring cloud_07

Spring Cloud 微服务 解读

  1. Spring Cloud是微服务的落地
  2. Spring Cloud 提醒了微服务的弹性设计
  3. 微服务的工作方式一般是基于分布式的
  4. Spring Cloud仍然是Spring家族的一员,可以解决微服务的分布式工作方式带来的各种问题
  5. Spring Cloud提供很多组件,比如服务发现,负载均衡,链路中断,分布式追踪和监控,甚至提供API Gateway功能

Spring Cloud 组件选型

服务注册中心

  • Erueka
  • Nacos
  • Zookeeper
  • Consul

服务负载均衡

  • Ribbon
  • LoadBalancer

服务熔断降级

  • Hystrix
  • Sentinel

服务调用

  • Feign
  • Oepn Feign

服务网关

  • Zuul
  • GateWay

服务配置

  • Config
  • Nacos

服务总线

  • Bus
  • Nacos

分布式微服务技术选型建议

Spring Cloud Alibaba组件为主

Spring Cloud为辅,比如(SpringCloud-Ribbon:负载均衡,SpringCloud-Oepn Feign:调用远程服务,SpringCloud-Gateway:API网关,SpringCloud-Sleuth:调用链监控 等)

Spring boot和spring Cloud版本对应关系

springcloudalibava官网 springcloud ali_spring_08