Soul API网关源码解析04

目标

  • SpringCloud API流程分析准备

    • soul-admin 打开SpringCloud配置
    • Soul-BootStrap增加SpringCloud依赖
    • 被代理端添加 SpringCloud-Client依赖
    • 配置启动Eureka服务端
    • 分别启动admin,bootstarp
  • 运行SpringCloud-Example

  • 接口调用展示

SpringCloud API 注册流程准备

soul-admin 配置SpringCloud插件打开

image

Soul-BootStrap 增加SpringCloud依赖



org.dromara
soul-spring-boot-starter-plugin-springcloud
${last.version}



org.springframework.cloud
spring-cloud-commons
2.2.0.RELEASE


org.springframework.cloud
spring-cloud-starter-netflix-ribbon
2.2.0.RELEASE

// 使用eureka作为SpringCloud注册中心

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client
    2.2.0.RELEASE

被代理端添加SpringCloud-Client依赖


    org.dromara
    soul-spring-boot-starter-client-springcloud
    ${soul.version}


    org.springframework.cloud
    spring-cloud-commons
    ${spring-cloud.version}

// ereka client

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client
    ${spring-cloud.version}

配置启动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

image

分别启动admin,bootstarp

  • bootstrap 增加配置
image
  • 查看bootstrap向eureka服务注册成功
image

运行SpringCloud Example之接口注册

  • 客户端启动自动执行Spring-cloud-client boot starter
image
  • 初始化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

  • 注册成功
image

接口调用展示

image

参考

soul github
soul document

你可能感兴趣的:(Soul API网关源码解析04)