部署与运维¶
本文档提供在生产环境中部署和操作 GoVector 的指南。它涵盖了部署策略、配置选项、监控和最佳实践。
🚀 部署选项¶
嵌入式模式¶
嵌入式模式是最简单的部署选项,其中 GoVector 直接在您的应用程序进程中运行。
使用场景¶
- 单实例应用
- 边缘设备
- 低流量应用
- 开发和测试
部署步骤¶
- 添加依赖:
- 在应用程序中初始化:
import (
"github.com/yourusername/govector/core"
)
// 初始化集合
collection, err := core.NewCollection(core.CollectionConfig{
Name: "my-collection",
VectorLen: 768,
Metric: core.Cosine,
IndexType: core.HNSW,
Quantize: true, // 在生产环境中启量化
})
if err != nil {
log.Fatalf("创建集合失败: %v", err)
}
// 在关闭时保存集合
defer func() {
if err := collection.Save("/path/to/persistence"); err != nil {
log.Printf("保存集合失败: %v", err)
}
}()
微服务模式¶
微服务模式将 GoVector 作为独立服务器运行,可通过 HTTP API 访问。
使用场景¶
- 多应用系统
- 语言无关环境
- 高流量应用
- 集中式向量存储
部署步骤¶
- 构建服务器:
- 运行服务器:
- 使用 systemd:
创建 systemd 服务文件 /etc/systemd/system/govector.service:
[Unit]
Description=GoVector 向量数据库
After=network.target
[Service]
Type=simple
User=youruser
WorkingDirectory=/path/to/govector
ExecStart=/path/to/govector-server --host 0.0.0.0 --port 6333 --data ./data
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 启动并启用服务:
🔧 配置¶
服务器配置¶
| 标志 | 描述 | 默认值 |
|---|---|---|
--host |
监听的主机 | 127.0.0.1 |
--port |
监听的端口 | 6333 |
--data |
数据目录 | ./data |
--log-level |
日志级别 (debug, info, warn, error) | info |
环境变量¶
| 变量 | 描述 | 默认值 |
|---|---|---|
GOVECTOR_HOST |
监听的主机 | 127.0.0.1 |
GOVECTOR_PORT |
监听的端口 | 6333 |
GOVECTOR_DATA_DIR |
数据目录 | ./data |
GOVECTOR_LOG_LEVEL |
日志级别 | info |
📊 监控¶
健康检查¶
GoVector 提供健康检查端点:
指标¶
GoVector 在 http://localhost:6333/metrics 暴露 Prometheus 兼容的指标:
govector_collection_count- 集合数量govector_point_count{collection="name"}- 每个集合的点数量govector_search_requests_total- 总搜索请求数govector_search_duration_seconds- 搜索延迟govector_upsert_requests_total- 总写入请求数govector_upsert_duration_seconds- 写入延迟
日志¶
GoVector 默认登录到 stdout/stderr。对于生产环境,考虑将日志重定向到集中式日志系统:
🛡️ 安全¶
网络安全¶
- 在生产环境中使用 HTTPS
- 限制对可信客户端的网络访问
- 使用反向代理(例如 Nginx)以获得额外的安全性
认证¶
虽然 GoVector 不包含内置认证,但您可以使用反向代理添加它:
server {
listen 443 ssl;
server_name govector.example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
location / {
proxy_pass http://localhost:6333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 基本认证
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
💾 备份与恢复¶
备份¶
定期备份数据目录:
# 创建备份
mkdir -p /backup/govector
cp -r /path/to/data/* /backup/govector/
# 压缩备份
tar -czf /backup/govector-$(date +%Y%m%d).tar.gz /backup/govector/
恢复¶
从备份恢复:
- 停止 GoVector
- 恢复备份:
# 从备份恢复
tar -xzf /backup/govector-20231201.tar.gz -C /path/to/
# 设置正确的权限
chown -R youruser:yourgroup /path/to/data
- 启动 GoVector
📈 性能调优¶
对于高流量¶
- 使用 SSD 存储以获得更好的 I/O 性能
- 启 SQ8 量化以减少内存使用
- 调整 HNSW 参数以适应您的数据集大小
- 对批量插入使用批处理操作
对于大型数据集¶
- 增加内存分配
- 使用多个集合来分散负载
- 考虑在多个实例之间进行分片
🚩 常见问题¶
内存不足¶
- 原因:大型数据集未启量化
- 解决方案:启 SQ8 量化,增加内存分配
性能缓慢¶
- 原因:HNSW 参数不当,磁盘速度慢
- 解决方案:调整 HNSW 参数,使用 SSD 存储
数据损坏¶
- 原因:意外关闭,磁盘错误
- 解决方案:定期备份,使用日志文件系统