For example HAproxy has the ability to start a new HAproxy instance to tell the old one to temporarily disconnect from the socket so the new process can take it over. If startup was successful then new connections are handled by the new HAproxy instance and old connections are handled by the old HAproxy instance. Once all the old connections have finished the old instance terminates.
I am currently using 3.2.4 and am trying to mitigate the breaking of existing connections when restarting. Specifically around adding a new SSL cert, but It would also be nice to mitigate breaking of connections when changing listen ports as well, or when you change certain configurations options that require a restart. I understand that the current 3.3.x branch should have a feature to re-read the ssl certs without requiring a restart.
One possible issue with the above model is that the cache could only be owned by one process. It would be nice if the old process would degrade into read-only or a proxy-only mode.