RPC is a way of connecting two separate services via a raw TCP socket
Note: SOAP, Thrift, REST APIs, message queues such as RabbitMQ, and key value stores such as Etcd are examples of other tools and protocols
The fundamental principle is, you define an RPC service:
From here we have a client service that calls the RPC service:
The client JSON could look like:
method
: name of method/serviceparams
: Array of arguments to be passedid
: usually an integer; makes it easier for client to know which request it got a response to (if the RPC calls are done asynchroneously){"method": "Arith.Multiply", "params": [{"A": 2, "B": 3}], "id": 1}
The RPC server JSON response could look like:
result
: contains return value of method called (null
if error ocurred)error
: if error occurred, indicates error code or error message, otherwise null
id
: the id of the request it is responding to{"result": 6, "error": null, "id": 1}