GO-ZERO
01基础001快速入门
01基础002配置文件
01基础003web开发一
01基础004web开发二
本文档使用 MrDoc 发布
-
+
首页
01基础001快速入门
快速入门 点击直达-视频教程地址https://www.bilibili.com/video/BV1vRxzefExM/ ## 1. 介绍 go-zero 是一个集成了各种工程实践的 web 和 RPC框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 ### 1.1 web框架 快速高效开发web应用的工具或软件: web应用有动态网站,网络应用,网络服务等,比如抖音,B站,淘宝,在线银行,医疗系统,政务服务,微信,各种网站等等 支持HTTP协议 支持Websocket协议 ### 1.2 RPC RPC(Remote Procedure Call Protocol)远程过程调用协议。一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 <img src="https://www.mszlu.com/docs/assets/650581-20190115005410199-1032695557.eaed7045.png"/> RPC是两个进程间的通信,可以跨设备,RPC框架需要保证在调用远端服务或资源时,就像调用本地应用程序一样方便 ## 1.3 微服务 <img src="https://www.mszlu.com/docs/assets/image-20240912222051264.01e5b497.png"/> 微服务是由多个功能模块(小服务)组成,共同完成一件事(组成可用的一整个系统),各个服务之间使用RPC进行通信。 好处就在于各个服务是独立的个体,其代表了一种编程思维方式,服务需要具备独立性,扩展性,容错性,高可用性等,适用于高并发等大型系统 坏处就是复杂性大大提高,管理维护变得困难 要构建一个微服务系统,需要如下手段: > 服务治理 ---服务注册发现 服务调用 ---RPC ---REST 服务网关 服务容错 ---限流 ---熔断 ---降级 链路追踪 负载均衡 监控报警 分布式配置中心 分布式事务 分布式任务调度 分布式文件存储 消息队列 Docker 云原生 ## 2. 安装 要想使用go-zero框架,需要安装以下环境: golang:这里我们安装最新版go1.23版本 goctl:goctl是go-zero框架的内置脚手架,可以一键生成代码、文档、部署 k8s yaml、dockerfile 等。 protoc protobuf是一种数据序列化和反序列化标准,谷歌出品,和json,xml类似,性能非常高。 protoc命令是protobuf的编译器,将.proto后缀的文件编译成对应的开发语言文件 protoc-gen-go是protoc的一个插件,用于生成go语言代码(protoc原生不支持生成go语言文件) protoc-gen-go-grpc是protoc的go grpc插件,可以生成grpc相关的go语言文件。 IDE插件 goland或者vscode插件市场搜goctl 用于支持go-zero框架中api描述语言 ### 2.1 安装方式 #2.1.1 goctl安装 ```shell go install github.com/zeromicro/go-zero/tools/goctl@latest #验证版本 goctl --version ``` #### 2.1.2 protoc相关安装 ###### 快捷安装 goctl env check --install --verbose --force 手动安装: > 打开https://github.com/protocolbuffers/protobuf/releases 下载对应的版本(我这里是windows电脑),下载protoc-28.0-win64.zip 解压,并设置环境变量即可 使用protoc --version验证 go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest ## 3. 快速入门 框架的目的是为了帮助开发人员快速高效的开发应用程序 创建一个目录gozero-learn做为工作目录 在当前目录打开命令行工具 运行goctl api new hello01命令 生成如下代码: <img src="https://www.mszlu.com/docs/assets/image-20240911224703789.f99b7869.png"/> 进入hello01,运行go mod tidy下载依赖 在logic目录下的hello01logic.go中写入如下代码: ```go func (l *Hello01Logic) Hello01(req *types.Request) (resp *types.Response, err error) { // todo: add your logic here and delete this line resp = &types.Response{ Message: "hello " + req.Name, } return } ``` 将hello01.go改为main.go并运行main函数 访问http://localhost:8888/form/you goctl api new xxx可以快捷生成一个最小化的http服务,但我们希望form后面的name可以任意输入,就需要修改代码 修改hello01.api ```go type Request { Name string `path:"name"` } ``` 重新生成代码,运行命令g`octl api go --api hello01.api --dir .` --api:指定api文件 --dir:指定go文件生成的目录 重新运行访问即可 至此我们初步学会了go-zero #4. 目录说明 ``` example ├── etc │ └── example.yaml ├── main.go └── internal ├── config │ └── config.go ├── handler │ ├── xxxhandler.go │ └── xxxhandler.go ├── logic │ └── xxxlogic.go ├── svc │ └── servicecontext.go └── types └── types.go ``` example:单个服务目录,一般是某微服务名称 etc:静态配置文件目录 main.go:程序启动入口文件 internal:单个服务内部文件,其可见范围仅限当前服务 config:静态配置文件对应的结构体声明目录 handler:handler 目录,可选,一般 http 服务会有这一层做路由管理,handler 为固定后缀 logic:业务目录,所有业务编码文件都存放在这个目录下面,logic 为固定后缀 svc:依赖注入目录,所有 logic 层需要用到的依赖都要在这里进行显式注入 types:结构体存放目录
admin
2025年1月9日 09:35
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码