The Wayback Machine - http://web.archive.org/web/20201004211633/https://github.com/douyu/jupiter/issues/68
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于调整注册时机与监听时机的问题 #68

Open
mlboy opened this issue Jun 22, 2020 · 3 comments · May be fixed by #161
Open

关于调整注册时机与监听时机的问题 #68

mlboy opened this issue Jun 22, 2020 · 3 comments · May be fixed by #161

Comments

@mlboy
Copy link
Collaborator

@mlboy mlboy commented Jun 22, 2020

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之后进行的

@Leon2012
Copy link
Contributor

@Leon2012 Leon2012 commented Jun 23, 2020

获取动态端口号的我已经改完了

@mlboy
Copy link
Collaborator Author

@mlboy mlboy commented Jun 23, 2020

获取动态端口号的我已经改完了

是的,我了解。这个是根据你的动态端口pr衍生出来的问题,调整上述的几个时机。

我阅读你的pr中,为了能拿到各项数据,将listen部分代码都放在了newServer中,并且在结构体中增加了字段。

这个pr主要是,优化调整注册时机,之后即可在Serve阶段 进行listen了,不用再放在newServer中,从而不必在结构体中保存额外的信息了。

另外优化服务注册时机为sever启动后,减少因为先注册服务却没启动服务时候,导致的无法访问的间隙。

@mlboy
Copy link
Collaborator Author

@mlboy mlboy commented Jun 27, 2020

#58

@liyue201 liyue201 linked a pull request that will close this issue Aug 11, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

3 participants
You can’t perform that action at this time.