I'm curious about what it takes to build a simple and robust RPC framework. I've only looked at a few ruby frameworks but they are all lacking in some way. What I want out of an RPC framework is some kind of registration/discovery mechanism and a simple plugin architecture. Pretty much all the frameworks out there provide a simple plugin mechanism but I haven't found one that provides a simple discovery mechanism. The only one that does provide something in terms of discovery is MCollective but that has its own set of issues that I've run into while trying to use it at work.

So how hard would it be to build one from the ground up using tcp sockets or maybe 0MQ? Any issues I should be aware of ahead of time before I start this project?


It's not a matter of whether it would be hard to build one from ground up, but a matter of whether it would be wise. It wouldn't.

Since it seems to be discovery mechanism you are missing, it would be easier to improve or add better discovery mechanism to an existing RPC framework. That would also give you higher chance to actually get users if you wanted to publish it.

Now the problem is that discovery is hard and there is no universal method for discovery that would work in any situation. You can have simply URL, you can have local broker (like D-bus), or network tracker (most peer-to-peer networks), you can have special entries in DNS (preferably DNS-SD), you can have multi-cast and well-known ports or some existing multi-cast based protocol like multi-cast DNS+DNS-SD or Simple Service Discovery Protocol (part of upnp)… You didn't say what you want it for, so I can't unfortunately suggest you any particular solution.

Also don't limit yourself to Ruby; look at existing technology implemented in other languages that could be bound or ported to ruby. One of big advantages of RPC mechanism is that each peer can be implemented in different language, so it's always better if the same protocol is implemented by multiple languages.

  • There are some keywords here that I can look into. – davidk01 Mar 5 '13 at 7:51
  • @davidk01: I also forgot to mention that the discovery and the transport are almost completely orthogonal, making it even more reasonable to take existing transport and work just on the discovery. – Jan Hudec Mar 5 '13 at 8:18
  • @davidk01: I've added some more specific keywords (specific protocols that implement some of the options). – Jan Hudec Mar 5 '13 at 8:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.