go-zero-looklook:一套可直接落地的 go-zero 微服务实践项目

go-zero-looklook 在 GitHub 上已经拿到 5,165 Star 了。

这是一个基于 go-zero 框架搭建的微服务示例。作者把生产环境落地的技术栈开源出来,覆盖了 API、RPC、消息队列、延迟队列、监控、链路追踪和 DevOps 流程。

1、这项目是干嘛的

go-zero-looklook 就是一个可以直接跑起来的 go-zero 微服务工程。

它把 API 网关、RPC 服务、消息队列、定时任务、日志收集、监控告警、链路追踪、CI/CD 串在了一起。业务代码写在 app 目录里,通用组件放在 common 里,所有中间件配置和部署脚本放在 deploy 里,data 目录放本地依赖数据。

正文顶部截图

2、为什么要看它

很多开发者看完 go-zero 文档后,缺的是一个完整工程该怎么组织的参照。单体 Demo 跑通了,一到微服务就不知道怎么切分服务、怎么放公共组件、怎么做日志监控、怎么上线。

这个项目把这些问题都摆在了目录里。API 做聚合层,复杂业务下沉到 RPC,简单逻辑直接写在 API 里。网关用 nginx,链路追踪用 Jaeger,日志用 filebeat 收集到 Kafka,再用 go-stash 同步到 Elasticsearch。监控用 Prometheus + Grafana,消息队列和延迟队列用 asynq,分布式事务预留了 DTM。

README区域截图

3、技术栈有哪些

项目里用到的技术基本都是 go-zero 生态和云原生工具:

  • 框架:go-zero
  • 网关:nginx
  • 消息队列:kafka、go-queue、asynq
  • 日志:filebeat、go-stash、elasticsearch、kibana
  • 监控:prometheus、grafana、jaeger
  • 事务:dtm
  • 部署:docker、docker-compose、k8s、jenkins、gitlab、harbor
  • 存储:mysql、redis

开发环境推荐用 docker-compose,直接走直连模式,省掉 etcd、nacos 这类服务注册发现的麻烦。上线环境则用 k8s,配合 CI/CD 流程。

4、目录结构长什么样

  • app:业务代码,包含 API、RPC 和 MQ
  • common:通用组件、错误处理、中间件、工具
  • data:本地中间件产生的数据,不进仓库
  • deploy:filebeat、nginx、prometheus、go-stash 等配置
  • doc:项目文档
  • modd.conf:本地热加载配置

部署脚本也在 deploy 里,可以自动生成 API、RPC 代码,也能自动生成 MySQL model。

5、适合哪些人

  • 刚学完 go-zero,想找一个工程参考的开发者
  • 准备用 go-zero 做微服务,但不知道目录和中间件怎么安排的团队
  • 需要一套包含日志、监控、CI/CD 的落地模板的人

它可以作为工程模板,fork 之后改成自己的业务。文档目录里有更详细的部署和开发说明,按需查阅即可。

它可以作为工程模板,fork 之后改成自己的业务。文档目录里有更详细的部署和开发说明,按需查阅即可。

更多推荐