Go 2025-11-16 · 15 min 阅读

go zero 介绍

go zero是一个集成了各种工程实践(包含web和rpc)的框架,有如下主要特点:1、强大的工具支持,尽可能少的代码编写;2、极简的接口,完全兼容net/http; 3、支持中间件,高性能,面向故障编程,弹性设计;4、内建服务发现,智能负载均衡;5、高并发支撑,稳定保障每天的流量洪峰;


为什么说做好微服务很难?

goctl的用法

  1. 使用 goctl 生成 dockerfile,本地构建镜像,然后启动服务测试。
# go-zero/examples目录下执行`goctl apin ew hello`,创建名为`hello`的api
goctl api new hello

语句执行完成后,会生成 hello 服务的目录,进入hello目录,然后执行goctl docker命令,会在hello目录下生成dockerfile。

goctl docker -go hello.go
# 回到bellagio目录,执行docker build构建镜像
docker build -t hello:v1 -f go-zero/examples/hello/Dockerfile . 
# 启动hello服务,暴露8888的端口
docker run --rm -it -p 8888:8888 hello:v1 
# 使用curl请求接口,可正常返回message信息
curl -i http://localhost:8888/from/me  
{"message":"from docker, hello, me"}%

这里需要注意,要修改dockerfile中的内容,RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories将软件源替换为阿里云镜像,加速软件包下载,否则在构建时,会提示build阶段失败。

参考:

# 在gozero/examples/shorturl/api目录下,编写好shorturl.api文件后,用goctl生成api gateway代码
goctl api go -api shorturl.api -dir .

# 在gozero/examples/shorturl/rpc目录下,编写好transform.proto后,用goctl生成proto文件模版
goctl rpc -o transform.proto
# 用goctl生成rpc代码,在rpc/transform目录下执行命令
goctl rpc protoc transform.proto --go_out=./pb --go-grpc_out=./pb --zrpc_out=.

# 在rpc/transform/model目录下创建shorturl.sql,使用goctl生成crud代码,其中-c表示使用redis cache
goctl model mysql ddl -c -src shorturl.sql -dir .

goctl 命令执行完成后,最终生成的目录结构如 go-zero/examples/shorturl 所示。

扩展阅读,Go Zero系列文章:

# Go