History
Monolithic architecture
Monolithic architecture refers to a software design pattern where all components and services are combined into a single codebase and run as a single application.

Vertical Application Architecture
Vertical Application Architecture refers to a design approach where different functionalities or components of a system are separated based on specific business or domain capabilities, rather than technical layers.
Distributed Architecture
Distributed Architecture refers to a system where components and services are run on different machines or servers, typically interconnected by a network, to achieve a common goal. Within such an architecture, it's common practice to extract independent services that are unrelated to the core business logic.
Service oriented architecture (SOA)
Service-Oriented Architecture (SOA) is a design pattern in which software applications are organized around services rather than monolithic components or modules. This architectural style encourages the decomposition of a business process or function into a set of interconnected services that can be reused to build a flexible and scalable system.
Microservices architecture
Microservices architecture is a software development approach that breaks down a large application into multiple small, independent services. Each service can run and be deployed independently and typically has its own database and API.
Service Governance: This refers to the set of practices, policies, and standards that help manage and control the microservices in a system. Service governance includes aspects such as service discovery (finding available services), service versioning (managing different versions of a service), and load balancing (distributing requests across multiple instances of a service). It helps ensure that services can effectively communicate with each other and that the overall system operates smoothly.
Observability: Observability in microservices architecture involves monitoring and logging the behavior of services to understand their performance and health. This is essential for detecting and diagnosing issues, as well as optimizing the system. Observability tools provide insights into metrics such as response times, error rates, and resource usage. They also allow for tracing the flow of requests through services to identify bottlenecks or failures.
Security: Security is a critical element in microservices architecture, as each service can be a potential attack vector. Security practices in microservices include securing communication between services (e.g., using HTTPS), implementing authentication and authorization (verifying the identity of users and services and controlling their access), and protecting data (e.g., encrypting sensitive data). Ensuring security helps prevent unauthorized access and data breaches, safeguarding the integrity and confidentiality of the system.
If we think of HDFS as Microservice, it would be like this:
The communications between different services in Microservice:
Registration
When service A needs to communicate with service B, using a hardcoded IP address and port number is not an ideal approach (as service B could have multiple IP addresses). Instead, you might want to consider using a NameServer. However, there could be issues if the instance in Service B becomes unavailable.
Therefore, you can add a service registry to solve the problem:
Meanwhile, it is much easy to control Service online and service offline:
Procedure of service offline:
Procedure of service online:
Microservices Traffic Patterns:
Internet uses HTTP, intranet uses RPC. Why?
RPC can be more efficient than HTTP, as it does not require the overhead of HTTP headers and can use binary data formats that are more compact and faster to parse than textual data formats such as JSON or XML.