以下内容基于Nacos 2.1.0-SNAPSHOT
1. 服务实例注册示例
当nacos服务已经启动后,可以使用以下示例代码向nacos注册服务实例
@Test
public void testRegisterInstance() throw Exception {
// nacos地址,用户和密码
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1:8848");
properties.put(PropertyKeyConst.USERNAME, "nacos");
properties.put(PropertyKeyConst.PASSWORD, "nacos");
// 构建服务实例
Instance instance = new Instance();
instance.setIp("1.1.1.1");
instance.setPort(800);
instance.setWeight(2);
Map<String, String> map = new HashMap<>();
map.put("netType", "external");
map.put("version", "2.0");
instance.setMetadata(map);
// 创建NamingService
NamingService namingService = NacosFactory.createNamingService(properties);
// 通过NamingService注册服务实例,并指定服务名为 nacos.test.1
namingService.registerInstance("nacos.test.1", instance);
}
2. 客户端执行流程
1. 相关的接口和类
-
NamingService定义了与服务实例相关的方法,我们可以通过NamingService完成服务实例的注册、注销、获取,目前只有一个实现类NacosNamingService。在NacosNamingService中持有一个NamingClientProxy的属性,并由NamingClientProxy来完成服务实例相关的操作。 -
NamingClientProxy封装了nacos客户端与服务端的交互细节。主要有两个实现类:-
NamingHttpClientProxy采用gRpc协议与服务端进行交互 -
NamingGrpcClientProxy采用Http协议与服务端进行交互
当需要服务实例
Instance的属性ephemeral为true时,将使用NamingHttpClientProxy与服务端进行交互。 -
-
RpcClient抽象远程客户端,用以连接服务器,发起请求,接受响应。
2. 时序图

3. 服务端执行流程
1. 相关接口和类
-
GrpcRequestAcceptor类用于统一接受grpc请求,在request方法中,根据请求元数据中的type属性来判断由哪个RequestHandler来处理 -
RequestHandler抽象类用于Nacos请求处理,其中子类InstanceRequestHandler用于处理服务实例注册和注销请求 -
ClientOperationService接口提供客户端操作(实例注册,实例注销,订阅服务,取消订阅),有以下两个实现类:-
PersistentClientOperationServiceImpl:对持久的客户端和服务提供操作 -
EphemeralClientOperationServiceImpl:对临时的客户端和服务提供操作
在构建
Instance时,可以通过ephemeral属性来指定为持久实例,还是临时实例,ephemeral默认为true -
-
ClientManager用于管理Nacos naming Client -
NotityCenter统一事件通知中心
2. 时序图

4. 待解惑
-
gRpc协议是什么?
-
服务注册请求数据结构长什么样?
-
服务注册成功后,存储在哪里?
-
发布
ClientOperationEvent.ClientRegisterServiceEvent事件和MetadataEvent.InstanceMetadataEvent事件的目的是什么
本文详细介绍了如何使用Nacos2.1.0-SNAPSHOT进行服务实例注册,包括示例代码、客户端执行流程和服务端执行流程。客户端通过NamingService注册服务实例到Nacos服务器,服务端接收到请求后由GrpcRequestAcceptor处理。文章还探讨了gRpc协议、服务注册的数据结构、存储位置以及相关事件的目的。
418

被折叠的 条评论
为什么被折叠?



