mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[GH-ISSUE #1605] [RFC]: Embedded HTTP Server for Mooncake Store Client #476
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#476
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @duhaode520 on GitHub (Mar 4, 2026).
Original GitHub issue: https://github.com/kvcache-ai/Mooncake/issues/1605
Originally assigned to: @duhaode520 on GitHub.
1. Background & Motivation
With the introduction of
DummyClient, the Mooncake Store client architecture is evolving toward a standalone deployment model. Previously, the Store client was tightly coupled with the inference framework process (e.g., vLLM, SGLang). Now,RealClientcan run as an independent long-lived process, while one or moreDummyClientinstances connect to it from inference workers via RPC.This shift makes
RealClienta first-class infrastructure component — similar to a sidecar or daemon — that needs proper observability and lifecycle management, just like the Master service. However, while the Master already has an embedded HTTP server exposing/metricsand management endpoints, the Client side lacks equivalent capability:ClientMetricalready collects rich transfer/RPC metrics, but they are only accessible via logs — Prometheus cannot pull themThe current PR (
feat/mooncake-health-check) adds a/healthendpoint toRealClient. This RFC proposes extending that HTTP server to also expose metrics, establishing a unified observability interface for the Client.2. Existing Metrics Infrastructure
The metrics collection layer is already in place — what's missing is only the HTTP exposure:
ClientMetric(always compiled, no feature flag needed) tracks:mooncake_transfer_{read,write}_bytes,mooncake_transfer_{put,get,batch_put,batch_get}_latencymooncake_client_rpc_count,mooncake_client_rpc_latency(dynamicrpc_namelabel)cluster_idstatic label viaMC_STORE_CLUSTER_IDenv varClientMetric::serialize()already outputs Prometheus text formatClientMetric::summary_metrics()already outputs a human-readable summary3. Design
3.1 Overview
Extend the existing
coro_http_serverinRealClient(introduced by the health-check PR) to serve metrics alongside health status:3.2 HTTP Endpoints
/healthapplication/json/metricstext/plain/metrics/summarytext/plainThe HTTP server is disabled by default and opt-in via configuration, maintaining backward compatibility with existing deployments.
3.3 DummyClient Considerations [Optional]
DummyClientruns inside the inference framework process and should not open its own HTTP port. Instead:RealClientis the hub for all connectedDummyClientinstances, it can aggregate and expose metrics on their behalf.get_metrics()in the Python layer so inference frameworks (vLLM, SGLang) can integrate Client metrics into their own observability stack.4. Open Questions
RealClientaggregate metrics from all connectedDummyClientinstances, or report only its own?Before submitting a new issue...
@github-actions[bot] commented on GitHub (Jun 9, 2026):
This issue has had no activity for 90 days and will be closed in 7 days if there is no further activity. Please comment or react if it should stay open.
@github-actions[bot] commented on GitHub (Jun 16, 2026):
Closing due to 3 months of inactivity. If this is still relevant, please comment and we can reopen.