RPC: remote procedure call: one node asks for another node's service
local procedure call: invoking function
challenges:
1. Call ID mapping: each function has its unique ID
2. serialization & unserialization
3. network transferring
JSON is not an encoding protocol with high-performance
serialize struct to JSON object and transfer as binaries