sofastack / sofa-rpc-node

SOFARPC Node is a high-performance, high-extensibility, production-level Nodejs RPC framework.
MIT License
612 stars 64 forks source link

启动两个RpcServer,再关闭其中一个,另一个也无法使用 #33

Closed xiulunlin closed 5 years ago

xiulunlin commented 5 years ago

1、按照demo创建两个进程,一个RpcServer使用12200端口,另一个使用12201端口

'use strict';

const { RpcServer } = require('sofa-rpc-node').server;
const { ZookeeperRegistry } = require('sofa-rpc-node').registry;
const logger = console;

// 1. 创建 zk 注册中心客户端
const registry = new ZookeeperRegistry({
  logger,
  address: '127.0.0.1:2181', // 需要本地启动一个 zkServer
});

// 2. 创建 RPC Server 实例
const server = new RpcServer({
  logger,
  registry, // 传入注册中心客户端
  port: 12200, // 另一个使用12201
});

// 3. 添加服务
server.addService({
  interfaceName: 'com.nodejs.test.TestService',
}, {
  async plus(a, b) {
    console.log(arguments)
    return a + b;
  },
});

// 4. 启动 Server 并发布服务
server.start()
  .then(() => {
    server.publish();
  });

2、ZK显示/sofa-rpc/com.nodejs.test.TestService/providers有两个节点

[bolt%3A%2F%2F10.39.190.174%3A12200%3FstartTime%3D1550489950969%26pid%3D41913%26uniqueId%3D%26dynamic%3Dtrue%26appName%3D%26timeout%3D3000%26serialization%3Dhessian2%26weight%3D100%26accepts%3D100000%26language%3Dnodejs%26rpcVer%3D50400%26protocol%3D%26interface%3Dcom.nodejs.test.TestService%26version%3D1.0%26group%3DSOFA, bolt%3A%2F%2F10.39.190.174%3A12201%3FstartTime%3D1550489964826%26pid%3D41915%26uniqueId%3D%26dynamic%3Dtrue%26appName%3D%26timeout%3D3000%26serialization%3Dhessian2%26weight%3D100%26accepts%3D100000%26language%3Dnodejs%26rpcVer%3D50400%26protocol%3D%26interface%3Dcom.nodejs.test.TestService%26version%3D1.0%26group%3DSOFA]

2、关闭其中一个进程 3、过一段时间后,ZK显示/sofa-rpc/com.nodejs.test.TestService/providers下为空

[]

期望另一个进程应该继续提供服务才对

gxcsoccer commented 5 years ago

这是个 bug,我来修复