@@ -36,6 +36,68 @@ The project is organized into the following modules to ensure separation of conc
3636| ** ` python_client ` ** | Python client implementation demonstrating cross-language gRPC interoperability. |
3737| ** ` go_client ` ** | Go client implementation demonstrating cross-language gRPC interoperability. |
3838
39+ ### System Architecture Diagram
40+
41+ ``` mermaid
42+ flowchart LR
43+ subgraph External["External Systems"]
44+ E1["python_client (grpc-python)"]
45+ E2["go_client (grpc-go)"]
46+ E3["Nacos Registry"]
47+ end
48+
49+ subgraph Internal["Internal Components"]
50+ subgraph Clients["Java Clients"]
51+ C1["rpc-consumer"]
52+ C2["Spring Boot App"]
53+ end
54+
55+ subgraph Core["rpc-core (Microkernel)"]
56+ P1["ProxyFactory (JDK/ByteBuddy)"]
57+ P2["RpcClient / RpcServer"]
58+ P3["ExtensionLoader (SPI)"]
59+ end
60+
61+ subgraph Plugins["SPI Plugins"]
62+ S1["Protocol: Netty / HTTP / HTTP2 / gRPC"]
63+ S2["Serializer: Protobuf / Kryo / JSON / Java"]
64+ S3["LoadBalancer: RoundRobin / Random"]
65+ S4["Registry: Nacos / Local"]
66+ S5["Transport: rpc-transport-netty"]
67+ end
68+
69+ subgraph Provider["Service Provider"]
70+ M1["rpc-provider"]
71+ M2["HelloServiceImpl"]
72+ end
73+ end
74+
75+ A1["rpc-api (service interfaces)"]
76+ A2["rpc-common (RpcRequest/RpcResponse + proto)"]
77+
78+ C1 --> P1
79+ C2 --> P1
80+ E1 -->|gRPC / HTTP2 + Protobuf| S1
81+ E2 -->|gRPC / HTTP2 + Protobuf| S1
82+ P1 --> P2
83+ P2 --> S3
84+ P2 --> S4
85+ P2 --> S5
86+ P2 --> S2
87+ S5 --> S1
88+ S1 --> M1
89+ M1 --> M2
90+ S4 <-->|service register/discover| E3
91+ A1 -.shared API.-> C1
92+ A1 -.shared API.-> M1
93+ A2 -.shared model.-> P2
94+ P3 -.loads.-> S1
95+ P3 -.loads.-> S2
96+ P3 -.loads.-> S3
97+ P3 -.loads.-> S4
98+ P3 -.loads.-> S5
99+ ```
100+
39101## ✨ Key Features
40102
41103- ** 🔌 Plugin-based Architecture** : Leverages a custom SPI mechanism for maximum flexibility.
0 commit comments