缘由:
go-zero gateway主要内容开发接近完成了,有一个问题一直没有解决,马上要部署了,是时候解决了。
因为主要是RESTful <–> gRPC,go-zero通过解析pb文件访问后端gRPC服务,pb文件则是通过proto文件生成,proto文件是定义接口的,接口变化会导致pb文件的变化和更新,但是通常gateway模块的功能开发相对稳定和单一,完成后很少会有修改。不希望因为pb文件的变化而导致gateway重新构建、版本发布,pb文件则是更像配置文件存在。
[阅读全文]go-zero gateway主要内容开发接近完成了,有一个问题一直没有解决,马上要部署了,是时候解决了。
因为主要是RESTful <–> gRPC,go-zero通过解析pb文件访问后端gRPC服务,pb文件则是通过proto文件生成,proto文件是定义接口的,接口变化会导致pb文件的变化和更新,但是通常gateway模块的功能开发相对稳定和单一,完成后很少会有修改。不希望因为pb文件的变化而导致gateway重新构建、版本发布,pb文件则是更像配置文件存在。
[阅读全文]研发框架搭建得差不多了,最近在本地和生产测试环境一致性。go-zero官方以介绍使用etcd做为服务发现首选,可能更多人并没有选择部署在k8s上吧。为了快速进入开发,我也选择了etcd,过程还算顺利。
[阅读全文]以往Java日常开发中,模块依赖问题有成熟解决方案:
与Golang开发的主要区别是Golang直接编译成二进制文件,而且是一个独立完整的可运行文件,其中包含了完整的依赖。
在开发阶段,Golang的依赖通常都是通过类似github之类仓库解决,这种方式有一个问题:企业开发过程中,可能会有一些被依赖的模块并不一定希望仓库是公开的,更适合的做法是保存在企业内部的Git服务器上;但是在开发阶段的依赖关系,在import
和go mod
中写企业内部仓库地址显然行不通。
参考官方文档
略
|
|
goctl是go-zero的内置脚手架,提升开发效率的利器,可以一键生成代码、文档、部署k8s yaml、dockerfile等。
[阅读全文]最近重新捡起架构和开发工作,了解了一下golang的“新”特性:workspaces。其实也不算新,只是在上一次做架构和技术选型的时候,golang的最新版本还是1.16.*,而workspaces是Go1.18发布的。
[阅读全文]https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more
https://golang.org/ref/mod#private-modules
https://golang.org/ref/mod#vcs-find
https://golang.org/doc/tutorial/create-module
https://sagikazarmark.hu/blog/vanity-import-paths-in-go/
为了gitlab-ci在构建时拉取私有仓库依赖,构建工作使用的docker容器的dockerfile需要加上:
|
|
其中的id_rsa为部署密钥,需要在私有仓库中添加部署密钥 上述参考 https://cloud.tencent.com/developer/article/1602151 https://stackoverflow.com/questions/27500861/whats-the-proper-way-to-go-get-a-private-repository
[阅读全文]最开始看到go plugin很兴奋,太实用了。正好手上项目也能用得上,所以花了几天心思去研究一下,所以就有了这篇文章的心德:go plugin从入门到放弃
[阅读全文]int/uint类型位数不是固定的,根据运行平台可能是32位或64位 获取Int类型位数:strconv.IntSize
Go不允许隐式类型转换,只能强制转换 强制转换:int32(a)
[阅读全文]开源工具源码地址:github.com/akavel/rsrc
|
|
|
|
|
|
注意,网上找到的资料都会报以下的错:
[阅读全文]进入项目目录:go mod init
设置环境变量:GOPROXY=“https://goproxy.io,direct”
运行go get的时候,发现报410 gone的错误,目前网上查到的资料都是扯淡,查官方文档,在1.13版本加了版本验证,官方说如果因为防火墙或代理问题验证不了,可以添加环境变量:GOSUMDB=off关闭验证。记得:命令行窗口需要退出重新打开才能生效!!!
[阅读全文]