# 技术栈与开发环境 ## 核心技术 - **语言**: Go (Golang) - **主要依赖**: - `gopkg.in/yaml.v3`: 用于解析 `config.yaml` 配置文件。 - `log/slog`: Go 1.21+ 内置的结构化日志库。 - `net/http`: 用于构建 HTTP 服务器和客户端。 - `github.com/getsentry/sentry-go`: (可选)用于错误追踪。 ## 开发与构建 - **依赖管理**: 使用 Go Modules (`go.mod`, `go.sum`) 进行依赖管理。 - **配置文件**: 项目的行为由 `config.yaml` 文件驱动。 - **容器化**: - `Dockerfile`: 用于构建项目的 Docker 镜像。 - `compose.yaml`: 用于在开发环境中启动服务。 - `compose.release.yaml`: 用于在生产环境中部署服务。 ## 关键技术点 - **并发模型**: 大量使用 goroutine 和 channel 来实现高并发。特别是 `fastesUpstream` 函数中的并发请求模式。 - **流式处理**: 通过 `io.Reader` 和 `io.Writer` 接口,数据以流的形式被处理,从未完全加载到内存中,这对于处理大文件至关重要。 - **错误处理**: 在 Go 的标准错误处理之上,项目在某些关键路径(如 `fastesUpstream`)中使用了 `context` 包来处理超时和取消操作。 - **结构化日志**: 使用 `slog` 库,可以输出结构化的、易于机器解析的日志,方便调试和监控。