Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

maggot-code/bifrost

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

AI Ops 网页终端 - 服务架构设计文档

版本:2.0 更新时间:2026年01月25日 16:00:00


1. 项目愿景

该系统定位为AI辅助的DevOps(AI Ops)平台,核心目标是降低运维工作量,同时通过服务端中间层屏蔽前端与被操作设备的直接关联,实现Web端对远端设备的交互式操作能力,具体通过以下能力实现:

  • 支持AI智能体(AI Agent)基于只读命令完成诊断推理;
  • 会话生命周期内维持与远端设备的SSH长连接并复用PTY伪终端,支持交互式运维操作;
  • 前端WebSocket与服务端PTY双向实时同步数据流,实现Web端对远端设备的沉浸式操作体验;
  • 向运维人员返回结构化/实时流式的执行结果;
  • 全流程保留操作痕迹,确保可追溯性。

核心指标:支持数百个并发SSH长连接会话,会话内PTY伪终端复用无性能损耗 架构策略:先落地模块化单体架构,预留演进为微服务架构的路径

本文档聚焦于交付"生产就绪"的初始版本,同时明确模块边界与长期演进路径,核心适配"会话级SSH长连接+PTY交互式操作"的核心诉求。


2. 核心架构原则

  1. 模块边界清晰(为未来服务拆分预留接口,无侵入拆分);
  2. 接口驱动设计(仓储层、网关层抽象解耦);
  3. 依赖注入(基于Kratos框架实现);
  4. 会话生命周期隔离(避免跨会话资源竞争,SSH长连接/PTY与会话强绑定);
  5. 可观测性就绪(预置链路追踪、指标监控埋点,新增SSH连接/PTY数据流监控);
  6. 最小可行生产架构(安全加固分阶段迭代)。

3. 核心模块结构

/cmd
 /server // 服务启动入口
/internal
 /gateway // HTTP + WebSocket 接入层(外部唯一入口,新增WS与PTY双向桥接)
 /session // 会话生命周期管理(内存态+持久态,新增SSH长连接/PTY生命周期绑定)
 /device // SSH客户端网关(核心改造:SSH长连接封装+PTY伪终端管理)
 /command // 命令流水线(校验/排队/执行协调,适配交互式命令流转)
 /agent // AI智能体适配器(对接AI推理引擎)
 /audit // 审计事件记录(操作/执行/异常事件,新增SSH连接/PTY操作审计)
 /auth // 认证&RBAC(预留模块)
 /data
 /repository // 存储接口层(抽象存储能力)
 /mysql // MySQL存储实现(会话/审计/命令数据)
 /telemetry // 链路追踪&指标监控(新增SSH连接时长、PTY数据流等指标)
/api // Protobuf协议定义(微服务演进边界)

3.1 核心模块能力调整说明

模块 新增/调整核心能力
Device 1. 封装会话级SSH长连接,替代原"单命令单次连接";2. 实现PTY伪终端分配/管理/数据流转发;3. 提供SSH连接/PTY的生命周期管控(创建/释放)
Session 1. 会话状态流转关联SSH长连接/PTY的创建/释放;2. 缓存会话ID与SSH长连接实例的映射关系;3. 基于Context管控会话+SSH连接的超时/取消
Gateway 1. 强化WebSocket双向通信能力,实现"前端输入→PTY stdin""PTY stdout/stderr→前端"的实时转发;2. 桥接WS与Device模块的PTY数据流
Audit 新增SSH连接建立/释放、PTY操作、WS数据流等审计维度
Telemetry 新增SSH长连接数、PTY数据流吞吐量、连接异常率、会话空闲超时率等监控指标

4. 模块依赖关系

4.1 依赖关系图(Mermaid)

graph TD
 A["Gateway<br/>HTTP/WS API(双向桥接)"] --> B["Session<br/>生命周期管理(SSH绑定)"]
 B --> C["Command<br/>服务(交互式适配)"]
 B --> D["Device<br/>(SSH长连接+PTY)"]
 C --> E["Agent<br/>适配器"]
 E --> F["Audit<br/>审计(SSH/PTY扩展)"]
 D --> F
 F --> G["Repository<br/>(MySQL)"]
 
 style A fill:#f9f,stroke:#333,stroke-width:2px
 style D fill:#ff9,stroke:#333,stroke-width:2px
 style G fill:#9ff,stroke:#333,stroke-width:2px
Loading

