什么是微服务?
微服务是一种架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
微服务与Spring Cloud有什么关系?
通过Spring Cloud,我们能够快速地实现微服务架构。这就是两者的关系。
Spring Cloud各个组件的简介:
Eureka
Eureka:负责各个服务的注册与发现,Eureka包含两个组件,Eureka Server和Eureka Client。
1、每个客户端启动的时候,会自动的将自己的服务名称,ip地址,端口号等信息注册到注册中心。
2、服务端是一个注册中心,里面有一个注册表,保存了各服务所在的机器和端口号,供所有的客户端查询。
Ribbon
Ribbon是一个负载均衡工具,在每次请求的时候会选择一台机器,均匀的把请求分发到各台机器上。
Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。
Feign
Feign是HTTP客户端,它让微服务之间的调用变得更简单了,类似controller调用service。
Hystrix(断路器)
通过hystrix可以解决雪崩效应问题,它提供了熔断、资源隔离、降级、缓存等功能。
参考链接:http://www.uml.org.cn/wfw/201906063.asp?artid=22057
雪崩效应:
雪崩效应:在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等。
如果没有采取任何措施的话就会导致雪崩效应。
服务雪崩效应是一种因“服务提供者的不可用”(原因)导致“服务调用者不可用”(结果),并将不可用逐渐放大的现象
比如A服务调用 B服务,B服务调用C服务,如果C服务出现故障,那么B服务应需调用C服务所以也出现故障 A服务也出现了故障,这就是雪崩效应。
如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情。Hystrix提供了熔断、隔离、Fallback、cache、监控等功能,能够在一个、或多个依赖同时出现问题时保证系统依然可用。
Zuul
Zuul是Spring Cloud全家桶中的微服务API网关。
所有从设备或网站来的请求都会经过Zuul到达后端的应用程序。
网关可以对外暴露聚合API,屏蔽内部微服务的微小变动,保持整个系统的稳定性。
当然这只是网关众多功能中的一部分,它还可以做负载均衡,统一鉴权,协议转换,监控监测等一系列功能。