Evolution of Project Architecture and Glossary of Common Distributed System Terms
This article explains the evolution of software project architectures—from single‑server monoliths to MVC, RPC, SOA, and micro‑services—while providing clear definitions of key terms such as clusters, load balancing, caching, and flow control for readers unfamiliar with high‑concurrency and distributed systems.
1: Evolution of Project Architecture
In the era of high concurrency, massive data, distributed systems, NoSQL, and cloud computing, many have heard terms like "cluster" and "load balancing" but few have truly understood them. To grasp these concepts, we first need to look at the evolution of project architecture, illustrated with a Dubbo diagram.
ORM and MVC: Early architectures ran on a single server, which was sufficient for small workloads. As traffic grew, the MVC pattern separated presentation, business, and data access layers, making development and maintenance easier.
RPC Architecture: When a single server could no longer handle the load, RPC‑based distributed architectures emerged, splitting services across multiple machines that communicate via remote calls.
Typical RPC components include:
Service Provider – runs on a server and offers service interfaces and implementations.
Service Registry – publishes services, manages them, and makes them discoverable to consumers.
Service Consumer – runs on a client and invokes remote services through proxies.
Common Java RPC frameworks are Dubbo, Spring Cloud, and Thrift.
SOA Architecture: As the number of services grew, inter‑service communication became complex. Service‑Oriented Architecture introduced a governance layer where services register themselves and consumers request them through a central service‑governance center.
Micro‑services: The latest trend further decomposes business functionality into fine‑grained, independently deployable services.
2: Terminology
Below are plain‑language explanations of frequently mentioned terms that often sound impressive to outsiders.
1: Cluster
A cluster is a loosely coupled group of independent computers that work together as a single system, communicating via a network. It can provide parallel processing or act as a backup, offering high reliability (HA), high‑performance computing (HP), and load balancing (LB).
Typical cluster types include:
Load‑balance cluster – distributes tasks among nodes based on a policy.
High‑availability cluster – provides active/standby, active/passive, or active/active failover.
High‑performance computing cluster – multiple nodes cooperate to finish a large computation quickly.
2: Load Balancing
HTTP Redirect Load Balancing: The web server returns a 302 redirect to a different URL, sending the client to a nearer server. Simple but adds an extra request and can affect SEO.
DNS Load Balancing: Multiple IP addresses are associated with a single domain name; DNS resolves the domain to one of those IPs, often using geographic proximity. Easy to set up but lacks fine‑grained control and suffers from propagation delays.
Reverse‑Proxy Load Balancing: A reverse‑proxy sits in front of a pool of web servers, forwarding requests based on load‑balancing algorithms and optionally caching content. Integration is simple, but the proxy can become a bottleneck.
Common load‑balancing strategies: round‑robin, weighted round‑robin, least connections, fastest response, and hash‑based routing.
3: Caching
Caching stores data closer to the point of use to speed up access. Types include:
CDN caching – static resources are cached at edge locations near end users.
Reverse‑proxy caching – front‑end servers cache responses before they reach the application servers.
Local (in‑process) caching – hot data is kept in the application server’s memory.
Distributed caching – a dedicated cache cluster stores data that cannot fit into a single machine’s memory.
4: Flow Control (Traffic Control)
Traffic Dropping: Requests are placed in an in‑memory queue and discarded when the system is overloaded, a simple but harsh method.
Alternatively, asynchronous processing via distributed message queues can smooth traffic spikes.
3: Special Recommendations
For deeper dives, see the PRC article at https://www.jianshu.com/p/5b90a4e70783.
Architecture Digest
Focusing on Java backend development, covering application architecture from top-tier internet companies (high availability, high performance, high stability), big data, machine learning, Java architecture, and other popular fields.
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.