4.2 依赖关系说明

  • 网关(Gateway)是唯一外部入口,所有请求均通过该模块接入,新增WS与PTY的双向数据流桥接能力;
  • 会话(Session)模块主导生命周期管理,维护内存中的会话状态,同时绑定SSH长连接/PTY的生命周期;
  • 命令(Command)模块负责命令的校验、排队与执行协调,适配交互式命令的流转逻辑(不再局限于单条只读命令);
  • 设备(Device)模块封装SSH长连接+PTY伪终端能力,处理与目标机器的交互式SSH通信,是本次改造的核心模块;
  • 智能体(Agent)模块对接AI推理引擎,生成诊断命令,命令执行复用会话内的SSH长连接;
  • 审计(Audit)模块统一持久化系统事件,新增SSH连接/PTY操作、WS数据流等审计维度;
  • 仓储(Repository)层抽象存储逻辑,底层基于MySQL实现(可扩展其他存储)。

该结构支持后续将Session、Command、Agent等模块无侵入拆分为独立微服务,仅需将SSH连接状态缓存扩展至分布式存储(如Redis)即可。


5. 核心系统交互时序图

5.1 会话创建+SSH长连接建立流程

sequenceDiagram
 participant User as 前端用户
 participant Gateway as 网关(HTTP/WS)
 participant SessionService as 会话服务
 participant Device as 设备(SSH+PTY)
 participant RemoteDevice as 远端设备
 participant Repository as 仓储(MySQL)
 # 1. 会话初始化
 User->>Gateway: 发起会话创建请求(含设备信息)
 Gateway->>Gateway: 校验请求合法性(权限/参数)
 Gateway->>SessionService: 调用会话创建接口
 SessionService->>Repository: 持久化会话元数据(ID/状态/创建时间/设备信息)
 Repository-->>SessionService: 元数据存储完成
 SessionService->>Repository: 更新会话状态为INIT
 # 2. SSH长连接+PTY建立
 SessionService->>Device: 基于会话ID创建SSH长连接+分配PTY
 Device->>RemoteDevice: SSH握手+PTY分配+启动Shell
 RemoteDevice-->>Device: SSH连接+PTY就绪
 Device-->>SessionService: SSH+PTY创建成功(返回连接实例)
 SessionService->>Repository: 更新会话状态为ACTIVE
 # 3. WS连接建立
 SessionService-->>Gateway: 返回会话创建成功(含Session ID)
 Gateway-->>User: 会话创建完成,返回Session ID
 User->>Gateway: 基于Session ID建立WebSocket连接
 Gateway->>SessionService: 绑定WS连接与会话ID
 Gateway-->>User: WebSocket连接就绪,可开始交互式操作
Loading

5.2 交互式操作执行流程(复用SSH长连接)

sequenceDiagram
 participant User as 前端用户
 participant Gateway as 网关(WS)
 participant SessionService as 会话服务
 participant Device as 设备(SSH+PTY)
 participant RemoteDevice as 远端设备
 participant Audit as 审计模块
 participant Repository as 仓储(MySQL)
 # 1. 前端操作指令转发
 loop 前端持续输入交互式操作
 User->>Gateway: WS发送操作指令(如cd /var/log、top、vim等)
 Gateway->>SessionService: 获取会话绑定的SSH+PTY实例
 SessionService-->>Gateway: 返回SSH+PTY实例
 Gateway->>Device: 将指令写入PTY stdin
 Device->>RemoteDevice: PTY转发指令至远端设备
 end
 # 2. 设备输出实时推送
 loop 设备输出实时回流
 RemoteDevice->>Device: 返回操作输出(stdout/stderr)
 Device->>Gateway: PTY输出转发至WS
 Gateway->>User: WS推送实时输出(如命令结果、终端界面)
 Device->>Audit: 上报PTY数据流事件
 Audit->>Repository: 持久化审计记录
 end
 # 3. 会话关闭(释放资源)
 User->>Gateway: 主动关闭会话/会话空闲超时
 Gateway->>SessionService: 触发会话关闭
 SessionService->>Device: 释放SSH长连接+PTY(关闭连接/终端)
 Device->>RemoteDevice: 关闭SSH连接+PTY
 SessionService->>Repository: 更新会话状态为CLOSED
 SessionService->>Audit: 上报会话关闭+SSH释放事件
 Audit->>Repository: 持久化审计记录
 Gateway-->>User: 关闭WebSocket连接,释放前端资源
Loading

6. 会话生命周期模型

6.1 状态流转图(Mermaid)

stateDiagram-v2
 [*] --> INIT: 发起会话创建
 INIT --> ACTIVE: 会话创建完成+SSH长连接+PTY建立+WS连接建立
 ACTIVE --> EXECUTING: 用户发送交互式操作指令
 EXECUTING --> IDLE: 单次操作执行完成(SSH+PTY仍保留)
 ACTIVE --> IDLE: 无操作进入空闲(SSH+PTY仍保留)
 IDLE --> ACTIVE: 接收新用户指令(复用SSH+PTY)
 IDLE --> TIMEOUT: 空闲超时(可配置)
 ACTIVE --> CLOSED: 用户主动关闭
 EXECUTING --> CLOSED: 用户主动关闭
 IDLE --> CLOSED: 用户主动关闭
 TIMEOUT --> CLOSED: 超时后自动关闭
 CLOSED --> [*]: 释放会话资源(SSH长连接/PTY/WS连接/内存)
