impl

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateUniqueReportID added in v1.1.8

func GenerateUniqueReportID(client redis_interface.RedisClient) (string, error)

GenerateUniqueReportID 使用 Redis INCR 生成全局唯一的 ReportID。 格式:{timestamp}-{seq},其中 seq 由 Redis key "report:id:seq" 自增获得。

Types

type EChartsHTMLGenerator

type EChartsHTMLGenerator struct{}

EChartsHTMLGenerator 使用 ECharts CDN 生成独立 HTML 报告

func NewEChartsHTMLGenerator

func NewEChartsHTMLGenerator() *EChartsHTMLGenerator

func (*EChartsHTMLGenerator) Generate

func (g *EChartsHTMLGenerator) Generate(data *report.ReportData) ([]byte, error)

func (*EChartsHTMLGenerator) GenerateToFile

func (g *EChartsHTMLGenerator) GenerateToFile(data *report.ReportData, outputPath string) error

type JSONFileReader

type JSONFileReader struct {
	// contains filtered or unexported fields
}

JSONFileReader 从 JSON 文件读取报表数据

func NewJSONFileReader

func NewJSONFileReader(baseDir string) *JSONFileReader

func (*JSONFileReader) ListReports

func (r *JSONFileReader) ListReports() ([]*report.ReportMeta, error)

func (*JSONFileReader) ReadReport

func (r *JSONFileReader) ReadReport(reportID string) (*report.ReportData, error)

type JSONFileWriter

type JSONFileWriter struct {
	// contains filtered or unexported fields
}

JSONFileWriter 将报表数据以 JSON 文件形式写入磁盘 目录布局:

{baseDir}/{reportID}/meta.json
{baseDir}/{reportID}/tracings.json
{baseDir}/{reportID}/metrics.json

func NewJSONFileWriter

func NewJSONFileWriter(baseDir string) *JSONFileWriter

func (*JSONFileWriter) Close

func (w *JSONFileWriter) Close() error

func (*JSONFileWriter) WriteMeta

func (w *JSONFileWriter) WriteMeta(meta *report.ReportMeta) error

func (*JSONFileWriter) WriteMetrics

func (w *JSONFileWriter) WriteMetrics(reportID string, series []*report.MetricsSeries) error

func (*JSONFileWriter) WriteTracings

func (w *JSONFileWriter) WriteTracings(reportID string, records []*report.TracingRecord) error

type MemoryMetricsCollector

type MemoryMetricsCollector struct {
	// contains filtered or unexported fields
}

MemoryMetricsCollector 是 MetricsCollector 接口的内存实现

func NewMemoryMetricsCollector

func NewMemoryMetricsCollector() *MemoryMetricsCollector

func (*MemoryMetricsCollector) Collect

func (c *MemoryMetricsCollector) Collect()

func (*MemoryMetricsCollector) Flush

func (*MemoryMetricsCollector) Register

func (c *MemoryMetricsCollector) Register(name string, fn report.MetricsValueFunc)

func (*MemoryMetricsCollector) RegisterWithLabels

func (c *MemoryMetricsCollector) RegisterWithLabels(name string, labels map[string]string, fn report.MetricsValueFunc)

func (*MemoryMetricsCollector) Reset

func (c *MemoryMetricsCollector) Reset()

func (*MemoryMetricsCollector) StartAutoCollect

func (c *MemoryMetricsCollector) StartAutoCollect(interval time.Duration)

func (*MemoryMetricsCollector) StopAutoCollect

func (c *MemoryMetricsCollector) StopAutoCollect()

func (*MemoryMetricsCollector) Unregister

func (c *MemoryMetricsCollector) Unregister(name string)

type MemoryPressureController

type MemoryPressureController struct {
	// contains filtered or unexported fields
}

MemoryPressureController 实现 report.PressureController。

两种模式:

  • 固定 QPS(targetQPS > 0):所有方法为空操作,不影响执行。
  • 自适应(targetQPS <= 0):基于延迟反馈的 AIMD 拥塞控制,从低 QPS 探测到最优速率。

func NewMemoryPressureController

func NewMemoryPressureController() *MemoryPressureController

func (*MemoryPressureController) AddPending

func (p *MemoryPressureController) AddPending()

func (*MemoryPressureController) BaselineP50Ns added in v1.1.9

func (p *MemoryPressureController) BaselineP50Ns() float64

BaselineP50Ns 返回基线 P50(纳秒,供测试使用)。

func (*MemoryPressureController) CurrentLevel

func (p *MemoryPressureController) CurrentLevel() report.PressureLevel

func (*MemoryPressureController) CurrentQPS added in v1.1.9

