Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go frame 2.x搭建微服务

手把手教你go frame 2.x版本搭建微服务

作者:java叶新东

GoFrame是一个模块化、高性能的Go语言开发框架,提供丰富的基础组件库,支持自动生成接口文档,代码生成工具链提高开发效率,本文档详细介绍了GoFrame的安装、配置、目录结构及请求流程,感兴趣的可以了解一下

Go Frame介绍

GoFrame 是一款模块化、高性能的Go 语言开发框架。无论是组件库、单体服务、微服务都可以使用GoFrame来编写;GoFrame 提供开箱即用、丰富强大的基础组件库;
可根据代码结构自动生成清晰、规范的接口文档,节省人工编写时间,提高文档与代码的同步性和准确性。
高效便捷的代码生成工具链,极大提高开发效率,减少重复性工作,同时保证代码的规范性和一致性。

环境准备

安装环境

安装grpc

# 生成数据模型代码
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
# 生成接口代码
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

安装 go frame cli工具

go install github.com/gogf/gf/cmd/gf/v2@latest

创建数据库

CREATE DATABASE `user`;
CREATE DATABASE `word`;

安装项目依赖

安装微服务组件
安装grpcx组件,让GoFrame支持微服务开发。

go get -u github.com/gogf/gf/contrib/rpc/grpcx/v2

安装数据库驱动
和单体服务一样,也需要安装对应的数据库驱动,这里演示的是MySQL。

go get -u github.com/gogf/gf/contrib/drivers/mysql/v2

安装etcd组件
安装etcd组件,提供服务注册功能。

go get -u github.com/gogf/gf/contrib/registry/etcd/v2

搭建

搭建微服务文档:https://goframe.org/course/proxima-book

GoFrame v2.x+ 最新官方标准目录结构

这是 gf cli 自动生成的纯原版结构,无任何旧版内容,企业生产环境唯一标准结构,我给你整理成最清晰、最实用、能直接照着开发的版本。

一、完整标准目录树

你的项目/
├── api/                # 对外 API 契约(入参/出参/路由定义)
├── hack/               # 框架工具链配置(gf 命令依赖)
├── internal/           # 项目核心私有代码(外部不可访问)
│   ├── cmd/            # 服务启动入口
│   ├── consts/         # 全局常量(错误码、状态、配置key)
│   ├── controller/     # HTTP 请求控制器
│   ├── dao/            # 数据库操作层
│   ├── logic/          # 业务逻辑实现层
│   ├── model/          # 数据模型
│   │   ├── do/         # 数据操作对象(业务层用)
│   │   └── entity/     # 数据库表映射实体
│   ├── packed/         # 资源打包文件(自动生成)
│   └── service/        # 服务接口定义
├── manifest/           # 部署&配置文件
│   ├── config/         # 多环境配置(dev/prod)
│   ├── deploy/         # 部署脚本(k8s/pm2)
│   └── docker/         # Docker 构建文件
├── resource/           # 静态资源(模板、配置、静态文件)
├── utility/            # 项目通用工具函数
├── go.mod              # Go 模块依赖
├── go.sum              # 依赖版本锁定
├── main.go             # 项目唯一启动入口
└── Makefile            # 构建命令快捷方式

二、每个目录 + 文件 官方作用(纯新版)

1. 根目录文件

main.go

项目唯一启动入口。

go.mod/go.sum

Go 模块依赖管理,记录 GoFrame 及第三方库版本。

Makefile

快捷构建命令:

make run
make build
make gen

不用记长命令。

2.api/—— 对外 API 契约(最重要)

GoFrame v2 核心设计:接口优先

api/
├── user/
│   └── v1/
│       └── user.go
└── order/
    └── v1/
        └── order.go

3.hack/—— 框架工具链配置

gf 命令自动生成和构建依赖的配置

文件:

hack/
├── config.yaml
├── hack.mk
└── hack-cli.mk

4.internal/—— 项目核心(Go 强制私有,外部无法引用)

这是所有业务代码存放地,最安全、最标准。

🔹internal/cmd/—— 服务启动入口

项目真正的启动逻辑:

🔹internal/consts/—— 全局常量

统一管理:

避免魔法值,规范必备。

🔹internal/controller/—— 控制器

请求入口层

🔹internal/service/—— 服务接口

定义业务接口,给 controller 调用。

🔹internal/logic/—— 业务逻辑(核心)

80% 业务代码都在这里

🔹internal/dao/—— 数据库操作层

只做数据库 CRUD

🔹internal/model/—— 数据模型(v2 新标准)

分为两个绝对清晰的部分:

model/entity/
model/do/

🔹internal/packed/

资源打包目录

5.manifest/—— 部署&配置

manifest/config/

多环境配置:

包含:server、database、redis、logger、jwt 等。

manifest/deploy/

K8s、Nginx、systemd 部署文件。

manifest/docker/

Dockerfile、docker-compose 构建配置。

6.resource/—— 静态资源

存放:

7.utility/—— 工具函数

项目内部通用工具:

三、GoFrame v2 标准请求流程(必背)

客户端请求
→ 控制器(controller)
→ 服务接口(service)
→ 业务逻辑(logic)
→ 数据库操作(dao)
→ 数据模型(entity/do)

一句话分层记忆:

四、最常用的 4 条命令(新版标准)

gf run main.go                # 启动项目
gf gen ctrl                   # 根据 api 自动生成控制器
gf gen dao                    # 根据数据库自动生成 dao/entity
gf swagger                    # 生成接口文档

五、这个结构为什么是官方最佳?

  1. internal 强制私有:业务代码绝对安全
  2. api 优先:接口定义统一,自动校验、自动文档
  3. 彻底分层:controller/service/logic/dao 标准四层架构
  4. 自动生成:90% 重复代码不用手写
  5. 多环境天然支持:开发/测试/生产配置隔离
  6. 部署标准化:docker / k8s 直接用

缺点

缺少以下微服务组件

到此这篇关于手把手教你go frame 2.x版本搭建微服务的文章就介绍到这了,更多相关go frame 2.x搭建微服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文