-
什么是springCloud
微服务是一种架构方式,而springCloud就是其中一种技术架构。 springCloud将其他技术整合到一起,如配置管理,服务发现,智能路由,熔断器,集群状态。 - Eureka:服务治理组件,包含服务注册中心,服务注册与发现机制的实现。(服务治理, 服务注册/发现) - Zuul:网关组件,提供智能路由,访问过滤功能 - Ribbon:客户端负载均衡的服务调用组件(客户端负载) - Feign:服务调用,给予Ribbon和Hystrix的声明式服务调用组件 (声明式服务调用) - Hystrix:容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为 故障提供强大的容 错能力。(熔断、断路器,容错) 1. 线程隔离、服务降级 2. 服务熔断 总结: 通过eureka来提供服务注册中心,以及服务的注册与发现。 服务之间的调用通过ribbon或 feign来解决负载均衡问题。 为了避免其中某个服务出现故障,我们用Hystrix熔断机制来避 免阻塞。
-
Eureka注册中心
服务方(a)和消费方b之前是服务与消费的关系,不用springCloud之前我们都是直接调用,那么 在微服务里a和b可以有几十个,那么人为的去管理太麻烦,那么这个时候就可以通过注册中心去 进行管理。相当于滴滴打车。 Eureka: 服务注册中心,对外暴露自己的地址。 提供者: 启动后向Eureka注册自己的信息。 消费方: 向Eureka订阅服务 心跳: 提供者定期通过http向Eureka刷新自己的状态。
-
负载均衡Ribbon
-
Hystrix熔断
微服务中,关系调用非常复杂,如果中间一步出现了问题,那么很有可能会造成阻塞,那么这个 时候hystrix这个技术就出现了,可以在配置文件中设置hystrix的超时时间设置,默认是1秒。
-
Feign
在之前的ribbon有大量的重复代码如: this.restTemplate.getForObject("http://service-provider/user/" + id, String.class); 去进行调用,无非就是参数不同。通过feign能够对代码进行优化。 feign集成了ribbon。
-
Zuul网关
微服务中不可或缺的一部分,除了具备服务路由,负载均衡,还有权限控制等功能。 一切对服务的请求都通过zuul这个网关。
1. 如何集成eureka:
1. 添加依赖
2. 添加Eureka配置,获取服务信息、
3. 开启Eureka客户端发现功能
4. 修改映射配置,通过服务名称获取。 eureka默认已经集成了ribbon。
2. zuul作为网关重要功能,就是实现了请求的鉴别。
实现IZuulFilter接口,run方法具体的业务逻辑访问。
shouldFilter`:返回一个`Boolean`值,判断该过滤器是否需要执行
,返回true执行,返回false不执行。