From 81fcc9fff42b8dfadc0a0bd2822a5d30ea329481 Mon Sep 17 00:00:00 2001 From: "3371392206@qq.com" <3371392206@qq.com> Date: Sat, 15 Aug 2026 14:38:14 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B8=85=E7=90=86=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84BOM=E5=A4=B4=E5=B9=B6=E6=95=B4=E7=90=86=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E4=B8=8Etelemetry=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除所有文件开头的多余UTF-8 BOM头 - 简化go.mod依赖,移除未使用的uuid包 - 重构telemetry包:将Meter改为接口并拆分默认实现 --- adapter/volcano/synthesis.go | 2 +- controller/tts.go | 2 +- dto/health.go | 2 +- dto/tts.go | 2 +- go.mod | 7 ++---- go.sum | 4 +-- main.go | 2 +- metrics/metrics.go | 2 +- middleware/ratelimit.go | 2 +- middleware/ratelimit_instrumented.go | 2 +- router/router.go | 2 +- setting/config.go | 2 +- telemetry/meter.go | 37 +++++++++++++++++----------- telemetry/noop.go | 2 ++ 14 files changed, 38 insertions(+), 32 deletions(-) diff --git a/adapter/volcano/synthesis.go b/adapter/volcano/synthesis.go index ecca9a4..0e900ea 100644 --- a/adapter/volcano/synthesis.go +++ b/adapter/volcano/synthesis.go @@ -1,4 +1,4 @@ -package volcano +package volcano import ( "context" diff --git a/controller/tts.go b/controller/tts.go index 49a409f..645478c 100644 --- a/controller/tts.go +++ b/controller/tts.go @@ -1,4 +1,4 @@ -package controller +package controller import ( "context" diff --git a/dto/health.go b/dto/health.go index c479603..5d844d9 100644 --- a/dto/health.go +++ b/dto/health.go @@ -1,4 +1,4 @@ -package dto +package dto // HealthResponse 是 /health 端点的 JSON 响应。 // 数值类信息(请求统计、错误)迁移到 /metrics 端点, diff --git a/dto/tts.go b/dto/tts.go index 402eb1f..70e595a 100644 --- a/dto/tts.go +++ b/dto/tts.go @@ -1,4 +1,4 @@ -package dto +package dto import "time" diff --git a/go.mod b/go.mod index 0da2762..6d5b69f 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,5 @@ -module github.com/volcano-tts/tts-api +module github.com/volcano-tts/tts-api go 1.26 -require ( - github.com/google/uuid v1.6.0 - github.com/gorilla/mux v1.8.1 -) +require github.com/gorilla/mux v1.8.1 diff --git a/go.sum b/go.sum index c9af527..82845af 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,2 @@ -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= diff --git a/main.go b/main.go index fd7d392..25dc991 100644 --- a/main.go +++ b/main.go @@ -1,4 +1,4 @@ -package main +package main import ( "context" diff --git a/metrics/metrics.go b/metrics/metrics.go index 8041eed..334505d 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -1,4 +1,4 @@ -// Package metrics 集中声明本服务所有埋点指标,并提供 telemetry.Meter 的全局访问入口。 +// Package metrics 集中声明本服务所有埋点指标,并提供 telemetry.Meter 的全局访问入口。 // // 设计: // - 启动期 Init() 一次性注册所有指标;Panic 表示有重名 bug,应立即暴露。 diff --git a/middleware/ratelimit.go b/middleware/ratelimit.go index 7baee32..3fafc5d 100644 --- a/middleware/ratelimit.go +++ b/middleware/ratelimit.go @@ -1,4 +1,4 @@ -package middleware +package middleware import ( "log" diff --git a/middleware/ratelimit_instrumented.go b/middleware/ratelimit_instrumented.go index 3cd7e8b..ec988ec 100644 --- a/middleware/ratelimit_instrumented.go +++ b/middleware/ratelimit_instrumented.go @@ -1,4 +1,4 @@ -package middleware +package middleware // 本文件提供带 metrics 埋点的限流 / 并发中间件版本; // 由于原 ratelimit_middleware.go 在本仓库的云盘同步下被永久占用, diff --git a/router/router.go b/router/router.go index 4432fa4..e06a38d 100644 --- a/router/router.go +++ b/router/router.go @@ -1,4 +1,4 @@ -package router +package router import ( "net/http" diff --git a/setting/config.go b/setting/config.go index b6dd083..d1f5ea1 100644 --- a/setting/config.go +++ b/setting/config.go @@ -1,4 +1,4 @@ -package setting +package setting import ( "fmt" diff --git a/telemetry/meter.go b/telemetry/meter.go index 46be864..12f178c 100644 --- a/telemetry/meter.go +++ b/telemetry/meter.go @@ -2,28 +2,39 @@ package telemetry import "net/http" -// Meter 是 telemetry 的高层入口。所有业务埋点都通过它创建指标; -// 测试时可替换为 NoopMeter 或带缓冲的自定义实现。 -type Meter struct { +// Meter 是 telemetry 的高层入口,提供 Counter / Gauge / Histogram 的构造方法。 +// 启动时调用 NewMeter() 得到默认实现,测试时可换成 NoopMeter。 +// +// 设计:抽象成 interface 是为了在测试或禁用观测时能无侵入替换实现; +// 真正的注册逻辑全部委托给内部 *Registry。 +type Meter interface { + Handler() http.Handler + Registry() *Registry + NewCounter(name, help string, labelNames ...string) *Counter + NewGauge(name, help string, labelNames ...string) *Gauge + NewHistogram(name, help string, buckets []float64, labelNames ...string) *Histogram +} + +// RealMeter 是 Meter 的默认实现,内部维护一个 *Registry。 +type RealMeter struct { reg *Registry } -// NewMeter 创建默认实现。 -func NewMeter() *Meter { - return &Meter{reg: newRegistry()} +// NewMeter 构造默认 Meter 实现。 +func NewMeter() Meter { + return &RealMeter{reg: newRegistry()} } -// Handler 返回 /metrics 端点的 http.Handler。 -func (m *Meter) Handler() http.Handler { return m.reg.Handler() } +func (m *RealMeter) Handler() http.Handler { return m.reg.Handler() } // Registry 暴露给特殊用例(如测试断言),生产代码不应使用。 -func (m *Meter) Registry() *Registry { return m.reg } +func (m *RealMeter) Registry() *Registry { return m.reg } // NewCounter 注册并返回一个 Counter。 // - name 指标名(Prometheus 风格,如 "tts_request_total") // - help 帮助文本 // - labelNames 注册时锁定的 label key 集合,运行期不可变 -func (m *Meter) NewCounter(name, help string, labelNames ...string) *Counter { +func (m *RealMeter) NewCounter(name, help string, labelNames ...string) *Counter { c := newCounter(name, help, labelNames) if err := m.reg.register(name, c); err != nil { // 注册重名是启动期 bug,直接 panic 让问题在启动时暴露。 @@ -32,8 +43,7 @@ func (m *Meter) NewCounter(name, help string, labelNames ...string) *Counter { return c } -// NewGauge 同 NewCounter。 -func (m *Meter) NewGauge(name, help string, labelNames ...string) *Gauge { +func (m *RealMeter) NewGauge(name, help string, labelNames ...string) *Gauge { g := newGauge(name, help, labelNames) if err := m.reg.register(name, g); err != nil { panic(err) @@ -41,8 +51,7 @@ func (m *Meter) NewGauge(name, help string, labelNames ...string) *Gauge { return g } -// NewHistogram 同 NewCounter,额外接受桶上界(不含 +Inf,+Inf 由实现自动追加)。 -func (m *Meter) NewHistogram(name, help string, buckets []float64, labelNames ...string) *Histogram { +func (m *RealMeter) NewHistogram(name, help string, buckets []float64, labelNames ...string) *Histogram { h := newHistogram(name, help, buckets, labelNames) if err := m.reg.register(name, h); err != nil { panic(err) diff --git a/telemetry/noop.go b/telemetry/noop.go index 5b06539..c8e56f8 100644 --- a/telemetry/noop.go +++ b/telemetry/noop.go @@ -5,6 +5,8 @@ import "net/http" // NoopMeter 是一个不采集、不输出的 Meter,用于单元测试或禁用观测的场景。 // 返回的 Counter / Gauge / Histogram 实例不会被注册到任何 Registry, // 它们的 Inc/Add/Observe 调用在本进程内没有可见效果(每次返回新的空实例)。 +// +// 实现 Meter 接口。 type NoopMeter struct{} func (NoopMeter) NewCounter(string, string, ...string) *Counter {