Spring Cloud Remote Calls: HTTP vs RPC
The article explains why Spring Cloud prefers HTTP over RPC for remote calls, detailing the advantages of embedded Tomcat and JSON over HTTP, the limitations of TCP‑based RPC, and provides a comparative analysis of their architectures, pros, cons, and suitability for microservices.
Why Spring Cloud Uses HTTP for Remote Calls
Spring Cloud builds on an embedded Tomcat container to expose web services, allowing developers to exchange JSON over HTTP, which is platform‑independent and fits microservice communication patterns such as mobile, H5 and mini‑programs.
RPC relies on TCP sockets, requiring a three‑way handshake and binary serialization, which makes it less flexible for frequently changing data structures; it is typically used for stable, low‑level data exchanges.
Simple HTTP Request Handling
In a web application, a browser sends a URL request and the server returns an HTML page via the HTTP protocol; a basic Java HTTP server can be implemented to illustrate this flow.
What Is RPC?
Remote Procedure Call (RPC) is a communication method that lets a program invoke a function on a remote machine as if it were local, abstracting the network details from the developer.
For example, two servers A and B can call each other’s methods over the network, even though they run in separate JVMs.
RESTful (HTTP)
RESTful defines a set of architectural constraints that leverage existing Web standards; although it is commonly implemented over HTTP, the style itself is not tied to a specific protocol.
Differences Between RPC and HTTP
Both involve request‑response interactions, but RPC aims to hide remote calls behind a local‑like API, while HTTP leaves request and response handling to the developer.
RPC provides transparent remote invocation but ties the API to a specific language or framework.
HTTP is more flexible, language‑agnostic and cross‑platform.
Pros and Cons
Advantages:
RPC offers transparent calls, simplifying client code.
HTTP is flexible, language‑independent and suitable for cross‑platform integration.
Disadvantages:
RPC requires API‑level wrappers, limiting language choice.
Choosing Between Them
Consider speed (RPC can be faster but HTTP can be compressed), implementation complexity (RPC is more complex), and flexibility (HTTP is easier to adopt across platforms).
Future Direction
Microservice architectures favor independent, autonomous services; therefore most modern frameworks adopt HTTP‑based RESTful services rather than RPC.
Architect's Guide
Dedicated to sharing programmer-architect skills—Java backend, system, microservice, and distributed architectures—to help you become a senior architect.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.