SpringCloud 基础

 

SpringCloud是一个微服务框架,用于搭建分布式应用。

SpringCloud是在SpringBoot的基础上,集成了多种技术,是一系列技术的集合,为微服务提供了一站式解决方案。

因为是建立在SpringBoot的基础上,所以具有SpringBoot的所有特点。

 

 

SpringCloud的特点:

  • 约定优于配置
  • 开箱即用
  • 部署环境多样,可以部署到PC Server、Docker、云端。
  • 组件轻量级,功能全面
  • 选型中立,并不是一定要用自带的组件,因为有spring强大的整合能力,也可以使用其它组件,比如服务发现不一定要用自带的Eureka,也可以用Zookeeper,但SpringCloud对Eureka的支持最好。 

 

 

SpringCloud的技术栈 | 组件 | 全家桶:

  • Eureka  服务发现
  • Ribbon  负载均衡器,分发负载
  • Feign  声明式服务调用
  • Hystrix  断路器,容错保护、熔断,保护自己、被调者
  • Zuul   网关(API Gateway),路由转发+过滤器
  • Config  配置中心,集中管理配置
  • Bus  总线
  • Sleuth+Zipkin  分布式链路追踪

Eureka、Ribbon、Feign、Hystrix都是netflix的开源项目,SpringCloud都将它们集成进来了。

SpringCloud的组件很多,以上只是常用的。

 

 

网关:

比如请求时/api/product/...就转发给产品服务处理,如果请求时/api/order/....就转发给订单服务处理,如果请求时/api/user...就转发给用户服务处理,这就是路由转发。

如果多个服务都要做相同的请求过滤,比如验证权限、是否登录,不用写在多个服务中,抽出来在网关过滤请求。

 

链路追踪:

一次业务处理中,往往要调用多个服务,比如订单服务->商品服务->用户服务->积分服务,这就形成了一个链路,追踪链路分析调用情况、每个服务调用花费的时间、性能,方便后续优化。

 

 

SpringCloud的版本

其它框架的版本都是1.x,2.x这样命名走的,SpringCloud的版本是Axx、Bxx、Cxx这样命名走的。

ga是稳定版;snapshot是正在开发的版本,不稳定。

  

 


 

 

 

 

微服务使用服务治理组件:

 

服务的各节点将节点信息(提供的服务、ip+port)注册到Eureka上,并通过心跳机制(ping,发送心跳包)维护服务注册表。

所谓心跳,是指节点每几十秒就向服务发现组件发送一段消息,像心跳一样稳定、有规律,表示该节点还在工作(活着);如果一个节点连续几次都没发送心跳,心不跳了,说明这个节点挂了,Eureka会自动删除该节点的信息。

 

服务消费者查询Eureka来获取(发现)该服务的所有提供者的信息。

 

 


 

 

Eureka只是登记好服务节点的信息,并不知道要调用哪个节点来处理,还需要使用Ribbon来做负载均衡

比如服务A的a1节点要调用服务C:

(1)a1节点向Ribbon发送负载均衡请求

(2)Ribbon查询Eureka,拿到提供服务C的所有节点的信息表,根据指定的算法(比如轮询、加权轮询、随机等)来确定要使用c1节点

(3)Ribbon将c1节点的信息(ip)返回给a1节点

(4)a1节点根据ip向c1节点发起请求,调用服务C

 

 


 

 

feign

feign用于向服务提供者传递大量参数,自带Ribbon负载均衡的功能。

 

 


 

 

微服务容错

1、雪崩效应

服务往往存在嵌套调用,比如服务A调用服务B,服务B要调用服务C:

服务A -> 服务B -> 服务C

如果C出现什么问题,B一直阻塞着等C搞好;A一直阻塞着等B搞好,即雪崩效应。

请求越积越多,负载越来越大,,最终导致服务A、B、C都不可用。

 

 

2、容错

容错:当依赖出现问题时,对系统的影响程度,影响大——容错低,影响小——容错高。

 

提升微服务容错有3种方式:

  • 增加节点数量

这是通用的。

 

  • 为请求设置超时

多少秒内没有完成,就直接返回出错提示,这个请求就算处理完了,开始处理下一个请求。

 

  • 设置断路器

对某个服务的请求,一段时间内,失败个数达到指定值或者失败率达到指定值,就会熔断链路,返回我们自定义的数据(比如错误提示、空值等)。

熔断只是半熔断,断路器是半开状态,会放行一小部分对此服务的请求进行检测,如果请求成功率达到指定值,就认为此服务已被修复,会重新打开链路。

 

posted @ 2020-02-11 13:00  chy_18883701161  阅读(214)  评论(0编辑  收藏  举报