go-kratos 学习笔记(3) google buf 管理proto

google buf 管理proto,以及从新归档文件的目录结构

什么是 BSR?

BSR 将 Protobuf 文件作为版本化模块进行存储和管理,以便个人和组织可以轻松使用和发布他们的 API。

BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及支持远程代码生成的可扩展插件系统。

BSR 目标

  1. 集中式注册表- BSR 是跟踪和改进 Protobuf API 的真实来源。集中式注册表可让您保持兼容性和管理依赖项,同时让您的客户端能够可靠高效地使用 API。拥有集中式、支持 Protobuf 的注册表还有额外的好处,可以防止构建失败。

  2. 依赖管理- BSR终于将依赖管理引入了 Protobuf 生态系统。您现在可以在项目中声明、解析和使用托管的 BSR 模块作为依赖项。

简而言之,您不再需要复制.proto文件依赖项。CLIbuf直接与 BSR 交互以获取您的依赖项(类似于npmNode.js、pipPython、cargoRust 和 Go 中的 Go 模块)。

  1. UI 和文档- BSR 通过可浏览的 UI 为您的 Protobuf 文件提供完整的文档,其中包含语法突出显示、定义和参考。

  2. 远程插件- Buf 团队管理可在 buf.gen.yaml文件中引用的托管 Protobuf 插件。代码生成在 BSR 上远程进行,生成的源代码将写入磁盘。

  3. 生成的 SDK - BSR 通过您可以获取的托管软件存储库公开生成的工件,就像使用您已知的工具获取的任何其他库一样:go get、、或。npm installmvngradle

上面是buf官网的简介,官网地址  https://buf.build/docs/introduction

安装的方法参考官网的安装

首先在项目的根目录下执行

buf mod init

根目录下会对出一个 buf.yaml

version: v2
modules:- path: api- path: third_party
lint:use:- DEFAULT
breaking:use:- FILE

在新创建一个文件  buf.gen.yaml

touch  buf.gen.yaml#写入如下内容version: v2
plugins:- local: protoc-gen-goout: genopt:- paths=source_relative- local: protoc-gen-go-grpcout: genopt:- paths=source_relative- local: protoc-gen-go-httpout: genopt:- paths=source_relative- local: protoc-gen-go-errorsout: genopt:- paths=source_relative- local: protoc-gen-validateout: genopt:- paths=source_relative- lang=go

执行 buf generate 会在gen目录下生成代码

把根据kratos-layout模版生成的目录进行删除 删除如下目录

#创建一个app目录
mkdir appcd app#从新生成一个新的项目模版 --nomod 不生成其他的文件只生成 cmd configs innnternalkratos new users --nomod#需要把原来的helloword的模版生成的  xgs_kratos/api/go/helloworld/v1 替换成新的 xgs_kratos/gen/go/helloworld/v1 新生成的代码都在gen目录下面#在 app/users下直接执行 kratos run

最终项目的目录如下,如果是多个服务可以在app下继续生成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1486217.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统安装Cobol语言及IBM大型机模拟软件Hercules

COBOL(Common Business-Oriented Language)起源于50年代中期,是一种面向过程的高级程序设计语言,主要用于商业和数据处理领域。经过不断发展和标准化,已成为国际上应用最广泛的商业编程语言之一,在某red书上…

MATLAB基础:字符串、元胞数组

今天我们继续学习MATLAB中的字符串、元胞和结构 字符串 由于MATLAB是面向矩阵的,所以字符串的处理可以用矩阵的形式实现 字符串的赋值与引用 假设变量a,将用单引号引起来的字符串赋值给它, a清心明目, b(a[4;-1;1]) 在这里,…

Mysql注意事项(二)

Mysql注意事项(二) 最近回顾了一下MySQL,发现了一些MySQL需要注意的事项,同时也作为学习笔记,记录下来。—2020年06月11日 接上一篇Mysql注意事项(一) 9、分组数据 GROUP BY 规定&#xff…

英伟达、Mistral AI 开源企业级大模型,120亿参数、可商用

全球AI领导者英伟达(Nvidia)和著名开源大模型平台Mistral.ai联合开源了,企业级大模型Mistral NeMo 12B。(以下简称“MN 12B”) 据悉,MN 12B一共有基础和指令微调两种模型,支持128K上下文长度&a…

Spark-第一周

一、spark是什么 Spark是一种快速、通用、可扩展的大数据分析引擎 2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。 目前,Spark生态系统已经发展成为一个包含多个…

大语言模型-Bert-Bidirectional Encoder Representation from Transformers

一、背景信息: Bert是2018年10月由Google AI研究院提出的一种预训练模型。 主要用于自然语言处理(NLP)任务,特别是机器阅读理、文本分类、序列标注等任务。 BERT的网络架构使用的是多层Transformer结构,有效的解决了长…

