Spring Cloud和Java Chassis应用同时注册到注册中央。引入了Spring Cloud Gateway作为网关,网关也注册到注册中央。
Spring Cloud微服务和Java Chassis微服务相互调用。它们彼此作为消费者的时间,不需要感知对方是不同的框架,做到透明调用。
从技术原理上梳理下上述互操作需要满足的条件:
Spring Cloud和Java Chassis需要有相互熟悉的注册信息。核心包括:应用名称、服务名称、地址信息和格式等。 需要的共同注册中央越少,越容易对注册中央和客户端进行选型。 在本例子中,我们选择 Service Center 或者 Nacos 作为注册中央,并选择Spring Cloud Huawei实现Spring Cloud注册。
Spring Cloud访问Java Chassis,只需要一个地址信息,依赖较少。 Java Chassis访问Spring Cloud,需要知道Spring Cloud应用提供的左券信息。
Java Chassis区别于Spring Cloud的REST调用的部分,就是左券依赖。 Spring Cloud通过FeignClient来声明客户端左券,客户端都需要在FeignClient中重复誊写REST标签;Java Chassis有两种模式发现左券:从注册中央发现和从Provider实例发现。 Java Chassis3默认采用从Provider实例发现, Java Chassis2采用从注册中央发现。 从Provider发现的利益是可以降低对于注册中央元数据管理能力的要求,本例既可以采用 Service Center 作为注册中央,也可以选择 Nacos 作为注册中央。
从Provider发现,要求Provider实现如下接口:
/**
* Java Chassis internal management apis.
*/
@Path("/scb/management")
public interface ManagementEndpoint {
String NAME = "scb-management";
/**
* Health of this instance. If the instanceId match this instance, and this service is ready
* to service return true. Otherwise, return false.
*
* This api is for internal instance status usage. Load balancer will call this api to check if