根据Qiansong的视频共享,本文进行了整理。视频背景地址如下:
https://www.bilibili.com/video/bv1hr4y1x7ne
GOCTL的最早功能是解决GRPC内部网络调试问题。大约在2019年,在我们的生产环境中,RPC是内部隔离的,无法通过外部网络访问。它只是实现了第一个版本的代码生成。主要目的是访问RPC服务器进行一些调试。
开发规格,包括编码规格,工程规格,提交规格,代码审查规范,部署规格等。如果在团队中统一了开发规范,则可以想象他们的收入。例如:如果您的公司没有统一的开发规模发展,那么此时,您需要进行一些跨部门的协作或支持,而新的开发环境使您灰心丧气,并且您在您之前拥有抵抗的想法开始。这不是支持的最初意图。
工程效率,您必须了解项目的效率,您可以首先查看“效率”的定义:
效率是指在单位时间内完成的工作量
效率的目标是快速,但快速不是效率。换句话说,这是在单位时间内完成的高质量工作。这是我们要追求的目标。然后,工程效率是“缩短从开发到在线的距离”
GOCTL开发历史可以应用于一些标志性功能!
第一个是goctl rpc。GOCTL RPC的第一个版本是GOCTL的原型,主要是生成在RPC中调试的客户端代码,并且不会展开。被算作goctl rpc proto向goctl rpc protoc的转化。在此期间,为了解决许多问题,它已详细更改,对我来说最令人印象深刻的功能是GOCTL模型。这是我开始维护goctl的起点。这也是我业务发展实践的解决方案。在与“懒惰”相比之后,请记住当时开发业务模块。由于业务庞大,需要创建许多数据表。在goctl之前,我将自己手动编码。时间编写模型文件,因为我没有ORM的习惯,因此该SQL完全是裸露的SQL语句。服务运行后,我发现SQL.中有很多错误,每个新索引或现场更改,缓存的相关逻辑维护也使我头疼,因此与当时的开发最佳实践相结合,该作品的工作是根据缓存提供给goctl的。goctl模型的版本主要是网络版本,该版本接一个地集成到goctl中,这使我有很多开发效率的收入到后续的。发展。
如果goctl -version提示找不到命令的同情心:goctl,请先检查$ gobin是否在环境变量下。
让我们看一下功能介绍。通过指令goctl -help,我们可以列出我们支持的功能。也许在阅读文档时,每个人都没有专注于这一说明。由于这是对GoCtl的特殊分享,我们花了一些时间来在一起,并带所有人熟悉GOCTL从0到1。
GOCTL具有丰富的功能,因此有许多说明参数。除了阅读文档外,您还可以很好地利用标志,因为他会告诉您每个说明或子Instruction的用法。是字符串或布尔值类型吗?是必要的还是可选的?不要猜测自己应该使用什么旗帜。尽管GoCTL是我自己的主要维护。实际上,很多时候,有些说明比较文档。不记得,我还通过 - 螺旋来检查功能介绍 -
goctl完成视图goctl版本
1.3.5本节仅适用于1.3.5中的GOCTL版本和以前的自动完成设置以供参考。1.3.5版本和上一个仅支持UNIX操作系统。请跳过本节内容
根据帮助说明,goctl完成支持通过-name传递脚本文件名来传递参数,但是此参数是非compulsory,并且goctl_autocomplete文件位于默认值中,该文件位于$ goctlhome目录中。
1.3.6本节的内容仅适用于1.3.6及以后的自动完成设置的GOCTL版本。请在1.3.6之前跳过本节的内容
从上面可以看出,根据不同的操作系统,自动完成的设置不同。我在这里是macos。我们执行相应的说明:
让我们重新打开一个终端尝试:
常见错误
GOCTL迁移可帮助开发人员从以前的1.3.0版本中无缝迁移到1.3.0及以后的任何版本。如果Go-Zero版本为1.3.0,此后无需执行此操作。
我为什么需要迁移?
Go-Zero已在1.3.0版中进行了组织更改,也就是说,使用Zeromicro来替换原始的TAL-TECH组织名称。
我现在有一个示范项目awesomemigrate是由旧版本的goctl生成的。
假设我们需要将项目的GO-Zero升级到最新版本1.3.3的最新版本,以在升级之前从TAL-Tech到Zeromicro完成该项目,以确保GOCTL版本大于v1.3.2,然后执行执行。GOCTL迁移指令。如果GOCTL版本小于v1.3.2,则需要升级。
迁移完成后,让我们看一下模块文件
在项目中搜索TAL-TECH的匹配结果以查找0:0:
Goctl env goctl env主要用于环境检测,安装,环境参数控制和其他功能。此外,您还可以查看当前goctl.envinment的一些环境信息。
首先,让我们看一下它的说明
GOCTL Env支持环境观看,参数修改,依赖检测和安装,让我们依次查看
1.查看不输入任何标志的环境是查看当前的goctl环境。
上述参数可能会解释
goctl_os字符串当前操作系统。共同值包括Darwin,Windows,Linux和其他GOCTL_ARCH String当前系统体系结构。GOCTL缓存目录。goctl_version字符串的主要缓存下载依赖项当前protoc_version字符串当前protoc_version字符串电流protoc_version string如果未安装,它是一个空字符串protoc_go_go_go_go_version字符串电流protoc-gen-go版本。推动电流Protoc电流Protec电流Protec电流推杆电流Protoc-GO-GRPC版本,如果未安装,则是一个空字符串2。修改参数。例如,我们将goctl_debug修改为true
3.根据检测/安装,让我们检测我当前的依赖性是否已安装。当前的依赖性检测内容是原始的,Protoc-gen-go,protoc-gon-go-grpc
goctl rpc首先让我们看一下指令的帮助
该指令提供了三个子指导。New可以快速创建ZRPC服务。ProtoC基于原始描述文件来生成ZRPC代码,而模板很快生成了原始模板。我们将重点关注GOCTL RPC原始指令,以查看使用RPC ProtoC的Goctlinstructions:
如何使用goctl rpc protoc,为什么示例中的go_out,-go-go-gropc_out参数,但在查看帮助时没有看到简介?目前,让我们首先了解这一点。我们首先搁置了,根据官方的原始代码,GRPC代码的指示是什么?将使用什么标志。对于ZRPC的代码生成,您可以理解GOCTL生成ZRPC只是为了生成goctl rpc前缀,并且基于生成GRPC代码指令生成的某些GOCTL生成的标志。不必再次在帮助中显示它。分析源代码后,您可以详细说明这些设计和考虑。Nextuse一个示例要演示。假设我们有一个engry.proto文件可以放置goctl。我们需要执行GRPC代码的说明如下:
如果您不知道GRPC代码是如何生成的,则该建议是指官方文档https://grpc.io/
然后根据上述GOCTL RPC PROTOC的引入,我们的ZRPC代码的说明应为
如果您需要在生成代码时输出日志,则可以添加 - Verbose显示log.goctl RPC Protoc在生成ZRPC代码时首先检测您的环境。如果未安装,它将自动安装依赖性再生代码。
4.为了提高零API文件的效率,编辑器插件分别为Intellij和Vscode提供相应的编辑插件。有关Intellij插件的介绍和使用,请参阅https://github.com/zeromicro/goctl-intellij,vscode插件介绍和使用,请参阅
GOCTL有13个第一级指令和从原始功能RPC代理到当前版本(v1.3.5)的将近30秒的指令。在此期间,GoCTL进行了一些调整。此外,更像是在摸索中前进,朝着更快,更好的方向前进。因此,在迭代道路上,GoCTL看起来有些不稳定。每个人都可能遇到许多问题。在这里,我们将总结社区中社区中的每个人的反馈。
描述:在由ANTLR生成的源代码中,没有386架构UINT的边界值可以很好地处理,从而导致边界溢出
维修版本:v1.3.3
描述:熟悉GRPC的人应该知道,生成GRPC代码的插件Protoc-Gen-Go具有两个仓库可维护,有3个安装来源,两个维护仓库是:
三个安装来源是
在v.1.3.4之前,如果您使用goctl rpc proto生成ZRPC代码,建议安装插件的旧版本,即Golang维护,因此该指令生成ZRPC代码。通过它带来的很难兼容,因此不建议使用该指令。
在V.1.3.4及以后的v.1.3.4之后,Protoc-Gen-Go没有限制。用户可以自由选择安装来源。Protoc-Gen-Grpc-Go插件,目的是关注GRPC官员,但用户不需要承担太多的心理负担。在生成代码时,安装如此多的依赖性依赖性ProtoC会自动检测并安装它非常麻烦。
总而言之,建议仍在使用指令的用户尽快用GOCTL RPC ProtoC替换。
描述:原因是因为当我获得go模块时,我得到了固定的值命令行marguments。
描述:此说明已被删除并替换
当旧版本生成ZRPC代码时,这只是此问题。该说明已被删除。
对于ZRPC代码的目录结构,总结构将没有差异。唯一的区别是PB输出目录。这取决于您指定要控制的参数。控制PB输出目录的因素是指“协议缓冲区:GO生成的代码”。
打开Goland的设置和搜索FileTypes,以设置API文件后缀。
https://github.com/zeromicro/go-zero
欢迎使用和明星支持我们!
请注意“微服务实践”公共帐户,然后单击交换组以获取社区组的QR码。
原始:https://juejin.cn/post/7103689058009743368