Consul适配GaussDB开源开发任务心得

举报
yangjiaxin98 发表于 2024/12/06 10:30:52 2024/12/06
【摘要】 Consul适配GaussDB开源开发任务心得

代码仓库

https://github.com/qixia1998/GaussConsul

开发过程

Consul是一个用于服务发现的平台,因此在适配GaussDB前,选择使用 go zero 来开发两个微服务,一个用于与GaussDB数据交互的 user 服务,一个用于给GaussDB做健康检查的 gauss 服务。然后让 Consul 自动发现这两个服务,并注册到 Consul 中。

这里我们每个微服务中:

  • api - 对外的BFF服务,接受来自客户端的请求,暴露HTTP接口
  • rpc - 对内的微服务,仅接受来自内部其他微服务或者BFF的请求,暴露gRPC接口

参考项目工程目录如下:

这里我们需要根据 user 服务设计一个简单的用户表 参考 model 里面的 user.sql。

go zero 给我们提供了一个 goctl model 工具,这里我们使用 goctl model 进行数据库模型代码生成,由于PostgreSQL 仅支持从数据库连接生成。

因为直接使用 goctl model 连接出现问题,在这里想的是先将SQL在PG中执行,然后我们用这个 goctl model 连接PostgreSQL生成数据库模型代码提供给GaussDB来使用,后面使用过程中满足我们的要求参考 goctl model 文档 https://go-zero.dev/docs/tutorials/cli/model

goctl model pg datasource --url="postgres://postgres:postgrespw@127.0.0.1:55000/postgres?sslmode=disable" --table="user,student" --dir . 

这里需要保证的是SQL需要兼容GaussDB和PostgreSQL最好。

关于go zero api规范参考:https://go-zero.dev/docs/tasks/dsl/api

在 gauss 服务中,提供了一个用于 GaussDB 健康检查的接口,在 user 服务中提供了CURD接口给外部调用。

总结

关于goctl model工具无法直接连接到GaussDB生成模型代码,但是可以先基于PostgreSQL生成模型代码,再修改连接驱动为GaussDB的驱动,将模型代码给GaussDB使用即可。

验证截图

验证思路

启动 user rpc 服务和 user api 服务,然后启动 gauss api和gauss rpc 服务,在 Consul 中我们可以看到 gauss-rpc 服务和 user-rpc 已经被自动发现和注册到 Consul中了。然后再调用我们对外提供的 API 接口,确认服务的可用性。

Consul

这里可以看到我们启动的两个 rpc 服务已经注册到了Consul中。


对外 API 接口

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。