Go微服务(二)——Protobuf详细入门 上

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Go微服务(二)——Protobuf详细入门 上

篇幅可能较长,可以先收藏,方便后续观看。

文章名称 地址
Go微服务(一)——RPC详细入门 前往
Go微服务(二)——Protobuf详细入门 前往
Go微服务(三)——gRPC详细入门 前往

Protobuf入门

1. 为什么选择Protobuf

Protobuf是Protocol Buffers的简称,它是Google公司开发的⼀种数据描述语⾔,并于2008年对外开 源。Protobuf刚开源时的定位类似于XML、JSON等数据描述语⾔,通过附带⼯具⽣成代码并实现将结 构化数据序列化的功能。但是我们更关注的是Protobuf作为接⼝规范的描述语⾔,可以作为设计安全的 跨语⾔PRC接⼝的基础⼯具。

1.什么是Protobuf?

Protobuf是Protocol Buffers的简称。

Google 2008年开源的一种数据描述语言。

接口规范的描述语言

附带工具生成代码 并实现 将结构化数据 序列化的功能。

设计安全的跨语言RPC接口的基础工具

2.Protobuf的优势:

编解码效率

高压缩比

多语言支持


2. Go 语言Protobuf开发环境搭建

Protobuf 编译器 :

Protobuf的编译器叫做:protoc(protobuf compiler)

Golang安装使用Protobuf:

1. 下载Protobuf的编译器

  1. 1.下载protobuf的编译器,点击前往

  2. 2.解压,解压位置看你自己,解压后将/bin/protoc.exe添加到环境变量里


  1. 3.测试:
    cmd 输入 protoc --version

2. 安装go protocol buffers的插件 protoc-gen-go

Protobuf核⼼的⼯具集是C++语⾔开发的,在官⽅的protoc编译器中并不⽀持Go语⾔。要想基于 .proto⽂件⽣成相应的Go代码,需要安装相应的插件。

cmd输入:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

这个插件会自动下载到你的go path的bin目录下。(编译器会自动到这里找这个插件)

3. 实战测试:

创建 myProto.proto 文件

syntax = "proto3";
package main;
option go_package = "./";
message String {
  string name = 1;
  int64  age  = 2;
}

注意:如果在上面protoc --version成功,而这里提示无法识别protoc命令的话,重启一下goland就好了。

相关文章
|
2月前
|
运维 监控 Go
Go语言微服务实战与最佳实践
【2月更文挑战第14天】本文将深入探讨使用Go语言进行微服务实战中的最佳实践,包括服务拆分、API设计、并发处理、错误处理、服务治理与监控等方面。通过实际案例和详细步骤,我们将分享如何在Go语言环境中构建高效、稳定、可扩展的微服务系统。
|
1天前
|
监控 Java 应用服务中间件
【微服务系列笔记】Sentinel入门-微服务保护
Sentinel是一个开源的分布式系统和应用程序的运维监控平台。它提供了实时数据收集、可视化、告警和自动化响应等功能,帮助用户监控和管理复杂的IT环境。本文简单介绍了微服务保护以及常见雪崩问题,解决方案。以及利用sentinel进行入门案例。
13 3
|
4天前
|
JSON API Go
Go-Zero从0到1实现微服务项目开发(二)
继续更新GoZero微服务实战系列文章:上一篇被GoZero作者万总点赞了,本文将继续使用 Go-zero 提供的工具和组件,从零开始逐步构建一个基本的微服务项目。手把手带你完成:项目初始化+需求分析+表结构设计+api+rpc+goctl+apifox调试+细节处理。带你实现一个完整微服务的开发。
|
7天前
|
Go 开发者
Golang深入浅出之-Go语言结构体(struct)入门:定义与使用
【4月更文挑战第22天】Go语言中的结构体是构建复杂数据类型的关键,允许组合多种字段。本文探讨了结构体定义、使用及常见问题。结构体定义如`type Person struct { Name string; Age int; Address Address }`。问题包括未初始化字段的默认值、比较含不可比较字段的结构体以及嵌入结构体字段重名。避免方法包括初始化结构体、自定义比较逻辑和使用明确字段选择器。结构体方法、指针接收者和匿名字段嵌入提供了灵活性。理解这些问题和解决策略能提升Go语言编程的效率和代码质量。
23 1
|
9天前
|
编译器 Go 开发者
Go语言入门|包、关键字和标识符
Go语言入门|包、关键字和标识符
26 0
|
13天前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
54 0
|
13天前
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
50 0
|
2月前
|
运维 监控 负载均衡
Go语言中微服务架构设计与原则
【2月更文挑战第14天】本文将深入探讨在Go语言环境下,微服务架构的设计原则和实践。我们将讨论如何根据微服务架构的核心概念,如服务拆分、独立部署、容错处理、服务治理等,来构建一个稳定、可扩展、可维护的Go语言微服务系统。
|
2月前
|
运维 Go 开发者
Go语言基础及其在微服务中的应用
【2月更文挑战第14天】本文旨在探讨Go语言的核心特性及其在构建微服务架构中的实际应用。我们将首先简要介绍Go语言的基本概念与特点,然后详细分析Go语言在构建高性能、高可用微服务中的优势,并通过实例展示如何使用Go语言实现微服务的基础组件和通信机制。
|
3月前
|
SQL Go 数据库
GORM入门到精通:构建高效Go应用的终极指南
在Go语言的世界里,数据持久化是一个不可或缺的话题。随着应用的复杂性增加,传统的数据库操作方式已经无法满足开发者对效率和便捷性的需求。这时,ORM(对象关系映射)框架应运而生,它将数据库表与对象模型之间建立映射,极大地简化了数据库操作。而在众多ORM框架中,GORM以其简洁、高效和功能丰富脱颖而出,成为了Go开发者的新宠。