Loading

6.2 状态说明(新增SSH+PTY关联逻辑)

状态 描述 SSH+PTY状态
INIT 初始化中(会话元数据正在创建/持久化,准备建立SSH连接) 待创建
ACTIVE 活跃态(WS已连接,SSH长连接+PTY就绪,可接收指令) 已建立,处于就绪状态
EXECUTING 执行中(交互式指令正在PTY→SSH通道执行) 已建立,数据流实时传输
IDLE 空闲态(无指令执行,等待用户操作) 已建立,保持连接等待复用
CLOSED 关闭态(用户主动/超时关闭,资源已释放) 已释放(SSH连接关闭+PTY终止)
TIMEOUT 超时态(空闲超时触发,最终转为CLOSED) 待释放

6.3 并发模型(强化SSH+PTY隔离)

  • 每个会话绑定独立goroutine + 独立SSH长连接 + 独立PTY伪终端,避免跨会话资源竞争;
  • 基于Context实现会话+SSH连接+PTY的统一取消/超时控制;
  • 内置空闲超时检测(可配置超时阈值,默认30分钟),超时后自动释放SSH+PTY资源;
  • 限制单实例最大SSH长连接数(默认500),避免资源耗尽。

7. 最小可用生产版本范围

7.1 V1版本包含能力(适配新需求)

  • 模块化单体架构(预留微服务拆分接口);
  • MySQL持久化(会话/审计/命令/SSH连接日志数据);
  • SSH长连接+PTY伪终端管理,支持会话内连接复用;
  • WebSocket与PTY双向实时数据流同步,支持交互式操作(如cd、top、vim等);
  • AI诊断命令生成与确认执行(复用SSH长连接);
  • 基础可观测性(链路追踪/指标埋点,含SSH连接/PTY数据流监控);
  • 全流程审计(操作/执行/SSH连接/PTY操作留痕)。

7.2 延后至后续版本的能力

  • 高级安全策略(命令黑白名单/IP白名单/PTY操作权限管控);
  • 多租户隔离;
  • 分布式会话路由+Redis缓存SSH连接状态;
  • SSH连接池优化(预创建/复用连接);
  • 高级合规管控(操作审批/留痕校验);
  • PTY终端大小动态调整。

8. 演进路线图

阶段 核心目标 关键动作
阶段1 稳定的模块化单体架构(支持SSH长连接+PTY交互式操作) 完成V1版本开发、测试、生产落地;实现核心模块改造(Device/Session/Gateway);接入基础监控/审计
阶段2 水平扩展 网关层改为无状态 + 会话粘性路由;SSH连接状态缓存至Redis;优化并发连接管控
阶段3 拆分会话服务 将Session模块拆分为独立微服务;实现分布式会话管理+SSH连接状态同步
阶段4 拆分命令/智能体服务 将Command、Agent模块拆分为独立微服务;扩展PTY高级能力(终端大小调整、多窗口)
阶段5 全链路高可用 实现SSH连接故障自动重连;PTY会话灾备;多实例负载均衡

9. 部署建议

  • 部署形态:容器化部署(Docker镜像);
  • 编排平台:适配Kubernetes(提供Deployment/Service配置);
  • 存储:
    • 主数据库:MySQL(存储核心业务数据:会话、审计、命令);
    • 缓存(必选):Redis(缓存会话ID与SSH连接实例映射、会话状态);
  • 监控:Prometheus + Grafana(监控指标:SSH长连接数、PTY数据流吞吐量、连接异常率、会话超时率、WS连接数);
  • 资源配置:单实例建议CPU ≥ 2核,内存 ≥ 4G(支撑500并发SSH长连接)。

10. 核心设计补充(SSH+PTY关键实现)

10.1 SSH长连接+PTY核心封装逻辑

Device模块核心封装 SSHSession结构体,实现会话级SSH连接+PTY的生命周期管理,关键能力:

  • 绑定会话ID,确保连接与会话生命周期强绑定;
  • 支持PTY伪终端的分配、Shell启动、数据流(stdin/stdout/stderr)转发;
  • 基于Context实现连接的超时/取消控制;
  • 提供连接释放、异常回收的兜底逻辑。

0.2 双向数据流同步逻辑

Gateway模块通过WebSocket实现前端与PTY的双向同步:

  • 前端输入(文本/二进制)→ WS → PTY stdin → 远端设备;
  • 远端设备输出 → PTY stdout/stderr → WS → 前端实时展示;
  • 异常场景(SSH断开、PTY异常)→ 实时推送至前端,并触发会话关闭流程。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /