What are the best recommendations for modern day low latency RPC? Google protocol buffers? Or some message queue such as ZeroMQ?
What you run over that for your RPC is a matter of taste - gRPC is certainly popular, and can be run over QUIC.
Instead of opening a TCP (or UDP) socket and writing data (or data grams) to it you’d open a (for want of a better term) RPCP socket and write data that represents the procedure call and parameters to it.
I assume the protocol would have assurances of some kind of reliability (unlike UDP) and procedure call data boundaries (unlike TCP) built in at the lowest levels along with request/response sequences to allow out of order completions.
It leverages DPDK and is perfect for low-latency RPC in lossless DCs