你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • service bookstore-api {这一行定义了service名字

  • @server部分用来定义server端用到的属性

  • handler定义了服务端handler名字

  • get /add(addReq) returns(addResp)定义了get方法的路由、请求参数、返回参数等

  • 使用goctl生成API Gateway代码

你还在手撕微服务?快试试 go-zero 的微服务自动生成

生成的文件结构如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

启动API Gateway服务,默认侦听在8888端口

你还在手撕微服务?快试试 go-zero 的微服务自动生成

测试API Gateway服务

你还在手撕微服务?快试试 go-zero 的微服务自动生成

返回如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

可以看到我们API Gateway其实啥也没干,就返回了个空值,接下来我们会在rpc服务里实现业务逻辑

  • 可以修改internal/svc/servicecontext.go来传递服务依赖(如果需要)

  • 实现逻辑可以修改internal/logic下的对应文件

  • 可以通过goctl生成各种客户端语言的api调用代码

  • 到这里,你已经可以通过goctl生成客户端代码给客户端同学并行开发了,支持多种语言,详见文档

6. 编写add rpc服务

===============

在rpc/add目录下编写add.proto文件

可以通过命令生成proto文件模板

你还在手撕微服务?快试试 go-zero 的微服务自动生成

修改后文件内容如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

用goctl生成rpc代码,在rpc/add目录下执行命令

你还在手撕微服务?快试试 go-zero 的微服务自动生成

文件结构如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

直接可以运行,如下:

$ go run add.go -f etc/add.yaml

Starting rpc server at 127.0.0.1:8080…

复制代码

etc/add.yaml文件里可以修改侦听端口等配置

7. 编写check rpc服务

=================

在rpc/check目录下编写check.proto文件

可以通过命令生成proto文件模板

你还在手撕微服务?快试试 go-zero 的微服务自动生成

用goctl生成rpc代码,在rpc/check目录下执行命令

你还在手撕微服务?快试试 go-zero 的微服务自动生成

文件结构如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

etc/check.yaml文件里可以修改侦听端口等配置

需要修改etc/check.yaml的端口为8081,因为8080已经被add服务使用了,直接可以运行,如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

8. 修改API Gateway代码调用add/check rpc服务

====================================

  • 修改配置文件bookstore-api.yaml,增加如下内容

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 通过etcd自动去发现可用的add/check服务

  • 修改internal/config/config.go如下,增加add/check服务依赖

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 修改internal/svc/servicecontext.go,如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 通过ServiceContext在不同业务逻辑之间传递依赖

  • 修改internal/logic/addlogic.go里的Add方法,如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 通过调用adder的Add方法实现添加图书到bookstore系统

  • 修改internal/logic/checklogic.go里的Check方法,如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 通过调用checker的Check方法实现从bookstore系统中查询图书的价格

9. 定义数据库表结构,并生成CRUD+cache代码

============================

  • bookstore下创建rpc/model目录:mkdir -p rpc/model

  • 在rpc/model目录下编写创建book表的sql文件book.sql,如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • 创建DB和table create database gozero

你还在手撕微服务?快试试 go-zero 的微服务自动生成

生成后的文件结构如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

10. 修改add/check rpc代码调用crud+cache代码

====================================

  • 修改rpc/add/etc/add.yaml和rpc/check/etc/check.yaml,增加如下内容:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

你还在手撕微服务?快试试 go-zero 的微服务自动生成

修改rpc/check/internal/logic/checklogic.go,如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

至此代码修改完成,凡是手动修改的代码我加了标注

11. 完整调用演示

===========

  • add api调用

你还在手撕微服务?快试试 go-zero 的微服务自动生成

返回如下:

你还在手撕微服务?快试试 go-zero 的微服务自动生成

  • check api调用

《MySql面试专题》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

《MySql性能优化的21个最佳实践》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

《MySQL高级知识笔记》

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

全网火爆MySql 开源笔记,图文并茂易上手,阿里P8都说好

关注我,点赞本文给更多有需要的人
dw75v-1719187510492)]

[外链图片转存中…(img-ny6JX1wL-1719187510492)]

[外链图片转存中…(img-qIzl0wFI-1719187510493)]

[外链图片转存中…(img-RP48kOSl-1719187510493)]

[外链图片转存中…(img-yeOyJZrf-1719187510493)]

文中展示的资料包括:**《MySql思维导图》《MySql核心笔记》《MySql调优笔记》《MySql面试专题》《MySql性能优化的21个最佳实践》《MySq高级知识笔记》**如下图

[外链图片转存中…(img-p7UvGBbe-1719187510494)]

关注我,点赞本文给更多有需要的人

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值