grpc学习golang版( 一、基本概念与安装 )

系列文章目录
第一章 grpc基本概念与安装
第二章 grpc入门示例
第三章 proto文件数据类型
第四章 多服务示例
第五章 多proto文件示例
第六章 服务器流式传输
第七章 客户端流式传输
第八章 双向流示例


文章目录

  • 一、基本介绍
    • [1.1 什么是rpc](#1.1 什么是rpc)
    • [1.2 什么是grpc](#1.2 什么是grpc)
    • [1.3 grpc的作用](#1.3 grpc的作用)
    • [1.4 grpc的应用场景](#1.4 grpc的应用场景)
    • [1.5 protoc 与Protobuf](#1.5 protoc 与Protobuf)
  • 二、安装
    • [2.1 Mac 安装 protoc 及代码生成插件](#2.1 Mac 安装 protoc 及代码生成插件)
    • [2.2 安装用于生成 go 和 grpc 相关的工具](#2.2 安装用于生成 go 和 grpc 相关的工具)
    • [2.3 卸载protobuf](#2.3 卸载protobuf)
    • [2.4 测试查看](#2.4 测试查看)

一、基本介绍

1.1 什么是rpc

RPC是Remote Procedure Call的简称,中文叫远程过程调用,简单的说,就是调用远程方法和调用本地方法一样

1.2 什么是grpc

而grpc是由 google开发的一个高性能、通用的开源RPC框架

官网地址:What is gRPC?

1.3 grpc的作用

gRPC的作用是实现跨网络的高效通信。在gRPC中,客户端应用程序可以不同的机器上像调用本地方法一样,直接调用服务器应用程序上的方法,使得更容易创建分布式应用和服务。

1.4 grpc的应用场景

场景 备注
微服务架构 gRPC 提供了一种高效的方式来定义和通信与多个微服务之间的接口,在不同的语言和平台之间进行通信
分布式系统 gRPC 使用 Protocol Buffers 作为接口定义语言,可以在分布式系统中定义和共享接口,并实现跨语言和平台的通信
高性能的网络通信 gRPC 使用基于 HTTP/2 的协议进行通信,支持双向流、流控制、多路复用等特性,并且使用 Protocol Buffers 进行序列化和反序列化,提供了高性能和低延迟的网络通信
服务间通信 gRPC 可以用于服务间的通信,例如像客户端应用程序和服务器之间的通信,或者服务之间的通信。
实时数据传输 gRPC 支持双向流通信,可以用于实时数据传输,例如聊天应用程序、实时推送等场景
跨语言和平台的通信 gRPC 支持多种编程语言,并且可以在不同语言和平台之间进行通信,方便开发人员使用不同的技术栈来构建分布式系统

1.5 protoc 与Protobuf

protoc是Protocol Buffers的编译器,用于将Protobuf文件(.proto文件)编译成相应的编程语言代码,可以根据.proto文件生成各种编程语言的代码文件。

Protobuf是一种数据序列化格式和协议,可以用于将结构化数据序列化为二进制格式,以便在不同系统之间进行数据传输或存储。Protobuf使用简洁、高效的二进制编码格式,比传统的文本格式(如XML、JSON等)更小、更快,同时具备跨平台、跨语言的特性。通过.proto文件定义数据结构和消息格式之后,可以使用protoc编译器生成相应的代码,方便在不同的编程语言中使用Protobuf进行数据的序列化和反序列化操作。

二、安装

2.1 Mac 安装 protoc 及代码生成插件

通过brew工具安装

shell 复制代码
brew install protobuf

查看版本

shell 复制代码
protoc --version

2.2 安装用于生成 go 和 grpc 相关的工具

各个语言的代码生成工具,对于 Golang 来说,称为 protoc-gen-go

shell 复制代码
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
export PATH=$PATH:$GOPATH/bin

2.3 卸载protobuf

shell 复制代码
brew uninstall protobuf

2.4 测试查看

shell 复制代码
go version
protoc --version
protoc-gen-go --version

完成ヾ(◍°∇°◍)ノ゙

相关推荐
紫洋葱hh1 天前
Go 入门基础:类型、变量与运算符
开发语言·后端·ai·golang
codeejun1 天前
每日一Go·MySQL-7、MySQL 核心原理全景图谱
开发语言·mysql·golang
acd120091 天前
Go 里 err 被不经意覆盖的几个现场
开发语言·后端·golang
倔强的小石头_2 天前
从Go+SQLite编译到浏览器开局:landlord部署、AI对局与固定地址实战
人工智能·golang·sqlite
tachibana22 天前
Go 语言的 Map 是否是并发安全的?
开发语言·数据结构·后端·golang·go·语言
后除2 天前
Go 实战: 使用 Wails v2.15 构建轻量级的桌面应用 - 仿微信登录界面
开发语言·微信·golang
看浪的路人2 天前
第8讲:RAG 生产化——Go 实现亿级向量召回 + 混合检索 + 重排序 Pipeline
开发语言·后端·golang
tachibana22 天前
Go 语言 Map 的扩容过程是怎样的?
开发语言·后端·golang·go·语言
念何架构之路2 天前
go-grpc服务端调用链
开发语言·后端·golang
yuanlaile2 天前
Go 语言全栈实战学习路线:从零基础到云原生微服务的完整拼图
golang·go语言·go实战·go 全栈·微服务与 k8s