本项目使用 Go-zero 微服务框架构建,提供了一套完整的 有声(音频)Web 服务 与 gRPC 接口。Web 层负责处理前端请求和业务逻辑,gRPC 层用于内部服务间的高效通信。服务已全面容器化,并部署在 Kubernetes 集群上,实现了自动弹性伸缩、服务注册发现、负载均衡与故障自愈,保证了系统的高可用性和可扩展性。
- Go-zero:微服务框架,集成 Web 框架、RPC 框架、服务治理等能力
- gRPC:高性能 RPC 通信协议
- Kubernetes:容器编排与部署,提供云原生基础设施
- Docker:容器化打包
- MySQL/Redis(可选):数据存储与缓存
go version : 1.20.1
goctl version: 1.4.4
go 框架: go-zero
1.编写api.api,使用goctl工具生成
goctl api go -api api.api -dir ./ --style=goZero2.生成rpc服务
goctl rpc protoc cp_drama_admin.proto --go_out=../ --go-grpc_out=../ --zrpc_out=../ --style=goZero 3.rpc服务生成dockerfile
goctl docker -go cpDramaAdmin.go4.测试rpc
go get github.com/fullstorydev/grpcui/cmd/grpcui
go install github.com/fullstorydev/grpcui/cmd/grpcui启动测试:
grpcui -plaintext 127.0.0.1:8899cp_user_internal.proto
protoc --go_out=cp --go-grpc_out=cp message/*.proto
protoc --go_out=cp --go-grpc_out=cp cp_user_internal.protocd apps/app && goctl docker -go client.go
//回到项目根目录执行命令,生成镜像
docker build -t audio-api:v1 -f apps/app/Dockerfile .
cd apps/rpc/drama && goctl docker -go cpDramaAdmin.go
//回到项目根目录执行命令,生成镜像
docker build -t drama-rpc:v1 -f apps/rpc/drama/Dockerfile .
.
├── README.md # 项目说明
├── apps # 服务
│ ├── app # web服务
│ ├── model # 数据模型
│ └── rpc # rpc服务
├── common # 公共模块
│ ├── globalkey # 全局key
│ ├── result # 结果封装
│ └── xerr # 错误封装
├── docker-compose.yaml # docker-compose
├── go.mod
├── go.sum
└── proto # proto文件
├── pb
└── user_auth