- 优化API参考文档的段落排版和表格对齐 - 补充签名机制和支付接口的详细说明- 完善错误码与解决方案的描述 - 统一文档中的代码引用和示例格式 docs(beego):优化Beego框架集成文档结构 - 改进Beego框架文档的换行和段落布局 - 完善控制器继承和中间件集成的说明 - 优化ORM模型注册和路由机制的描述- 统一文档中的技术术语表达方式 docs(docker): 改进Docker部署指南文档格式 - 优化Dockerfile多阶段构建的描述 - 完善docker-compose配置文件说明 - 改进本地部署步骤和故障排除指南- 统一文档中的命令行示例格式feat(supplier): 新增LianIns卡发送任务类型- 在枚举中添加SendCardTaskTypeEnumLianIns类型 - 更新GetAllSendCardTaskType函数返回值 - 实现LianIns任务类型的工厂方法 chore(deps): 更新项目依赖版本 - 升级github.com/bytedance/sonic至v1.14.2 - 升级github.com/duke-git/lancet/v2至v2.3.8 - 升级github.com/bytedance/sonic/loader至v0.4.0 - 移除natefinch/lumberjack和yaml.v2依赖- 清理间接依赖中的toml库引用
6.3 KiB
6.3 KiB
部署与配置
**本文档引用的文件** - [Dockerfile](file://deploy/Dockerfile) - [docker-compose.yaml](file://deploy/docker-compose.yaml) - [docker-compose-local.yaml](file://deploy/docker-compose-local.yaml) - [app.conf](file://conf/app.conf) - [build.sh](file://build.sh) - [cfg_model.go](file://internal/config/cfg_model.go) - [config.go](file://internal/config/config.go) - [proxy.go](file://internal/config/proxy.go) - [mq_config.go](file://internal/config/mq_config.go) - [main.go](file://main.go)目录
简介
本文档提供基于Docker和Docker Compose的完整部署与配置指南,涵盖本地开发和生产环境的设置。文档详细说明如何通过环境变量覆盖配置文件中的默认值,并提供部署后的验证步骤。
项目结构
项目采用分层结构,主要包含配置、部署脚本、内部业务逻辑和主程序入口。部署相关文件集中于deploy目录,配置文件位于conf目录。
graph TB
subgraph "配置"
appConf[app.conf]
end
subgraph "部署"
Dockerfile[Dockerfile]
dockerCompose[docker-compose.yaml]
dockerComposeLocal[docker-compose-local.yaml]
buildScript[build.sh]
end
subgraph "源码"
main[main.go]
internal[internal/]
end
Dockerfile --> main
dockerCompose --> Dockerfile
dockerComposeLocal --> Dockerfile
appConf --> main
buildScript --> main
图示来源
本节来源
核心组件
核心组件包括配置管理、代理池、消息队列和数据库连接。系统通过main.go初始化各项服务,包括代理池、缓存、消息消费者和队列系统。
本节来源
架构概述
系统采用微服务架构,通过Beego框架提供HTTP服务,使用Redis作为缓存,MySQL作为持久化存储,ActiveMQ作为消息队列。代理池用于外部请求的负载均衡。
graph TD
Client[客户端] --> Gateway[网关服务]
Gateway --> Redis[(Redis缓存)]
Gateway --> MySQL[(MySQL数据库)]
Gateway --> MQ[(消息队列)]
Gateway --> ProxyPool[代理池]
ProxyPool --> ExternalAPI[外部API]
Gateway --> Backend[后端服务]
图示来源
详细组件分析
配置管理分析
系统配置通过app.conf文件和环境变量双重管理,环境变量优先级高于配置文件。
配置类图
classDiagram
class Config {
+GetMFCardQueryUrl() string
+GetAppleCardSubmitUrl() string
+GetAppleNotifyUrl() string
+GetWalMartNotifyUrl() string
+GetJDCardSubmitUrl() string
+GetJDNotifyUrl() string
+GetDomain() string
+GetServerId() string
+GetForbiddenBackendHost() string
+ShopAddr() string
+GatewayAddr() string
}
class RedisConfig {
+Host string
+Port string
+Password string
+DB int
}
class ProxyInfo {
+Url string
+AuthKey string
+AuthPwd string
}
class MQConfig {
+GetMQAddress() string
+GetProxy() string
+GetProxyConfig() []string
}
Config --> RedisConfig : "包含"
Config --> ProxyInfo : "包含"
MQConfig --> Config : "依赖"
图示来源
代理池分析
代理池在系统启动时初始化,支持通过环境变量动态配置代理服务器列表。
代理池初始化流程图
flowchart TD
Start([程序启动]) --> InitProxyPool["proxy.InitProxyPool()"]
InitProxyPool --> GetProxyConfig["config.GetProxyConfig()"]
GetProxyConfig --> CheckEnv["检查proxy环境变量"]
CheckEnv --> |存在| SplitProxies["按逗号分割代理列表"]
CheckEnv --> |不存在| EmptyList["返回空列表"]
SplitProxies --> TrimSpaces["去除空格"]
TrimSpaces --> FilterEmpty["过滤空字符串"]
FilterEmpty --> Initialize["初始化代理池"]
Initialize --> ReturnSuccess["返回nil"]
EmptyList --> Initialize
图示来源
消息队列分析
系统使用消息队列处理订单查询和通知,通过独立的goroutine消费消息。
消息处理序列图
sequenceDiagram
participant Main as "main()"
participant Notify as "notify"
participant Query as "query"
participant Service as "service"
participant Queue as "queue"
Main->>Notify : go CreateOrderNotifyConsumer()
Main->>Query : go CreateSupplierOrderQueryCuConsumer()
Main->>Service : go OrderSettleInit()
Main->>Queue : queue.Init()
Main->>third_party : StartOrderPool()
Note over Notify,Queue : 启动消息消费者和队列系统
图示来源
依赖分析
系统依赖Go模块、Docker环境和外部服务。通过go.mod管理Go依赖,通过Docker容器化部署。
graph LR
A[本项目] --> B[beego/v2]
A --> C[go-sql-driver/mysql]
A --> D[alpine:latest]
A --> E[golang:1.24]
B --> F[其他Beego组件]
C --> G[MySQL协议]
图示来源
本节来源
性能考虑
系统通过缓存、代理池和消息队列提高性能。Redis缓存减少数据库访问,代理池实现请求负载均衡,消息队列解耦业务逻辑。
故障排除指南
常见问题包括数据库连接失败、Redis连接失败和代理池初始化失败。检查相应的配置项和网络连接。
本节来源
结论
本文档提供了完整的部署和配置指南,涵盖了从构建到运行的全过程。通过合理的配置管理和组件设计,系统具有良好的可维护性和扩展性。