27 lines
1.4 KiB
Markdown
27 lines
1.4 KiB
Markdown
# 技术栈与开发环境
|
|
|
|
## 核心技术
|
|
|
|
- **语言**: 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` 库,可以输出结构化的、易于机器解析的日志,方便调试和监控。
|