文章目录

  • 1、微服务
  • 2、为什么要用微服务?
  • 2.1 优势:
  • 2.2 缺点:
  • 3、SpringCloud微服务工具集
  • 4、SpringCloud工具集核心组件
  • 4.1 服务注册中心
  • 4.2 服务间通信问题
  • 4.3 服务熔断器
  • 4.4 服务网关组件
  • 4.5 统一配置中心

至此,Spring Cloud的大多数组件都已经学习过,Spring Cloud Alibaba的组件我想新建个专栏讲解。现在大致总结下这些微服务组件。

1、微服务

特点:基于单体应用基于业务进行拆分,拆分出来每一个服务独立项目,独立项目独立部署,运行在自己的计算机进程里面,针对于拆分出来的微服务都是基于分布式和管理。

2、为什么要用微服务?

2.1 优势:

  • 拆分每个服务各司其职 解耦合
  • 每个服务高度自治(可以指定专门的管理团队)
  • 不会因为一个问题导致其他服务不可用
  • 新员工可以只面对单一服务,不用面对整体应用的代码复杂度
  • 方便在项目增加新的业务功能

2.2 缺点:

  • 开发人员面对微服务部署的复杂性
  • 开发人员面对分布式系统复杂性(服务间通信、请求负载均衡、熔断、降级、高可用。。。)

3、SpringCloud微服务工具集

作用:提供了一站式微服务工具集(组件),帮助我们解决了分布式系统中各种问题(服务注册、服务间通信等等),让开发人员更专注于自己业务开发。

4、SpringCloud工具集核心组件

4.1 服务注册中心

用来管理微服务架构中每一个服务健康状态以及服务元数据存储

Eureka(Eureka Server、Eureka Client) Netflix的组件
Consul(基于GO语言开发)
zookeeper(基于java语言开发)
nacos(alibaba的组件)

4.2 服务间通信问题

两种通信方式

  • RestTemplate 如何解决请求负载均衡问题:Ribbon(Netflix)实现请求负载均衡。
  • OpenFeign(SpringCloud官方组件):Feign(netflix组件) 伪http客户端,实现请求负载均衡,解决restTemplate路劲写死的问题,灵活

4.3 服务熔断器

用来解决服务雪崩

需要的组件:Hystrix(netflix) Hystrix DashBoard(已经进入维护模式)
服务雪崩问题:当调用链路中某一个服务不可用,并导致上游服务不可用,并将这种不可用逐渐放大最终导致整个系统服务不可用,这种称之为服务雪崩。
服务熔断:当服务触发异常,或者执行业务逻辑超时等待出发服务熔断,一旦触发服务熔断之后,当前服务不可用,(自动触发)。
服务降级:站在系统整体负荷角度进行系统考虑,一般都是人为干预,服务熔断属于服务降级的一种。

4.4 服务网关组件

用来统一服务总入口(路由转发+过滤)

相关的组件:

  • zuul1.x zuul2.x
  • springcloud gateway(路由转发 请求负载均衡) 断言predicate 过滤filters

4.5 统一配置中心

用来将微服务的配置文件进行远端仓库统一管理。

config组件:configserver(用来获取远端仓库配置,并存入本地仓库)、configclient(根据configserver读取自身配置)
bus组件:消息总线 作用:用来通过MQ将微服务的所有节点连接到一起,通过消息总线实现自动配置刷新。