func (p *MemoryPressureController) CurrentQPS() float64

CurrentQPS 返回当前内部 QPS(供测试使用)。

func (*MemoryPressureController) DonePending

func (p *MemoryPressureController) DonePending()

func (*MemoryPressureController) EffectiveQPS

func (p *MemoryPressureController) EffectiveQPS() float64

func (*MemoryPressureController) FlushSnapshots

func (p *MemoryPressureController) FlushSnapshots() []report.PressureSnapshot

func (*MemoryPressureController) Phase added in v1.1.9

func (p *MemoryPressureController) Phase() adaptivePhase

Phase 返回当前自适应阶段(供测试使用)。

func (*MemoryPressureController) RecordLatency added in v1.1.9

func (p *MemoryPressureController) RecordLatency(d time.Duration)

func (*MemoryPressureController) SafeQPS added in v1.1.9

func (p *MemoryPressureController) SafeQPS() float64

SafeQPS 返回上次确认安全的 QPS(供测试使用)。

func (*MemoryPressureController) SetTargetQPS

func (p *MemoryPressureController) SetTargetQPS(qps float64)

func (*MemoryPressureController) Snapshots

func (*MemoryPressureController) Start

func (p *MemoryPressureController) Start(interval time.Duration)

func (*MemoryPressureController) Stop

func (p *MemoryPressureController) Stop()

type MemoryTracer

type MemoryTracer struct {
	// contains filtered or unexported fields
}

MemoryTracer 分片双缓冲区实现。 写入路径按 goroutine 哈希选择 shard,每个 shard 独立双缓冲,大幅降低锁竞争。 Flush 时切换所有 shard 的活跃 bank,然后合并各 shard 的旧 bank 数据。

func NewMemoryTracer

func NewMemoryTracer() *MemoryTracer

func NewMemoryTracerWithShards added in v1.1.7

func NewMemoryTracerWithShards(shardCount int) *MemoryTracer

NewMemoryTracerWithShards 创建指定分片数的 MemoryTracer。shardCount 必须为 2 的幂。

func (*MemoryTracer) Flush

func (t *MemoryTracer) Flush() []*report.TracingRecord

Flush 原子切换所有 shard 的活跃 bank,然后收割并合并各 shard 的旧 bank 数据。

func (*MemoryTracer) NewEntry

func (t *MemoryTracer) NewEntry(name string) report.TracingEntry

func (*MemoryTracer) Reset

func (t *MemoryTracer) Reset()

type RedisReportReader

type RedisReportReader struct {
	// contains filtered or unexported fields
}

RedisReportReader 从 Redis 读取报表数据(Master 端使用)。

func NewRedisReportReader

func NewRedisReportReader(client redis_interface.RedisClient) *RedisReportReader

NewRedisReportReader 创建 Redis 读取器。

func (*RedisReportReader) BarrierCount

func (r *RedisReportReader) BarrierCount(reportID string, caseIndex int) (int64, error)

BarrierCount 返回指定步骤中已经 ACK 的 agent 数量。

func (*RedisReportReader) ListReports

func (r *RedisReportReader) ListReports() ([]*report.ReportMeta, error)

func (*RedisReportReader) ReadReport

func (r *RedisReportReader) ReadReport(reportID string) (*report.ReportData, error)

type RedisReportWriter

type RedisReportWriter struct {
	// contains filtered or unexported fields
}

RedisReportWriter 通过 Redis 写入报表数据(Agent 端使用)。 Key 规范:

report:meta:{reportID}              → String (JSON)
report:tracing:{reportID}:{agentID} → List   (JSON 分块)
report:metrics:{reportID}:{agentID} → List   (JSON 分块)
report:index                        → SortedSet (member=reportID, score=unix)

func NewRedisReportWriter

func NewRedisReportWriter(client redis_interface.RedisClient, agentID string) *RedisReportWriter

NewRedisReportWriter 创建基于 Redis 的 ReportWriter。

func (*RedisReportWriter) BarrierACK

func (w *RedisReportWriter) BarrierACK(reportID string, caseIndex int) error

BarrierACK 当前 agent 向 barrier 集合写入 ACK,表示该 case 步骤执行完成。

func (*RedisReportWriter) Close

func (w *RedisReportWriter) Close() error

func (*RedisReportWriter) WriteMeta

func (w *RedisReportWriter) WriteMeta(meta *report.ReportMeta) error

func (*RedisReportWriter) WriteMetrics

func (w *RedisReportWriter) WriteMetrics(reportID string, series []*report.MetricsSeries) error

func (*RedisReportWriter) WriteTracings

func (w *RedisReportWriter) WriteTracings(reportID string, records []*report.TracingRecord) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL