一、springCloud的核心组建
- Eureka,注册中心
- Feign,服务调用
- Ribbon,负载均衡
- Hystrix,隔离、熔断以及降级
- Zuul,网关路由
二、Spring Cloud核心组件:Eureka
- 以订单服务来说明,订单服务需要1.更新订单数据库为已支付;2.扣减库存商品数;3.通知仓储发货;4.调用积分服务
- Eureka是CS架构,EurekaClient负责将服务的信息注册到EurekaServer上;EurekaServer为注册中心,维护注册表,保存各个服务的ip和端口以及集成其他的配置信息
三、Spring Cloud核心组件:Feign
Feign本质就是动态代理的实现,通过它完成服务建立连接、构造请求、发起靕求、获取响应、解析响应等一些麻烦的操作,大大减少开发成本
订单服务调用仓库服务为例:
四、Spring Cloud核心组件:Ribbon
每个服务可以有单体和集群之分,集群可以有多个节点,Feign请求仓库服务集群,如何分配节点,需要Ribbon来负载均衡,Ribbon位于在调用端,集成在NacosClient或者EurekaClient。
五、Spring Cloud核心组件:Hystrix
- 业务流程需要调用多个甚至上百个服务,由于服务的不可用,出现等待时间过长或报错等原因,导致业务流程挂掉或等待,造成业务的不可用或长时间等待,在高并发时容易出现资源消耗峰值,出现雪崩致使整个系统挂掉 ;
- Hystrix支持隔离、熔断以及降级来保证业务流程的可用性
- 隔离基于线程池,会给每个服务分配一个线程池
- 熔断是某个服务出现不可用(满足不可用策略)时,服务直接返回
- 降级是服务出现熔断时返回托底数据或者对服务持久化,以后再手动恢复
五、Spring Cloud核心组件:Zuul
zuul使用场景:作为服务网关,前端请求后端,请求负载均衡、熔断、降级,权限校验等,前端只要使用固定的地址。
zuul位置:服务端,对于不同的策略指定相应的节点。