SpringCloud 支持
SpringCloud 支持
模块可向 zookeeper 注册 SpringCloud application 。
-
提供 gateway 统一路由所有对模块的请求(可用于没有 hepa 的环境);
-
提供通用模型 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=trueZK_ADDRESS=your zk address here, like: localhost:2181方式2: 启用 SpringCloud 并向 Nacos 注册
Trantor 还支持使用 Nacos 作为服务注册发现组件,使用 Nacos 与使用 zookeeper 类似,需要设置两个环境变量:
DISCOVERY_ENABLE_NACOS=trueNACOS_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> {}