go-zero框架入门
创始人
2024-12-26 20:37:21
0

go-zero框架环境的安装

goctl

若想用go-zero框架,还需要一些前置条件:

安装goctl

go install github.com/zeromicro/go-zero/tools/goctl@latest 

可以使用 goctl 命令查看是否安装成功

image-20240718085928448

成功后安装protoc

goctl env check --install --verbose --force 

然后下载go-zero库,新建一个go项目,运行:

go get -u github.com/zeromicro/go-zero@latest 

1.在根目录下创建一个user包

2.在其中,创建一个api服务:

goctl api new api 

3.在其中创建一个rpc服务

goctl rpc new rpc 

4.在user/api/logic/apilogic下,增加

func (l *ApiLogic) Api(req *types.Request) (resp *types.Response, err error) {     // todo: add your logic here and delete this line      return &types.Response{Message: "hello world"}, nil } 

5.在user的api目录下运行

go run api.go 

6.进入http://127.0.0.1:8888/from/me 就可以看到

image-20240718143851908

这样一个简单的项目就跑起来了。

至于为什么需要创建两个服务呢?

API 包用于对外提供 HTTP 接口,适合前端与后端交互;RPC 包用于后端服务之间的高效通信,适合内部服务调用。

API 包

  • 实现对外提供的 RESTful API 接口。例如,用户登录、获取商品列表等。
  • 接受前端发来的 HTTP 请求,进行处理后返回 JSON 格式的响应。

RPC 包

  • 实现服务间的 RPC 调用接口。例如,用户服务需要调用订单服务获取订单详情。
  • 使用 gRPC 框架进行通信,提供高效的二进制协议数据传输。

总之,这样设计有助于清晰地分离对外接口与内部服务,提升系统的可维护性和可扩展性。

etcd

etcd 是一个分布式键值存储系统,旨在提供一致性、高可用性和可靠的分布式协调。

和redis很像,都是键值对数据库。

但etcd更加专精于强一致性:etcd 使用 Raft 共识算法**,确保了在分布式环境中的强一致性**。这对于服务发现和配置管理等关键任务尤为重要,因为它能确保每个节点都能看到相同的配置和服务状态。

并且etcd本身为分布式系统设计,提供了原生的服务发现和配置管理功能,支持 Watch 机制,可以实时监控配置变化

etcd 提供了简单且高效的分布式锁实现,适合用于分布式环境中的资源竞争管理。

综上几点,就已经可以说明分布式系统使用etcd存储配置信息的原因了。

再举个例子:正常项目中配置文件写在代码中,若配置文件修改,项目就该重新启动,但是若使用了etcd,每次去查看对应RPC的配置信息时都是从etcd中实时获取。

etcd安装方法:

windows:https://github.com/etcd-io/etcd/releases

去github下载最新版安装包

然后解压,将根文件夹位置添加到环境变量中

image-20240718154510911

之后打开一个命令行窗口,输入:etcd就可以启动了,然后再打开一个黑窗口(上一个不要关)

输入一些简单命令就可以测试etcd的功能了:

image-20240718154636504

linux,使用docker下载最新版:

docker pull quay.io/coreos/etcd:latest 

运行etcd容器:

docker run -d \   --name etcd-server \   -p 2379:2379 \   -p 2380:2380 \   -v /path/to/etcd-data:/etcd-data \   quay.io/coreos/etcd:latest \   /usr/local/bin/etcd \   --data-dir=/etcd-data \   --name my-etcd \   --initial-advertise-peer-urls http://0.0.0.0:2380 \   --listen-peer-urls http://0.0.0.0:2380 \   --advertise-client-urls http://0.0.0.0:2379 \   --listen-client-urls http://0.0.0.0:2379 \   --initial-cluster my-etcd=http://0.0.0.0:2380 \   --initial-cluster-token my-etcd-token \   --initial-cluster-state new  

验证是否成功安装:

docker exec -it etcd-server sh   etcdctl --endpoints=http://127.0.0.1:2379 put foo "Hello, etcd" etcdctl --endpoints=http://127.0.0.1:2379 get foo  

成功会看到:

OK  Hello, etcd 

这就是go-zero使用前的前置工作了,下一步就是去写简单的项目

相关内容

热门资讯

有玩家发现!智星菠萝透视(辅助... 有玩家发现!智星菠萝透视(辅助)果然存在有辅助下载(有挂助手)-哔哩哔哩1.智星菠萝透视 选牌创建新...
突发!新超凡辅助器(辅助)果然... 突发!新超凡辅助器(辅助)果然有挂辅助器(详细教程)-哔哩哔哩1、游戏颠覆性的策略玩法,独创攻略技巧...
一直以来!陕麻圈智能辅助软件(... 一直以来!陕麻圈智能辅助软件(辅助)本来是有辅助神器(证实有挂)-哔哩哔哩1、首先打开陕麻圈智能辅助...
相较于以往!乐胡摆叫脚本(辅助... 相较于以往!乐胡摆叫脚本(辅助)一贯有挂辅助神器(真的有挂)-哔哩哔哩1、游戏颠覆性的策略玩法,独创...
在玩家背景下!漳州老友辅助(辅... 在玩家背景下!漳州老友辅助(辅助)总是是真的辅助工具(有挂方法)-哔哩哔哩1、漳州老友辅助模拟器是什...
据报道!九天大厅挂价格(辅助)... 据报道!九天大厅挂价格(辅助)一直是真的辅助平台(有挂辅助)-哔哩哔哩九天大厅挂价格是不是有人用挂微...
近日!南丰数刀脚本(辅助)总是... 近日!南丰数刀脚本(辅助)总是有挂辅助工具(讲解有挂)-哔哩哔哩一、南丰数刀脚本游戏安装教程牌型概率...
据公告内容!小程序财神十三水脚... 据公告内容!小程序财神十三水脚本时评(辅助)都是存在有辅助软件(真的有挂)-哔哩哔哩1、金币登录送、...
更值得关注的是!来来拼十免费辅... 更值得关注的是!来来拼十免费辅助(辅助)一贯存在有辅助神器(有挂透视)-哔哩哔哩1)来来拼十免费辅助...
今日!丫丫老陕游戏辅助(辅助)... 今日!丫丫老陕游戏辅助(辅助)竟然是真的辅助平台(真是有挂)-哔哩哔哩;1、不需要AI权限,帮助你快...