fix(card_sender): 增加代理切换重试次数

- 将重试代理的次数从3次增加到5次
- 保持原有请求配置和逻辑不变
- 提高请求成功率,增强稳定性
This commit is contained in:
danial
2025-12-14 22:35:15 +08:00
parent 468552ea86
commit 37463857c0
2 changed files with 53 additions and 26 deletions

View File

@@ -34,10 +34,11 @@ const (
)
var (
serviceName = "网关服务——" + env.Get("serverName", "")
collectorURL = env.Get("OTEL_COLLECTOR_URL", "38.38.251.113:31547") // 支持从环境变量配置
otelEnabled = env.Get("OTEL_ENABLED", "true") == "true" // 支持禁用 OTEL
Logger CustomLogger // 添加全局 logger
serviceName = "网关服务——" + env.Get("OTEL_SERVICE_NAME", "")
collectorURL = env.Get("OTEL_EXPORTER_ENDPOINT", "38.38.251.113:31547") // 支持从环境变量配置
insecure = env.Get("OTEL_EXPORTER_INSECURE", "true") == "true"
otelEnabled = env.Get("OTEL_ENABLED", "true") == "true" // 支持禁用 OTEL
Logger CustomLogger // 添加全局 logger
// 生产环境监控指标
exportFailures int32 // 导出失败计数

View File

@@ -42,25 +42,33 @@ func InitTracer() (func(context.Context) error, func(context.Context) error, fun
Logger.logger.Info("开始初始化 OpenTelemetry",
zap.String("collector_url", collectorURL),
zap.String("service_name", serviceName),
zap.Bool("insecure_connection", insecure),
)
// 创建 Trace 导出器客户端配置
traceClientOptions := []otlptracegrpc.Option{
otlptracegrpc.WithEndpoint(collectorURL),
// 生产环境网络优化配置
otlptracegrpc.WithTimeout(DefaultTimeout), // 5秒超时避免长时间阻塞
otlptracegrpc.WithRetry(otlptracegrpc.RetryConfig{
Enabled: true,
InitialInterval: InitialRetryInterval, // 1秒初始重试间隔
MaxInterval: MaxRetryInterval, // 10秒最大重试间隔
MaxElapsedTime: MaxRetryElapsedTime, // 30秒最大重试时间
}),
// 启用gzip压缩减少网络传输量
otlptracegrpc.WithCompressor("gzip"),
}
// 根据环境变量配置是否使用 insecure 连接
if insecure {
traceClientOptions = append(traceClientOptions, otlptracegrpc.WithInsecure())
}
// 生产环境优化的Trace导出器配置
traceExporter, err := otlptrace.New(
initCtx,
otlptracegrpc.NewClient(
otlptracegrpc.WithInsecure(),
otlptracegrpc.WithEndpoint(collectorURL),
// 生产环境网络优化配置
otlptracegrpc.WithTimeout(DefaultTimeout), // 5秒超时避免长时间阻塞
otlptracegrpc.WithRetry(otlptracegrpc.RetryConfig{
Enabled: true,
InitialInterval: InitialRetryInterval, // 1秒初始重试间隔
MaxInterval: MaxRetryInterval, // 10秒最大重试间隔
MaxElapsedTime: MaxRetryElapsedTime, // 30秒最大重试时间
}),
// 启用gzip压缩减少网络传输量
otlptracegrpc.WithCompressor("gzip"),
),
otlptracegrpc.NewClient(traceClientOptions...),
)
if err != nil {
@@ -115,10 +123,8 @@ func InitTracer() (func(context.Context) error, func(context.Context) error, fun
sdktrace.WithResource(resources),
),
)
// 生产环境优化的Metrics导出器配置
metricExporter, err := otlpmetricgrpc.New(
initCtx,
otlpmetricgrpc.WithInsecure(),
// 创建 Metrics 导出器客户端配置
metricClientOptions := []otlpmetricgrpc.Option{
otlpmetricgrpc.WithEndpoint(collectorURL),
// 生产环境网络优化配置
otlpmetricgrpc.WithTimeout(DefaultTimeout), // 5秒超时
@@ -130,6 +136,17 @@ func InitTracer() (func(context.Context) error, func(context.Context) error, fun
}),
// 启用gzip压缩减少网络传输量
otlpmetricgrpc.WithCompressor("gzip"),
}
// 根据环境变量配置是否使用 insecure 连接
if insecure {
metricClientOptions = append(metricClientOptions, otlpmetricgrpc.WithInsecure())
}
// 生产环境优化的Metrics导出器配置
metricExporter, err := otlpmetricgrpc.New(
initCtx,
metricClientOptions...,
)
if err != nil {
Logger.logger.Error("failed to create metric exporter",
@@ -158,10 +175,8 @@ func InitTracer() (func(context.Context) error, func(context.Context) error, fun
),
)
// 生产环境优化的日志导出器配置
logExporter, err := otlploggrpc.New(
initCtx,
otlploggrpc.WithInsecure(),
// 创建日志导出器客户端配置
logClientOptions := []otlploggrpc.Option{
otlploggrpc.WithEndpoint(collectorURL),
// 生产环境网络优化配置
otlploggrpc.WithTimeout(DefaultTimeout), // 5秒超时
@@ -173,6 +188,17 @@ func InitTracer() (func(context.Context) error, func(context.Context) error, fun
}),
// 启用gzip压缩减少网络传输量
otlploggrpc.WithCompressor("gzip"),
}
// 根据环境变量配置是否使用 insecure 连接
if insecure {
logClientOptions = append(logClientOptions, otlploggrpc.WithInsecure())
}
// 生产环境优化的日志导出器配置
logExporter, err := otlploggrpc.New(
initCtx,
logClientOptions...,
)
if err != nil {
Logger.logger.Error("failed to create log exporter",