Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign up关于调整注册时机与监听时机的问题 #68
Open
关于调整注册时机与监听时机的问题 #68
Labels
Comments
|
获取动态端口号的我已经改完了 |
是的,我了解。这个是根据你的动态端口pr衍生出来的问题,调整上述的几个时机。 我阅读你的pr中,为了能拿到各项数据,将listen部分代码都放在了newServer中,并且在结构体中增加了字段。 这个pr主要是,优化调整注册时机,之后即可在Serve阶段 进行listen了,不用再放在newServer中,从而不必在结构体中保存额外的信息了。 另外优化服务注册时机为sever启动后,减少因为先注册服务却没启动服务时候,导致的无法访问的间隙。 |
liyue201
linked a pull request that will
close
this issue
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment


Issue Description
Type: feature request
相关pr
#58
1,调整了servers 注册、注销时机(将注销放在了stop中,将注册测defer挪到了eg.go外的线程中)
2,调整了注册服务的关闭时机(放在了最后)
3,统一调整了server下的 listen时机 (统一放在了serve方法中,newServer不在承担打开监听的事)
Describe what feature you want
现在有过程大致是这样的:
1,server.newServer 主要读取配置初始化等事情
2,注册服务 (未启动服务之前就注册服务)
3,server.Serve 主要做启动服务的事情
4, 注销服务(server线程停止后注销)
5, server.Stop 主要做停止的事情
启动一个网络服务一般会有分两步 listen 和serve,若将这两部全部放在 Serve环节
将有个问题,就是注册服务,无法正确拿到启动信息,如:实际启动端口 (动态端口时)
另外,注册的时机,比启动的时机稍微提前。
调整后:
1,server.newServer
2,server.Serve
3,注册服务 (待Serve线程启动后,等待1毫秒后注册)
4, server.Stop
5,注销服务 (在触发server.Stop 后进行注销服务)
即在Serve 启动服务后,进行服务注册。在服务stop后进行服务注销。
这样调整后,注册服务时,获取的server.info 为Serve后的状态,即可以取到动态端口号等信息。
因调整涉及注册时机,所以影响较大,请评估风险,以及可能遇到的问题。
Additional context
过程中参考了gomicro 的注册机制,是在listen之后进行的