这两天了解了一下Spring Cloud,对其中主要的几个核心组件的初步学习做一下总结:
1. Eureka
服务注册中心,负责服务的注册和发现。微服务架构中各个分离的服务需要互相调用,就需要知道所要调用服务的基本信息,服务器在哪,监听的哪个端口,服务名叫什么,这些信息都由部署在各个服务中的Eureka client收集、注册到Eureka server中,Eureka server中会有一个注册表,存储所有的服务注册信息,提供给其他服务使用。
2. Feign
声明式Web service客户端,使用动态代理对目标服务发起访问,解析相应结果。Feign会给@FeignClient注解创建一个动态代理,然后根据@RequestMapping的接口信息构建目的地址,然后发起请求,解析结果。
3. Ribbon
基于HTTP和TCP的客户端负载均衡工具。Ribbon会根据从Eureka中获取到的服务(集群服务)信息结合使用的算法,从一堆机器中选择一台,将这一台服务器的信息给Feign,帮助Feign构建目的地址。
4. Hystrix
容错工具。Hystrix主要是为了解决服务雪崩问题(简单来说就是一个服务不可用导致的其他调用这个服务的相关服务也不可用,从而引发的大面积服务崩塌的现象),提供了三种功能:隔离,熔断和降级。“隔离”是指Hystrix会为所有的服务单独建立线程池,一个服务的线程池挂了之后,其他服务的线程池可以不受影响继续工作;“熔断”是指如果某一服务挂了,可以对这个服务熔断(了解金融知识的,应该对这个词不陌生),设置一个熔断时间,这段时间内访问这个应用直接返回一个结果,避免等待和资源浪费;“降级”要结合熔断来理解,如果服务挂了,光熔断是不行的。人家的请求是要有执行、有结果的,你光给了结果不执行肯定不行。那现在服务又停了,没法执行操作怎么办呢?我们可以“退而求其次”,没办法执行操作我就先给你记录一下,等服务可用之后再根据记录重新补上未完成的操作,这就是所谓的“降级”了。
这些总结完全是我个人非常牵线和片面的理解,欢迎各路大神指出不足或错误的地方,帮助学习。