Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Consider move to more mature 3rd party RPC protocol #54

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

Open
philipstarkey opened this issue Oct 14, 2020 · 0 comments
Open

Consider move to more mature 3rd party RPC protocol #54

philipstarkey opened this issue Oct 14, 2020 · 0 comments
Labels
enhancement New feature or request proposal

Comments

@philipstarkey
Copy link
Member

Prior to the move to github, we were working on improvements to the inter-component RPC protocol (see declined PR). Part of the motivation for this was better handling of changes to the protocol in a way that could be detected and/or were backwards compatible.

I'd like to propose that we take a further step back and consider whether we want to continue to use own our ZMQ RPC protocol. When we made this decision (at least 8 years ago) the RPC landscape was very different. But there are now mature projects out there for cross-language RPC such as gRPC (initially created by Google). As an example, gRPC requires a well defined protocol document that specific language interfaces are then generated from. It also supports bi-directional streaming during specific RPC calls and uses the HTTP2 standard which makes it potentially more routable in complex network environments than raw sockets (and is apparently increasingly being used in microservice web architectures). LabVIEW support could be tricky for gRPC, but may not be a concern we care about.

There may also be projects other than gRPC that might be better!

It still probably makes sense to use ZMQ for communication that requires speed (like serialising dataframes in lyse for sending to analysis subprocesses) and probably ZProcess. My initial thoughts are that, if we decide to adopt a 3rd party RPC project, anything that is a low level private RPC API within a component could stay with ZMQ but public RPC between labscript-suite components would use the new RPC library.

Basically I think now is a good time to discuss bigger picture RPC changes before we do any more work on the ZMQ RPC. So I'm opening discussion to see if anyone has strong feelings either way and to suggest we do a search to see if how the 3rd party RPC library landscape has changed in the last 8 years.

@philipstarkey philipstarkey added enhancement New feature or request proposal labels Oct 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request proposal
Projects
None yet
Development

No branches or pull requests

1 participant