Spring Cloud
是Spring框架家族的一员,Spring框架的特点就是将目前市面上一些比较主流的框架融入到了自己的框架体系中,所以它不是一个具体的框架技术实现,而是一个框架集合。
目前微服务项目比较主流的框架或技术实现是基于spring cloud来做的。
spring cloud框架简介
Spring Cloud是基于Srpng Boot架构发展构建的,集成了spring框架的一些特点,将一些比较流行的组件加入到自己的架构中,如:服务发现、服务降级-熔断器、服务路由-网关、配置中心等。
常用组件
Eureka —— 服务治理-服务注册中心
实现服务治理的功能,对微服务进行统一的管理,各个微服务实例化后(启动之后)需要到eureka服务中心去注册服务地址(ip、port、服务名),告诉服中心自己现在可以运行,注册中心对已经启动的微服务地址进行集中管理,有客户端发送请求时直接在服务治理中心拉取对应的服务访问地址,通过负载均衡算法将用户请求分配到对应的服务调用上。
eureka是通过心跳机制实时的监控各个微服务的状态,默认每隔30s向微服务发送一个心跳数据包,微服务需要及时返回心跳数据,如果超过90s没有发送心跳数据,eureka就认为该微服务已经停止运行,就将服务地址从注册中心剔除。
zuul - gateway —— 网关
zuul目前已停止更新,后续使用gateway来代替。
作用:是微服务访问的唯一入口,用来对用户的请求进行过滤处理,本身还有智能路由的作用。
feign —— 服务调用
用来方便实现各个微服务之间的相互调用的,因为如果不通过feign进行微服务调用,就需要手动进行服务的调用,请求路径、参数、端口等都是类似的,手动调用效率低,为了提高效率,feign提供了一个HTTP模板进行统一调用,只需要告诉需要调用的参数等信息就可以自动的进行接口拼接来实现相互调用。
ribbon —— 负载均衡
是一套算法机制,将用户的请求合理的分配到对应的服务上。
常见的算法机制有:轮询机制、随机机制
hystrix —— 熔断器
用来处理雪崩问题——当某一个请求出现异常无法处理,由于请求的阻塞,最终导致所有服务都无法使用。处理方法:
- 线程隔离:发送请求时不是直接通过用户发送请求,可能从线程池中使用一个闲置的线程来发送请求,结果是为了加快对请求失败的响应处理。
- 服务降级:当一个请求失败后,在一段时间内自动将该请求设置为失败的请求,快速的返回失败的响应。
config —— 配置中心
将所有的微服务的配置文件放到配置中心进行集中管理,直接针对配置中心的各个服务的配置文件进行修改即可。配置中心文件一般保存在本地或远程仓库git中。
微服务的各个服务环境都是独立部署的,每个服务都有自己的配置文件,在部署项目时需要进行配置,配置中心可以避免手动一个个修改每个服务的配置文件。