背景:Spring Boot 微服务架构与多租户模式
在微服务架构中,各服务之间的通信使用@FeignClient绑定服务名就能简单方便的实现接口调用。
@FeignClient(serviceId = "source")
public interface CoreClientService {
}
但是在多租户模式下,为保证租户tanancyId的数据隔离,为每一个租户资源部署一个服务,服务名假设为:SOURCE_tanancyId。
当系统服务要去访问租户资源服务时,再使用Feign调用的方式显然行不通。此时可以使用RestTemplate访问租户资源服务。
Object result = restTemplate.getForObject("url",Object.class);
根据租户tanancyId动态拼接url来控制访问租户资源服务器,以此实现系统服务动态访问租户资源。
小结:Feign使用更为简单,也方便服务降级管理,但略失灵活;RestTemplate同样简单实现http调用,可灵活改变访问对象,但在拼接url方面稍显麻烦。