Spring Cloud组件
内容及图片参考自:https://blog.csdn.net/qq_42046105/article/details/83793787
一、Eureka
Eureka是微服务架构中的注册中心,专门负责服务的注册与发现。Server里面有一个注册表,保存了各Client所在的机器和端口号

二、Feign
用注解@FeignClient定义一个接口,然后调用接口即可。FeignClient底层会跟指定的服务建立连接、构造请求、发起靕求、获取响应、解析响应等
@FeignClient(value = "服务名", qualifier = Server1Client.FEIGN_BEAN_NAME, fallbackFactory = Server1FallBackFactory.class) public interface Server1Client { String FEIGN_BEAN_NAME = "server1Client"; @GetMapping("test") String test(); }
@RestController public class Server2Controller { @Resource(name = Server1Client.FEIGN_BEAN_NAME) private Server1Client server1Client; @RequestMapping("/test") public String test(){ return server1Client.test(); } }
机制:动态代理
【对接口使用@FeignClient注解后,Feign会对该接口创建一个动态代理,该代理会根据@RequestMapping等构造出服务完整地址。调用该接口时调用该代理,对地址发送请求、接收响应】

三、Ribbon
负载均衡:Ribbon从EurekaServer获取服务注册表(各服务地址+端口),根据算法选中一台,Feign发起请求

四、Hystrix
服务间相互调用,如果一个服务挂了,其他服务也会受到影响。
Hystrix机制
- 隔离:Hystrix创建很多线程池,每个服务对应着一个线程池,请求该服务就用对应线程池中的线程。当一个服务挂掉,只是对应线程池中的线程阻塞,其他线程池无影响
- 熔断:一个服务挂掉时,直接返回,不走网络
- 降级:服务挂掉时的备用解决方案,如记录日志

五、Zuul
微服务网关,负责网络路由。也可以做统一的降级、限流、认证授权等
不同服务可能ip和端口都不同。可以配置网关,前端访问时只需请求网关即可
六、整体流程


浙公网安备 33010602011771号