如何用JavaScript实现视频观看时间追踪

在网页开发中,跟踪用户与多媒体内容(如视频)的互动是一项常见需求。无论是教育平台、数据分析,还是用户参与度统计,监控用户如何观看视频内容都能提供宝贵的见解。这篇文章将探索如何使用JavaScript实现视频播放时长的…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

【ELK】window下ELK的安装与部署

ELK的安装与部署 1. 下载2. 配置&启动2.1 elasticsarch2.1.1 生成证书2.1.2 生成秘钥2.1.3 将凭证迁移到指定目录2.1.4 改配置2.1.5 启动2.1.6 访问测试2.1.7 生成kibana账号 2.2 kibana2.2.1 改配置2.2.2 启动2.2.3 访问测试 2.3 logstash2.3.1 改配置2.3.2 启动 2.4 file…

ElMessage自动引入,样式缺失和ts esline 报错问题解决

一. 环境 "unplugin-auto-import": "^0.17.6", "vue": "^3.3.8", "vite": "^5.0.0", "typescript": "^5.2.2",二. ElMessage样式缺失问题. 以下有两种解决方法 方法一: 配置了自动引用后…

移动UI:运动风格具备什么特征,如何识别。

在移动UI设计中,具备以下特征可以归为运动风格: 1. 流畅的动画效果: 运动风格的UI设计通常会运用流畅的动画效果,例如过渡动画、元素的缓动效果等,以增强用户体验和吸引用户的注意力。 2. 动态的交互设计&#xff1a…

八股文之java基础

jdk9中对字符串进行了一个什么优化? jdk9之前 字符串的拼接通常都是使用进行拼接 但是的实现我们是基于stringbuilder进行的 这个过程通常比较低效 包含了创建stringbuilder对象 通过append方法去将stringbuilder对象进行拼接 最后使用tostring方法去转换成最终的…

python+onlyoffice+vue3项目实战20240722笔记,环境搭建和前后端基础代码

开发后端 先创建data目录,然后在data目录下创建一个test.docx测试文档。 后端代码: import json import req import api from api import middleware, PlainTextResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback ==…

PingCAP 王琦智:下一代 RAG,tidb.ai 使用知识图谱增强 RAG 能力

导读 随着 ChatGPT 的流行,LLMs(大语言模型)再次进入人们的视野。然而,在处理特定领域查询时,大模型生成的内容往往存在信息滞后和准确性不足的问题。如何让 RAG 和向量搜索技术在实际应用中更好地满足企业需求&#…

java之利用二维数组来计算年利润和每个季度的营业额

public class TwodimensionDemo2 {public static void main(String[] args) {//创建二维数组来存储数据int [][]yearArrArr{{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int yearSum0;//遍历二维数组&#xff0c;得到每一个一维数组并求和for (int i 0; i < yearArrArr.…

Nginx 怎样处理请求的重试机制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 怎样处理请求的重试机制&#xff1f;一、为何需要重试机制&#xff1f;二、Nginx 中的重试机制原理三、Nginx 重试机制的配置参数四、Nginx 重试机制的实际…

新手小白的pytorch学习第十弹----多类别分类问题模型以及九、十弹的练习

目录 1 多类别分类模型1.1 创建数据1.2 创建模型1.3 模型传出的数据1.4 损失函数和优化器1.5 训练和测试1.6 衡量模型性能的指标 2 练习Exercise 之前我们已经学习了 二分类问题&#xff0c;二分类就像抛硬币正面和反面&#xff0c;只有两种情况。 这里我们要探讨一个 多类别…

LeetCode 中有关数组的题目(JAVA代码实现)

1.两数之和 作为力扣的第一题&#xff0c;我估计很多新手在这里就被劝退了&#xff0c;但其实这道题不难&#xff0c;我们用map存储我们找到的目标整数&#xff0c;当循环结束之后&#xff0c;如果找到&#xff0c;就返回找到的两个整数的数组&#xff0c;如果没找到&#xff0…

pycharm创建新python环境(切换版本)详细图解版——最简单的方法实现python环境切换

先按操作&#xff0c;进行python版本的切换 下面这种方式是切换你本地已经下载了的python环境 我比较推荐下面这种方法&#xff0c;前提是你已经安装了anaconda 在这里&#xff0c;你可以创建2.7到3.10任意版本的虚拟环境 选择了创建好的环境后&#xff0c;如果对你所需要的…

鸿蒙仓颉语言【模块module】

module 模块 模块配置文件&#xff0c;这里指项目的modules.json 文件&#xff0c;用于描述代码项目的基础元属性。 {"name": "file name", //当前项目的名称"description": "项目描述", //项目描述"version": "1.0…