微服务设计的EarthChat,自研网关,无需服务发现,支持即可支持服务自动代理
graph TD
A[Kestrel 接收请求] --> B[YARP 路由请求]
B --> C[HttpClient 处理请求]
C --> D[连接池检查]
D --> E{是否有可用连接?}
E -- 是 --> F[复用连接]
E -- 否 --> G[创建新连接]
G --> H[将连接加入连接池]
F --> I[请求发送至目标节点]
H --> I[请求发送至目标节点]
I --> J[目标节点处理请求]
J --> K[节点返回接口响应]
- Kestrel 接收请求:Kestrel 作为 ASP.NET Core 的 Web 服务器,接收来自客户端的 HTTP 请求。
- YARP 路由请求:YARP(Yet Another Reverse Proxy)根据配置的路由规则,将请求转发。
- HttpClient 处理请求:YARP 使用
HttpClient
来处理转发的 HTTP 请求。 - 连接池检查:
HttpClient
会检查连接池中是否有可用的连接。 - 是否有可用连接:
- 如果有可用连接,则复用该连接。
- 如果没有可用连接,则创建一个新的连接,并将其加入到连接池中。
- 请求发送至目标节点:通过已有或新建的连接,将请求发送到目标节点。
- 目标节点处理请求:目标节点处理请求,并返回接口响应。
- 返回响应给客户端:通过 Kestrel 将目标节点的响应返回给客户端。