# go-zero **Repository Path**: joker_mm/go-zero ## Basic Information - **Project Name**: go-zero - **Description**: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-16 - **Last Updated**: 2023-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### goctl api cmd、或者powershell“*”会报错,你可以用git控制台 goctl api go -api *.api -dir ../ --style=go_zero 生成文档:goctl api doc --dir ./ [api生成sh脚本](https://gitee.com/joker_mm/go-zero/blob/master/user-api/api/genApi.sh) ### protobuf、grpc、protoc-gen-go-grpc goctl env check -i -fs [model生成sh脚本](https://gitee.com/joker_mm/go-zero/blob/master/genModel.sh) ### goctl rpc goctl rpc protoc *.proto --go_out=../ --go-grpc_out=../ --zrpc_out=../ 注意:golang启动时etcd报错 panic: context deadline exceeded,是机器上没有安装etcd包 1.sudo apt install etcd-server, * 使用 apt 或 yum 安装 etcd sudo apt-get install etcd sudo yum install etcd * 安装好etcd后启动etcd,在终端输入etcd即可 * 更新api文件后重新生成:goctl api go -api appname.api -dir . #### docker compose下安装etcd: 创建etcd数据目录(根据自己需求修改),记得修改权限否则会报目录权限错误 mkdir -p /docker/compose/etcd/data chmod -R 777 测试是否安装成功: docker exec etcd1 /bin/sh -c "/opt/bitnami/etcd/bin/etcd --version" docker exec etcd1 /bin/sh -c "/opt/bitnami/etcd/bin/etcdctl version" docker exec etcd1 /bin/sh -c "/opt/bitnami/etcd/bin/etcdctl endpoint health" docker exec etcd1 /bin/sh -c "/opt/bitnami/etcd/bin/etcdctl put foo bar" docker exec etcd1 /bin/sh -c "/opt/bitnami/etcd/bin/etcdctl get foo" etcd 前端工具 docker pull joinsunsoft/etcdv3-browser docker run --rm --name=etcdv3-browser -p 9996:80 -d joinsunsoft/etcdv3-browser:latest http://127.0.0.1:9996/ Username: ginghan Password: 123456 [yaml文件](https://gitee.com/joker_mm/go-zero/docker/etcd.yaml) #### windows下安装etcd: etcd是一个分布式一致性键值存储,其主要用于分布式系统的共享配置和服务发现。 etcd由Go语言编写 1.下载地址:https://github.com/coreos/etcd/releases 2. 将压缩文件解压到指定文件夹 其中etcd.exe是服务端,etcdctl.exe是客户端 windows系统下etcd的安装与使用:https://blog.csdn.net/skh2015java/article/details/80712214 window10下go语言开发环境搭建,及体验go-zero框架,及解决command not found: goctl:https://blog.csdn.net/as4589sd/article/details/112464882 安装使用goctl:https://blog.csdn.net/a6652162/article/details/114637052 go-zero 如何扛住流量冲击(一):https://zhuanlan.zhihu.com/p/297793627 查询占用端口进程:netstat -aon | findstr "2379" [sh脚本](https://gitee.com/joker_mm/go-zero/blob/master/user-rpc/proto/genRpc.sh) ### 使用proto文件生成go文件 注意 prop.proto冒号后面那个点和文件名之间有个空格,忘记加空格了不会编译通过,会报错:Missing input file. protoc --go_out=./ *.proto 编译grpc protoc --go_out=plugins=grpc:./ *.proto ### rpc调试工具 https://github.com/fullstorydev/grpcui go install github.com/fullstorydev/grpcui/cmd/grpcui@latest 注意入口文件这行代码,只有dev或者test环境才支持方法反射 if c.Mode == service.DevMode || c.Mode == service.TestMode { reflection.Register(grpcServer) } grpcui -plaintext 127.0.0.1:9998 ### 其他 copier、threading挺好用的