
1. 顶层:外部访问与路由层
-
入口:最上方的"访问"是外部请求(如用户/客户端的HTTP/gRPC请求)。
-
路由(router) :请求首先到达
port: 8090的路由服务。它负责负载均衡 ,将请求分发到下游的Prefill或Decode服务(图中显示Prefill 0/1、Decode 0/1两个实例组)。
2. 中间层:业务逻辑服务(Prefill / Decode)
Prefill 和 Decode 是两类核心业务服务(可能是"预填充"和"解码"类的计算任务),各有 2个实例(0、1) ,体现水平扩展设计。
(1)router → Prefill/Decode 的通信端口
-
Prefill 0/1对外(router访问)的端口:30003(两个实例共享同一端口,说明是"端口复用",通过实例ID区分)。 -
Decode 0/1对外(router访问)的端口:30002(同理,端口复用,实例0/1)。
(2)Prefill ↔ Decode 的内部通信端口
-
disaggregation_bootstrap_port(图中标注为PREFILL_PORT):- Prefill 实例之间、Prefill → Decode 实例的通信端口:
8999(双向箭头表示互相通信,比如Prefill计算后把中间结果发给Decode)。
- Prefill 实例之间、Prefill → Decode 实例的通信端口:
-
dist_init_addr(图中标注为DIST_PORT):- Prefill 内部(0↔1)、Decode 内部(0↔1)的通信端口:
6000(Prefill实例间)、6001(Decode实例间)(双向箭头表示实例间同步/协作)。
- Prefill 内部(0↔1)、Decode 内部(0↔1)的通信端口:
(3)实例区分:RANK
RANK字段:Prefill 0/1、Decode 0/1的RANK分别为0和1,用于服务内部区分实例(类似"节点ID",在多实例环境下标识自身身份,比如选举、分片归属)。
3. 底层:元数据与消息中间件
这两个是系统的"基础设施",为业务服务提供状态管理 和异步通信能力:
-
etcd(存储):
-
端口:
2379(etcd默认客户端端口,用于存储全局元数据,如服务注册、配置、分布式锁、数据分片位置等)。 -
作用:保证多实例/多服务的状态一致性(基于Raft协议),是"分布式系统的脑"。
-
-
NATS(消息):
-
端口:
4222(客户端连接端口)、8222(监控/管理端口)。 -
作用:作为消息总线 ,实现服务间的异步通信(如Prefill处理完任务后,通过NATS发消息通知Decode;或事件驱动的流程触发)。
-
4. 特殊配置:1PID 不需要的两项
图右侧注释"1PID 不需要这两项",指的是 dist_init_addr(DIST_PORT)和 RANK。
- "1PID"可能是指单进程/单实例部署模式(或特定的简化部署场景)。此时不需要"实例间通信端口(DIST_PORT)"和"实例区分(RANK)",因为只有一个实例,无需多实例协作或身份标识。
整体流程总结
-
外部请求 → 路由(8090)→ 负载均衡到 Prefill/Decode(30003/30002)。
-
Prefill/Decode 实例间通过
8999(跨服务)、6000/6001(同服务内)通信,完成业务逻辑。 -
系统依赖
etcd(2379)存储全局状态(如服务注册、分片信息),依赖NATS(4222/8222)做异步消息传递。 -
若为"1PID"单实例场景,可省略
DIST_PORT和RANK配置。