目标
-
SpringCloud API流程分析准备
- soul-admin 打开SpringCloud配置
- Soul-BootStrap增加SpringCloud依赖
- 被代理端添加 SpringCloud-Client依赖
- 配置启动Eureka服务端
- 分别启动admin,bootstarp
运行SpringCloud-Example
接口调用展示
SpringCloud API 注册流程准备
soul-admin 配置SpringCloud插件打开
Soul-BootStrap 增加SpringCloud依赖
<!--soul springCloud plugin start-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-plugin-springcloud</artifactId>
<version>${last.version}</version>
</dependency>
<!--soul springCloud plugin end-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
// 使用eureka作为SpringCloud注册中心
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
被代理端添加SpringCloud-Client依赖
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-client-springcloud</artifactId>
<version>${soul.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
// ereka client
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
配置启动Eureka服务端
Eureka 服务器配置简单,使用SpringBoot 只需要增加依赖即可,这里主要说下配置信息的含义
eureka:
instance:
hostname: ${hostname:localhost}
preferIpAddress: true // 允许使用ip 进行服务注册
lease-renewal-interval-in-seconds: 2 //eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒 当前2秒
lease-expiration-duration-in-seconds: 6 //Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒 当前6秒
server:
peerEurekaNodesUpdateIntervalMs: 60000 //集群里eureka节点的变化信息更新的时间间隔,单位为毫秒,默认为10 * 60 * 1000
enableSelfPreservation: false //自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
evictionIntervalTimerInMs: 5000 //过期实例应该启动并运行的时间间隔,单位为毫秒,默认为60 * 1000
client:
registerWithEureka: false //实例是否在eureka服务器上注册自己的信息以供其他服务发现,默认为true
fetchRegistry: false //此客户端是否获取eureka服务器注册表上的注册信息,默认为true
serviceUrl:
defaultZone: http://localhost:8761/eureka/
healthcheck:
enabled: true
eurekaServiceUrlPollIntervalSeconds: 60 //询问Eureka服务url信息变化的时间间隔(s),默认为300秒
了解这些参数即可,然后启动Eureka Server
分别启动admin,bootstarp
- bootstrap 增加配置
- 查看bootstrap向eureka服务注册成功
运行SpringCloud Example之接口注册
- 客户端启动自动执行Spring-cloud-client boot starter
- 初始化SoulSpringCloudConfig
@Bean
@ConfigurationProperties(prefix = "soul.springcloud")
public SoulSpringCloudConfig soulSpringCloudConfig() {
return new SoulSpringCloudConfig();
}
拼接admin 注册URL,同时开启线程池执行 this.url = config.getAdminUrl() + "/soul-client/springcloud-register",前面我们分析了 Springmvc ,Apache Dubbo ,基本上接口注册都是采用这种方式
- postProcessAfterInitialization 执行
这里解析与SpringMvc一样,也提供一个full 字段来判断是否要全局代理,如果不是全局代理,那么根据反射和注解SoulSpringCloudClient进行接口注册。
- ContextRegisterListener
判断full 是否为True,如果为True 则全部代理,事件触发时机就是Bean 初始化完成之后触发ApplicationListener<ContextRefreshedEvent>
- 注册成功