微服务
Spring Cloud 微服务主要分为:
- Eureka服务注册与发现
- Zuul网关
- Feign负载均衡
- Hystrix断路器
- Ribbon负载均衡
- Spring Cloud Config分布式配置中心
Ribbon负载均衡
是什么?
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项。简单的说,就是在配置文件中列出Load Balance(LB,简单的说就是将用户的请求平摊地分配到多个服务上,从而达到系统的高可用)后所有的机器,Ribbon会自动地帮助你基于某种规则(简单轮询,随机链接等等)去连接这些机器。
能干什么?
负载均衡(LB)。
Github地址:https://github.com/Netflix/ribbon/wiki/Getting-Started
Feign负载均衡
是什么?
Feign是一个声明式Web服务客户端。使用Feign能让编写Web服务客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解。Spring Cloud对Feign进行了封装,使其支持Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。
能干什么?
Feign旨在使编写Java Http客户端变得简单。
在实际开发中,往往一个接口会被多处调用,所以通常会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。Feign在此基础上做了进一步封装,由它来帮助我们定义和依赖服务接口的定义。在Feign的实现下,我们只需要创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon 时,自动封装服务调用客户端的开发量。
Github地址:https://github.com/OpenFeign/feign
Hystrix断路器
是什么?
Hystrix断路器是一个用于处理分布式的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务的失败,避免级联故障,以提高分布式系统的弹性。
“断路器”: 本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似于熔断保险丝),向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至崩掉。
能干什么?
服务降级
服务熔断
服务限流
。。。
GitHub地址:https://github.com/Netflix/Hystrix
Zuul路由网关
是什么?
zuul包含了对请求的路由和过滤两个最主要的功能:
其中,路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。
Zuul和Eureka整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后访问微服务都是通过Zuul跳转后获得。
GitHub地址:https://github.com/Netflix/zuul
Spring Cloud Config 分布式配置中心
是什么?
Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微应用的所有环境提供了一个中心化的外部配置。
能干什么?
集中管理配置文件。
不同环境不同配置,动态化的配置更新。
运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取自己的信息。
当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置。
将配置信息以Rest接口的形式暴露。
GitHub地址:https://github.com/spring-cloud/spring-cloud-config