SpringCloud 使用

SpringCloud

启动顺序:

(1)配置文件

(2)Zuul

(3)Eureka

(4)其他项目

基础功能:

服务治理: Spring Cloud Eureka

作用:解决子系统之间的远程调用问题,不需要维护服务之间系统调用的静态ip等。服务ABCD,在E服务Eureka中注册,ABCD之间的调用通过服务名来调用。
ABCD称为Eureka的客户端,其中又细分为服务提供者和服务消费者,E为服务端。如果D不需要对外提供服务,只是一个单纯的消费者,是不需要注册到E中的。

服务提供者:
[1] 服务注册
[2] 服务续约
[3] 服务下线

服务消费者:
[1] 获取服务
[2] 服务调用

服务注册中心:
[1] 失效剔除,没有续约的服务。
[2] 自我保护,服务续约总是失败,尽可能保护这些注册信息。

eureka:
client:
register-with-eureka: false # 当前微服务不注册到eureka中(消费端)
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/


E服务一般进行如下配置:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务


客户端负载均衡: Spring Cloud Ribbon(对应的服务端负载均衡Nginx)

RestTemplate 取代传统的httpclient进行远程调用,直接用spring封装好的工具类。

// 服务实例名
private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";

restTemplate.postForObject(REST_URL_PREFIX + "/dept/add", dept, Boolean.class);


服务容错保护: Spring Cloud Hystrix

在高并发的情况下,由于单个服务的延迟,可能导致所有的请求都处于延迟状态,甚至在几秒钟就使服务处于负载饱和的状态,资源耗尽,直到不可用,最终导致这个分布式系统都不可用,这就是“雪崩”。
[1] Fallback(失败快速返回),直接响应返回错误信息。
[2] 资源/依赖隔离(线程池隔离),不会影响其他线程的正常运行状态。

声明式服务调用: Spring Cloud Feign

基于Netflix Feign 实现,整合了Ribbon与Hystrix, 除了整合这两者的强大功能之外,它还提供了声明式的服务调用(不再通过RestTemplate)。
@FeignClient,用于服务之间的调用。

API网关服务:Spring Cloud Zuul

用于权限控制等,也就是平时项目中的拦截器和过滤器。

分布式配置中心: Spring Cloud Config

所有的配置文件管理的地方。

猜你喜欢

转载自www.cnblogs.com/pzyin/p/12891967.html