• go语言使用grpc


    什么是rpc

    RPC(Remote Procedure Call)是远程过程调用。可以像调用本地服务一样取调用远程服务。百度的解释是它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。暂时可以先把他的功能理解为何api一样。

    rpc调用过程

    rpc是基于client / server的,所以在使用rpc时,首先就是建立连接。

    rpc和RESTful API的一个区别就是,在进行数据传输的时候,rpc使用的是二进制数据,而API使用的JSON,所以rpc在进行调用的时候需要对数据进行序列化。
    在这里插入图片描述

    rpc与RESTful API的区别

    传输效率上。 rpc使用自定义的协议,对传输数据进行二进制序列化,让请求报文体积更小。但是相对而言就多了序列化的步骤,比较麻烦,RESUful就相对简单些。

    本质区别上看,RPC是基于TCP实现的,RestFul是基于HTTP来实现的。

    因为HTTP协议是各个框架都普遍支持的。在toC情况下,因为不知道情况来源的框架、数据形势是什么样的,所以在网关可以使用Restful利用http来接受。而在微服务内部的各模块之间因为各协议方案是公司内部自己定的,所以知道各种数据方式,可以使用TCP传输以使各模块之间的数据传输更快。所以可以网关和外界的数据传输使用RESTFUL,微服务内部的各模块之间使用RPC。

    golang使用grpc

    什么是gprc

    gRPC是由Google开发的一款语言中立、平台中立、开源的远程过程调用( RPC)技术,主要用来解决性能损失的问题。gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建。它使用HTTP/2作为通信协议,使用Protocol Buffers作为序列化协议。

    前置工作

    grpc官网
    1.安装go版本的proto

    Linux:apt install -y protobuf-compiler
    Mac:brew install protobuf
    Windows: 到  https://github.com/protocolbuffers/protobuf/releases 下载相应的包
    

    2.安装go语言的插件 protoc-gen-go

    go get -u  google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
    go get -u google.golang.org/protobuf/cmd/protoc-gen-go@v1.26   
    

    3.将GOPATH下的bin目录添加到环境变量中

    go get -u google.golang.org/protobuf/cmd/protoc-gen-go@v1.26   
    

    proto 文件如何编写

    https://colobu.com/2019/10/03/protobuf-ultimate-tutorial-in-go/
    

    在proto文件编写完毕,在proto文件路径下使用命令
    protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative xxxx.proto

    「注意:」上述的命令中最后的 xxxx.proto 中的xxxx替换自己 proto文件的名字

  • 相关阅读:
    前端必备的 HTTP 知识!看这篇就够了!!
    Net DB Web多级缓存的实现
    MySQL数据库之主从复制
    MATLB|和她跌宕起伏最终到达人生之峰【浪漫旅途】
    pandas(进阶操作)-- 处理非数值型数据 -- 数据分析三剑客(核心)
    NeurlPS‘22 推荐系统论文梳理
    java 中的Object类与Objects类
    【高等数学基础进阶】多元函数的极值与最值
    xamarin使用Rg.Plugins.Popup.Pages报Specified cast is not valid
    Blazor WebAssembly 渐进式 Web 应用程序 (PWA) 离线处理数据
  • 原文地址:https://blog.csdn.net/qq_43747991/article/details/127038776