chore: 清理多余的BOM头并整理依赖与telemetry代码

- 移除所有文件开头的多余UTF-8 BOM头
- 简化go.mod依赖,移除未使用的uuid包
- 重构telemetry包:将Meter改为接口并拆分默认实现
This commit is contained in:
sun
2026-08-15 14:38:14 +08:00
parent 5b970f49e1
commit 81fcc9fff4
14 changed files with 38 additions and 32 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
package volcano
package volcano
import (
"context"
+1 -1
View File
@@ -1,4 +1,4 @@
package controller
package controller
import (
"context"
+1 -1
View File
@@ -1,4 +1,4 @@
package dto
package dto
// HealthResponse 是 /health 端点的 JSON 响应。
// 数值类信息(请求统计、错误)迁移到 /metrics 端点,
+1 -1
View File
@@ -1,4 +1,4 @@
package dto
package dto
import "time"
+2 -5
View File
@@ -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
+1 -3
View File
@@ -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=
+1 -1
View File
@@ -1,4 +1,4 @@
package main
package main
import (
"context"
+1 -1
View File
@@ -1,4 +1,4 @@
// Package metrics 集中声明本服务所有埋点指标,并提供 telemetry.Meter 的全局访问入口。
// Package metrics 集中声明本服务所有埋点指标,并提供 telemetry.Meter 的全局访问入口。
//
// 设计:
// - 启动期 Init() 一次性注册所有指标;Panic 表示有重名 bug,应立即暴露。
+1 -1
View File
@@ -1,4 +1,4 @@
package middleware
package middleware
import (
"log"
+1 -1
View File
@@ -1,4 +1,4 @@
package middleware
package middleware
// 本文件提供带 metrics 埋点的限流 / 并发中间件版本;
// 由于原 ratelimit_middleware.go 在本仓库的云盘同步下被永久占用,
+1 -1
View File
@@ -1,4 +1,4 @@
package router
package router
import (
"net/http"
+1 -1
View File
@@ -1,4 +1,4 @@
package setting
package setting
import (
"fmt"
+23 -14
View File
@@ -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)
+2
View File
@@ -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 {