Replies: 2 comments
-
Beta Was this translation helpful? Give feedback.
0 replies
-
Ah... I think I understand after looking at the code. The old server blocks I/O, writes the socket connection information to the upgrade.sock file, and the new server receives it, creates a socket, and executes it. During the process, the client is blocked from receiving I/O, but the connection is not lost, and when the new server is executed, the request is processed. Is that right? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
As far as I know, proxy systems such as nginx/HAProxy implement zero-downtime reload by separating processes on a master-worker basis.
On the other hand, according to the document, Pingora seemed to implement zero-downtime by somewhat directly controlling the file descriptior.
From what I understand, zero downtime replace is handled in the following flow.



What I'm curious about here is how the listener replacement was achieved with zero downtime.

Even if I stop listening on the old server and immediately start listening on the new server, isn't it possible for a very small "hangup" to occur?
I'm curious about the details of pingora's implementation of this.
Beta Was this translation helpful? Give feedback.
All reactions