spring cloud入门学习以及spring cloud技术栈架构图(分布式系统架构图)

一、Spring Cloud是什么?

spring cloud是微服务架构的一整套微服务解决方案的技术栈,是这些技术栈的框架集合,包含了服务治理、注册中心、配置中心、客户端负载均衡、网关、限流熔断、分布式链路追踪、分布式事务等技术栈,这些技术栈提供了微服务架构存在的各种问题的解决方案。

二、为什么用Spring Cloud?

  1. 单体架构的开发流程
             回想我们以前单体架构的项目,所有功能都在一个项目里面,包括前端页面和后端的各个管理模块。部署的时候直接打成一个war包,然后重启tomcat服务器。这样的单体架构优点对小项目来说,开发维护简单。但是对大型项目来说,每个模块紧密耦合,每修改一个小点的功能后重新部署导致整个系统不可用,水平扩展的时候不能针对某一个模块,要整个项目(包含各个模块)一起水平扩展,导致资源浪费。

  2. 微服务架构,以及微服务架构后出现的问题
             针对单体架构的问题,我们微服务架构针对每个模块进行了原子划分,每个模块划分为一个微服务,整个系统可以划分为很多个微服务。使用了微服务架构后系统更容易拓展,但是也增加了开发和维护的难度,出现了很多新的问题。
             
    1)首先,微服务多了之后,我们如何知道这些微服务的健康状态,管理这些微服务
    2)每个微服务之前如何进行远程调用其他微服务,微服务成百上千,IP地址和端口号不能单体架构一样写死调用了
    3)众多微服务,如果进行参数配置,如何快速修改配置文件?逐个配置是很麻烦的
    4)客户端如何访问我们这些众多的微服务,如果写死访问的每个微服务的IP在客户端,那么当微服务的IP和端口变化的时候也要修改客户端,而且微服务众多
    5)微服务之间相互调用,如果有一些微服务出错了或宕机了,可能导致出现雪崩,从而影响整个微服务系统,如何解决
    6)多个微服务之间的服务调用,如何保证分布式事物的数据一致性

注:我下面描述的是SpringCloud、SpringCloud Alibaba针对这些问题的解决方案

  1. 针对这些问题,Spring Cloud的解决方案
    1). 在SpringCloud里面,通过注册中心来管理微服务,每个微服务提供自己的IP和端口向注册中心注册,如果微服务关掉了,会剔除出注册中心,SpringCloud提供了Eureka、Nacos的注册中心来解决微服务治理的问题方案
    2)在微服务中实现远程服务调用,SpringCloud提供了Ribbon、Feign组件来处理的解决方案。这些远程调用向注册中心发现服务,获取相关服务的IP地址、端口的列表,然后客户端负载均衡进行调用其他服务。
    3)针对分布式配置,SpringCloud提供了Spring Cloud Config的解决方案以及使用Nacos配置中心的方案,管理每个微服务的配置
    4)外网客户端访问,都经过网关,然后网关也会从注册中心发现要访问的服务的IP列表,通过网关转发这些请求到相关内部的服务,SpringCloud提供的解决方案是Spring Cloud Gateway
    5)SpringCloud提供的Hystrix进行熔断保护以及SpringCloudAlibaba提供了Sentinel的微服务容错的解决方案
    6)SpringCloudAlibaba提供了Seata组件来保证分布式事务一致性

三、Spring Cloud技术架构图(分布式系统架构)

springcloud针对上面的问题,提供了一站式的解决方案,集成了这些方案后的系统架构是怎么样的,根据我目前遇到过的分布式系统架构,画一张大概的架构图,如下:
spring cloud入门学习以及spring cloud技术栈架构图(分布式系统架构图)_第1张图片

四、Spring Cloud的入门学习

根据自己的学习,记录了一些入门的笔记、学习文章

项目架构:springboot(2.1.7)+springcloud(Greenwich.SR2)+spring-cloud-alibaba(2.1.1)

springboot与springcloud、spring cloud alibaba对应的兼容版本如下:

Spring Boot Spring Cloud Spring Cloud Alibaba (孵化前) Spring Cloud Alibaba(孵化后)
2.1.x Greenwich 0.9.x 2.1x
2.0.x Finchley 0.2.x 2.0x
1.5.x Edgware 0.1.x 1.5x
1.5.x Dalston 0.1.x 1.5x

spring cloud使用nacos作为注册中心
spring cloud基于Ribbon和Feign组件实现服务调用
spring cloud使用dubbo实现服务调用
spring cloud gateway网关的简单使用
spring cloud nacos作为配置中心的使用
spring cloud alibab sentinel的概念和简单使用
微服务架构的分布式事务的解决方案总结
spring cloud alibaba seata的使用,解决分布式事务问题
spring boot使用kafka消息队列
kafka如何保障消息可靠性

你可能感兴趣的:(spring,cloud,java,spring,cloud,alibaba)