SpringCloud 使用
Posted 哦克Oak
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
所有的配置文件管理的地方。
以上是关于SpringCloud 使用的主要内容,如果未能解决你的问题,请参考以下文章