跳转到内容

SpringCloud 支持

SpringCloud 支持

模块可向 zookeeper 注册 SpringCloud application 。

  1. 提供 gateway 统一路由所有对模块的请求(可用于没有 hepa 的环境);

  2. 提供通用模型 CRUD RestAPI ,并提供 FeignClient 进行 RPC 。

有几点需要注意:

  • 模块会以 module key 为 application name 进行注册。自行设置 spring.application.name 是无效的
  • 因为下划线(_)不是合法的 hostname ,因此 module key 中的下划线会被替换为横线(-)进行注册。也就是说如果 module key 是 meta_store 的话,注册时会使用 meta-store ,调用时也需要使用 meta-store 。

实现方式

方式1: 启用 SpringCloud 并向 zookeeper 注册

目前 Trantor 支持使用 zookeeper 作为 SpringCloud 注册发现的组件,启用 SpringCloud 注册发现并向 zk 注册只需要在模块启动时添加两个环境变量:

DISCOVERY_ENABLE_ZK=true
ZK_ADDRESS=your zk address here, like: localhost:2181

方式2: 启用 SpringCloud 并向 Nacos 注册

Trantor 还支持使用 Nacos 作为服务注册发现组件,使用 Nacos 与使用 zookeeper 类似,需要设置两个环境变量:

DISCOVERY_ENABLE_NACOS=true
NACOS_ADDRESS=your nacos address here, like: localhost:8848

注意:以上服务注册发现选项最多只应该同时开启一个。

方式3: 自定义注册 IP 和 PORT

通过传入  DISCOVERY_REGISTER_IP  和  DISCOVERY_REGISTER_PORT  环境变量,可以自定义服务注册时的 IP 和 PORT ,在某些场合适用(例如将 Docker 集群内的服务暴露给外部)。

实现示例

使用 FeignClient 调用通用模型 CRUD API

Trantor 在模块中默认为每个模型提供了一套标准 RestAPI ,并在 io.terminus.trantor:api  包中提供了配套的 FeignClient 父类  io.terminus.trantor.api.TModelFeignClient ,使用者可继承使用。

举例来说,如果你需要访问在 base 模块中的模型 base_User ,只需这样声明你的 FeignClient 即可:

// name 为 application name ,也就是 module key
// path 固定格式为 /api/tmodel/{modelKey}
// extends TModelFeignClient 时需要向泛型传入模型以及模型 id 的类型
@FeignClient(name = "base", path = "/api/tmodel/base_User")
public interface BaseUserClient extends TModelFeignClient<User, Long> {}