chore: 清理多余的BOM头并整理依赖与telemetry代码
- 移除所有文件开头的多余UTF-8 BOM头 - 简化go.mod依赖,移除未使用的uuid包 - 重构telemetry包:将Meter改为接口并拆分默认实现
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package volcano
|
package volcano
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package dto
|
package dto
|
||||||
|
|
||||||
// HealthResponse 是 /health 端点的 JSON 响应。
|
// HealthResponse 是 /health 端点的 JSON 响应。
|
||||||
// 数值类信息(请求统计、错误)迁移到 /metrics 端点,
|
// 数值类信息(请求统计、错误)迁移到 /metrics 端点,
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package dto
|
package dto
|
||||||
|
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
module github.com/volcano-tts/tts-api
|
module github.com/volcano-tts/tts-api
|
||||||
|
|
||||||
go 1.26
|
go 1.26
|
||||||
|
|
||||||
require (
|
require github.com/gorilla/mux v1.8.1
|
||||||
github.com/google/uuid v1.6.0
|
|
||||||
github.com/gorilla/mux v1.8.1
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -1,4 +1,2 @@
|
|||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
|
||||||
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/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// Package metrics 集中声明本服务所有埋点指标,并提供 telemetry.Meter 的全局访问入口。
|
// Package metrics 集中声明本服务所有埋点指标,并提供 telemetry.Meter 的全局访问入口。
|
||||||
//
|
//
|
||||||
// 设计:
|
// 设计:
|
||||||
// - 启动期 Init() 一次性注册所有指标;Panic 表示有重名 bug,应立即暴露。
|
// - 启动期 Init() 一次性注册所有指标;Panic 表示有重名 bug,应立即暴露。
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
// 本文件提供带 metrics 埋点的限流 / 并发中间件版本;
|
// 本文件提供带 metrics 埋点的限流 / 并发中间件版本;
|
||||||
// 由于原 ratelimit_middleware.go 在本仓库的云盘同步下被永久占用,
|
// 由于原 ratelimit_middleware.go 在本仓库的云盘同步下被永久占用,
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package setting
|
package setting
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|||||||
+23
-14
@@ -2,28 +2,39 @@ package telemetry
|
|||||||
|
|
||||||
import "net/http"
|
import "net/http"
|
||||||
|
|
||||||
// Meter 是 telemetry 的高层入口。所有业务埋点都通过它创建指标;
|
// Meter 是 telemetry 的高层入口,提供 Counter / Gauge / Histogram 的构造方法。
|
||||||
// 测试时可替换为 NoopMeter 或带缓冲的自定义实现。
|
// 启动时调用 NewMeter() 得到默认实现,测试时可换成 NoopMeter。
|
||||||
type Meter struct {
|
//
|
||||||
|
// 设计:抽象成 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
|
reg *Registry
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewMeter 创建默认实现。
|
// NewMeter 构造默认 Meter 实现。
|
||||||
func NewMeter() *Meter {
|
func NewMeter() Meter {
|
||||||
return &Meter{reg: newRegistry()}
|
return &RealMeter{reg: newRegistry()}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handler 返回 /metrics 端点的 http.Handler。
|
func (m *RealMeter) Handler() http.Handler { return m.reg.Handler() }
|
||||||
func (m *Meter) Handler() http.Handler { return m.reg.Handler() }
|
|
||||||
|
|
||||||
// Registry 暴露给特殊用例(如测试断言),生产代码不应使用。
|
// Registry 暴露给特殊用例(如测试断言),生产代码不应使用。
|
||||||
func (m *Meter) Registry() *Registry { return m.reg }
|
func (m *RealMeter) Registry() *Registry { return m.reg }
|
||||||
|
|
||||||
// NewCounter 注册并返回一个 Counter。
|
// NewCounter 注册并返回一个 Counter。
|
||||||
// - name 指标名(Prometheus 风格,如 "tts_request_total")
|
// - name 指标名(Prometheus 风格,如 "tts_request_total")
|
||||||
// - help 帮助文本
|
// - help 帮助文本
|
||||||
// - labelNames 注册时锁定的 label key 集合,运行期不可变
|
// - 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)
|
c := newCounter(name, help, labelNames)
|
||||||
if err := m.reg.register(name, c); err != nil {
|
if err := m.reg.register(name, c); err != nil {
|
||||||
// 注册重名是启动期 bug,直接 panic 让问题在启动时暴露。
|
// 注册重名是启动期 bug,直接 panic 让问题在启动时暴露。
|
||||||
@@ -32,8 +43,7 @@ func (m *Meter) NewCounter(name, help string, labelNames ...string) *Counter {
|
|||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGauge 同 NewCounter。
|
func (m *RealMeter) NewGauge(name, help string, labelNames ...string) *Gauge {
|
||||||
func (m *Meter) NewGauge(name, help string, labelNames ...string) *Gauge {
|
|
||||||
g := newGauge(name, help, labelNames)
|
g := newGauge(name, help, labelNames)
|
||||||
if err := m.reg.register(name, g); err != nil {
|
if err := m.reg.register(name, g); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@@ -41,8 +51,7 @@ func (m *Meter) NewGauge(name, help string, labelNames ...string) *Gauge {
|
|||||||
return g
|
return g
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewHistogram 同 NewCounter,额外接受桶上界(不含 +Inf,+Inf 由实现自动追加)。
|
func (m *RealMeter) NewHistogram(name, help string, buckets []float64, labelNames ...string) *Histogram {
|
||||||
func (m *Meter) NewHistogram(name, help string, buckets []float64, labelNames ...string) *Histogram {
|
|
||||||
h := newHistogram(name, help, buckets, labelNames)
|
h := newHistogram(name, help, buckets, labelNames)
|
||||||
if err := m.reg.register(name, h); err != nil {
|
if err := m.reg.register(name, h); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import "net/http"
|
|||||||
// NoopMeter 是一个不采集、不输出的 Meter,用于单元测试或禁用观测的场景。
|
// NoopMeter 是一个不采集、不输出的 Meter,用于单元测试或禁用观测的场景。
|
||||||
// 返回的 Counter / Gauge / Histogram 实例不会被注册到任何 Registry,
|
// 返回的 Counter / Gauge / Histogram 实例不会被注册到任何 Registry,
|
||||||
// 它们的 Inc/Add/Observe 调用在本进程内没有可见效果(每次返回新的空实例)。
|
// 它们的 Inc/Add/Observe 调用在本进程内没有可见效果(每次返回新的空实例)。
|
||||||
|
//
|
||||||
|
// 实现 Meter 接口。
|
||||||
type NoopMeter struct{}
|
type NoopMeter struct{}
|
||||||
|
|
||||||
func (NoopMeter) NewCounter(string, string, ...string) *Counter {
|
func (NoopMeter) NewCounter(string, string, ...string) *Counter {
|
||||||
|
|||||||
Reference in New Issue
Block a user