RPC protocols like SOAP, XML-RPC, JSON-RPC, and Thrift allow for remote procedure calls between a client and server. RPC works by having a client call an RPC function, which then calls the service and executes the request. The service returns a reply and the program continues. Interface layers can be high-level existing API calls, middle-level custom API calls generated by a compiler, or low-level direct RPC API calls. Popular data formats used include XML, JSON, HTTP, and TCP/IP. Thrift is an open-source protocol developed by Facebook that supports many programming languages. It generates stubs for easy client-server communication. Avro and Protocol Buffers also generate stubs and are supported by languages like