文章目录
- 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将微服务的所有节点连接到一起,通过消息总线实现自动配置刷新。