ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AIBrix Console 实战指南:React 前端 + Go gRPC/REST 后端搭建与 API 全解析

AIBrix Console 实战指南:React 前端 + Go gRPC/REST 后端搭建与 API 全解析 AIBrix Console 实战指南React 前端 Go gRPC/REST 后端搭建与 API 全解析【免费下载链接】aibrixCost-efficient and pluggable Infrastructure components for GenAI inference项目地址: https://gitcode.com/GitHub_Trending/ai/aibrix导读AIBrix Console 是 AIBrix 项目的管理控制台由 React 前端Vite Tailwind Radix UI与 Go 后端gRPC grpc-gateway REST组成为 GenAI 推理基础设施提供模型目录、在线部署、批处理任务Batch Job、API Key、密钥、配额管理以及 Playground 推理代理等一站式运维能力。本文将带你完整走通 Console 的前后端本地启动流程逐项解析后端启动参数与全部 REST API 端点并结合仓库源码入口文件、服务端装配、配置加载、Protobuf 定义讲清其 gRPC/REST 双栈架构与核心数据模型帮助你快速搭建、调用并二次扩展这套管理面。一、项目结构前端与后端如何组织Console 的代码分布在仓库的apps/console/目录下入口二进制则位于仓库根目录的cmd/console/整体结构如下apps/console/ ├── web/ # React 前端Vite Tailwind Radix UI │ └── src/ # 页面、组件与前端状态 ├── api/ # 后端服务定义与实现 │ ├── proto/ # Protobuf 服务定义console/v1/console.proto │ ├── gen/ # 由 buf 生成的 gRPC/gateway 代码 │ ├── handler/ # 各 Service 的 handler 实现 │ ├── server/ # gRPC HTTP gateway 服务器装配 │ ├── middleware/ # 认证dev / OIDC / basic中间件 │ ├── planner/ # 批处理任务调度器规划循环、worker 池 │ ├── resource_manager/ # 资源管理器kubernetes / runpod / lambdacloud │ ├── deployment/ # 部署 Providerkubernetes与状态 │ ├── error_injection/ # 混沌工程错误注入 │ ├── store/ # 数据存储SQLite / MySQL含迁移脚本 │ └── config/ # 后端配置加载与校验 cmd/console/main.go # 后端入口位于仓库根目录值得注意前端目录中src/下包含 70 余个 React 组件与页面依赖了 Radix UI 全套组件、react-router-dom、recharts图表库、react-hook-form表单库等见 apps/console/web/package.json说明 Console 是一个功能完整的单页应用SPA而非简单的示例页面。二、启动前端本地开发服务器进入前端目录并安装依赖cd apps/console/web npm install npm run dev启动后前端开发服务器默认监听http://localhost:3000。package.json中还提供了npm run buildVite 生产构建与npm run testVitest 单元测试两条脚本。前端功能开关Feature Flags部分进行中的能力在线Deployments与Playground由构建期功能开关控制详见 apps/console/web/README.md 与apps/console/web/src/config/features.ts、.env.example环境变量作用VITE_ENABLE_DEPLOYMENTS设为true显示 Deployments 界面false显示 Coming SoonVITE_ENABLE_PLAYGROUND设为true显示 Playground 界面false显示 Coming Soon未设置时两者的默认行为是npm run dev下默认开启生产构建下默认关闭。若要在非 dev 构建中启用可在构建时传入变量VITE_ENABLE_DEPLOYMENTStrue VITE_ENABLE_PLAYGROUNDtrue npm run build三、构建并运行后端在仓库根目录构建make build-console该命令实际执行CGO_ENABLED0 go build -tagsnozmq -o bin/console ./cmd/console见 Makefile产物为bin/console。随后运行./bin/console启动参数FlagsFlag默认值说明--grpc-addr:50060gRPC 服务器监听地址--http-addr:8090HTTP REST gateway 监听地址--gateway-endpointhttp://localhost:8888AIBrix 网关地址用于 Playground 代理--store-uri由环境变量决定存储 URImemory://或mysql://user:passhost:3306/db--dev-modefalse启用开发便利功能当前为启动时灌入演示数据从源码看cmd/console/main.go 中所有 CLI flag 的默认值均为空字符串其语义是「显式传入时覆盖同名环境变量」真正的兜底默认值在 apps/console/api/config/config.go 中给出例如GRPC_ADDR未设置时默认:50060、HTTP_ADDR未设置时默认:8080、GATEWAY_ENDPOINT未设置时默认http://localhost:8888。因此 README 表格中的:8090与源码中的:8080差异来自两条不同的配置路径实际生效值取决于你是否显式传参或设置环境变量。启动时主进程会并行拉起两个服务器gRPC 与 HTTP gateway并监听SIGINT/SIGTERM以在 5 秒超时内优雅关闭srv.Shutdown(ctx)。核心环境变量速查后端配置优先读环境变量、再落回默认值。常用变量如下完整清单见 apps/console/api/config/config.go环境变量默认值说明STORE_URIsqlite:/tmp/aibrix-console.db存储后端SQLite 文件、:memory:或 MySQLGRPC_ADDR/HTTP_ADDR:50060/:8080两个服务器的监听地址GATEWAY_ENDPOINThttp://localhost:8888Playground 代理的目标 AIBrix 网关METADATA_SERVICE_URLhttp://localhost:8090元数据服务地址批处理/文件代理AUTH_MODEdev认证模式dev/oidc/basicSESSION_SECRET/SECRETS_ENCRYPTION_KEYdev 模式自动生成非 dev 模式下必须显式提供否则启动报错PROVISIONERkubernetes资源管理器后端PLANNING_POLICYsimple规划策略类型PLANNER_WORKER_COUNT/PLANNER_WORKER_QUEUE_SIZE10/1000规划器 worker 数与队列上限ERROR_INJECTION_ENABLEDfalse是否启用错误注入能力KUBERNETES_NAMESPACE等defaultKubernetes Provider 连接与工作负载默认值Load()还会做一系列校验PLANNER_WORKER_QUEUE_SIZE必须是正整数、METADATA_FILE_UPLOAD_TIMEOUT必须是合法且大于零的时长在非 dev 认证模式下若SESSION_SECRET或SECRETS_ENCRYPTION_KEY缺失会直接返回错误拒绝启动而 dev 模式则会用crypto/rand生成随机 32 字节十六进制值。四、REST API 端点总览后端同时暴露 gRPC:50060与 REST:8090两套接口REST API 由 Protobuf 经 grpc-gateway 自动生成HTTP 请求在 server.go 中被翻译为 gRPC 调用。官方 API 端点如下MethodPath说明GET/api/v1/models列出模型目录GET/api/v1/models/{id}获取模型详情GET/api/v1/deployments列出部署GET/api/v1/deployments/{id}获取部署POST/api/v1/deployments创建部署DELETE/api/v1/deployments/{id}删除部署GET/api/v1/jobs列出批处理任务GET/api/v1/jobs/{id}获取任务POST/api/v1/jobs创建批处理任务POST/api/v1/jobs/{id}/cancel取消批处理任务GET/api/v1/apikeys列出 API KeyPOST/api/v1/apikeys创建 API KeyDELETE/api/v1/apikeys/{id}删除 API KeyGET/api/v1/secrets列出密钥POST/api/v1/secrets创建密钥DELETE/api/v1/secrets/{id}删除密钥GET/api/v1/quotas列出配额POST/api/v1/playground/chat/completionsPlayground 对话SSE 代理除 README 表格列出的端点外从 server.go 的装配代码还能看到以下补充路由模型部署模板管理/api/v1/models/{model_id}/deployment-templates及其by-name/{name}解析接口、文件代理路由由handler.NewFileHandler注册用于向元数据服务代理文件上传、认证路由/api/v1/auth/*、GET /api/v1/config/job-capabilities前端拉取任务能力配置、GET /api/v1/health健康检查以及启用指标时的GET /api/v1/metrics。服务定义与消息模型所有服务与消息都在 console.proto 中声明主要包括DeploymentService部署的增删查Deployment消息携带base_model、replicas、gpus_per_replica、gpu_type、region、statusReady/Deploying/Failed、implementation_kindkubernetes/stormservice等字段CreateDeploymentRequest支持模板引用、实现引用、覆盖项与enable_auto_scaling、enable_multi_lora等开关。JobService批处理任务的抽象是 OpenAI Batch 的超集——除 OpenAI 字段外还包含 Console 自有字段name、created_by、model_template_name、provision_id、时间戳序列queued_at/resource_preparing_at/submitting_at等handler 会代理到元数据服务的/v1/batchesAPI 并把 OpenAI 的input_file_id/output_file_id映射为 Console 侧的input_dataset/output_dataset。ModelService模型目录Model.categories取值包括LLM、Audio、Image、Video、Vision、Embedding、Reranksserving_name是推理请求body.model必须使用的标识通常为 HuggingFace 路径或 vLLM--served-model-name。ModelDeploymentTemplateService部署模板 CRUD 与按(model_id, name, version)解析version 为空时取该 name 下最新的active版本模板spec由引擎vLLM/SGLang/TRT-LLM/LMDeploy/Mock、模型源HuggingFace/S3/本地、加速器、并行度TP/PP/DP/EP/SP/CP、量化、engine_args键值对等构成。APIKeyService / SecretService / QuotaService密钥与配额管理。InjectionService错误注入ERROR_INJECTION_ENABLEDtrue时注册支持列举注入点、读写全局注入配置、清理配置与查询任务执行轨迹用于混沌工程与调试。五、后端装配原理gRPC 与 REST 如何打通理解 Console 后端的关键在于 apps/console/api/server/server.go 的装配流程启动顺序main()创建server.New(cfg)后先用 goroutine 启动 gRPC 服务StartGRPC再启动 HTTP gatewayStartHTTP内部通过 gRPC 客户端 dial 到grpcAddr。依赖装配New()内依次初始化 metrics 子系统、错误注入器可选、存储store.NewFromURI按 URI scheme 选择 SQLite/MySQL见 apps/console/api/store/factory.go、认证中间件与 Kubernetes 客户端 ProviderStartGRPC中再构造 OpenAI Batch 客户端指向元数据服务、资源管理器与规划器plannerimpl.NewPlanner并注册全部 gRPC handler同时开启 gRPC reflection 便于调试。dev 模式DevModetrue时若 store 实现了LoadDemoData()接口则灌入演示数据同时 klog 日志级别默认提到-v2便于观察请求/响应载荷main.go。HTTP 网关扩展路由除自动生成的 grpc-gateway 路由外StartHTTP还以mux.HandlePath手工注册了 Playground SSE 代理POST /api/v1/playground/chat/completions、文件代理、ModelAdapter BFF、认证、健康检查等自定义路由。中间件链与静态文件最终 HTTP handler 链为 CORS → Auth → 路由且支持StaticFilesDir配置——非/api路径命中真实文件则直接服务否则回退到index.html从而让 React Router 的深链接如/models/abc、/batch/job-xyz在硬刷新时也能正确渲染。六、数据存储从 SQLite 到 MySQL后端存储通过STORE_URI选择后端apps/console/api/config/config.go 中的注释给出了全部合法形态URI说明sqlite:/tmp/aibrix-console.db文件型 SQLite本地开发默认sqlite:/var/lib/aibrix/console.db绝对路径 SQLitesqlite::memory:内存 SQLitememory://内存 SQLite 的别名mysql://user:passhost:3306/aibrix生产环境 MySQLstore 层按模型拆分api_key、deployment、job、model、model_deployment_template、provision_result、quota、secret 等见 apps/console/api/store/models并提供 SQLite 迁移脚本001_initial.sql。值得留意的是store 的构造还接收SecretsEncryptionKey用于对存储的密钥值做 AES-256 加密密钥为 32 字节十六进制。七、修改 Protobuf 后重新生成代码若修改了apps/console/api/proto/下的服务定义需要重新生成 gRPC/gateway 代码make generate-console-proto该目标实际执行cd apps/console/api buf generate见 Makefile生成的 Go 代码落在apps/console/api/gen/console/v1/console.pb.go、console.pb.gw.go、console_grpc.pb.go。环境要求安装 buf、buf.gen.yaml 与buf.lock。八、本地联调与生产部署要点本地联调流程先按第三节启动后端默认:50060gRPC /:8080HTTP再按第二节启动前端localhost:3000Vite 开发服务器自带代理能力。Playground 若要真正发起推理需保证GATEWAY_ENDPOINT指向运行中的 AIBrix 网关默认http://localhost:8888。认证模式AUTH_MODEdev只适合本地生产环境应使用oidc或basic此时必须显式提供SESSION_SECRET与SECRETS_ENCRYPTION_KEY。OIDC 模式支持OIDC_ISSUER_URL、OIDC_CLIENT_ID/SECRET、OIDC_REDIRECT_URL、OIDC_GROUPS_CLAIM、OIDC_ADMIN_GROUPS、OIDC_ADMIN_EMAILS、OIDC_SIGNING_ALG默认 RS256等配置未命中 admin 组的用户统一获得viewer角色。存储选型生产建议使用 MySQLdev模式自动灌入演示数据共享/生产环境默认空库启动避免脏数据。静态文件托管生产可将前端npm run build产物目录通过STATIC_FILES_DIR交给后端托管后端会自动做 SPA fallback省去单独部署 Nginx 的步骤。结语AIBrix Console 是一个典型的「React SPA Go gRPC grpc-gateway REST」双层架构管理面前端提供模型目录、部署、批处理、Key/Secret/配额与 Playground 等完整交互界面后端以 Protobuf 为单一事实来源自动生成 REST 网关并集成了规划器、资源管理器、错误注入与多模式认证等生产级能力。本文从启动命令、参数表、API 清单到源码装配链路已为你梳理出完整的上手路径后续无论是接入新存储、扩展新 Service还是调整认证策略都可以沿着 console.proto →make generate-console-proto→ handler 注册 → 前端 Feature Flag 这条链路快速落地。【免费下载链接】aibrixCost-efficient and pluggable Infrastructure components for GenAI inference项目地址: https://gitcode.com/GitHub_Trending/ai/aibrix创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表