• GRPC


    GRPC

    1:grpc和rpc的区别是什么

    rpc是一种协议,grpc是基于rpc协议实现的一种框架。这种框架有好几种!其中GRPC是一种现代化开源的高性能RPC框架,他能够运行与任意的环境之间,

    最初由谷歌进行开发,注意grpc的序列化是通过protocol buffers实现的。

    grpc的解决rpc三大问题:

    ①协议约定。gRPC 的协议是 Protocol Buffers,是一种压缩率极高的序列化协议,Google 在 2008 年
    开源了 Protocol Buffers,支持多种编程语言,所以 gRPC 支持客户端与服务端可以用不同语言实现。 ②传输协议。gRPC 的数据传输用的是 Netty Channel, Netty 是一个高效的基于异步 IO 的网络传输架构。
    Netty Channel 中,每个 gRPC 请求封装成 HTTP 2.0 的 Stream。 ③服务发现。gRPC 本身没有提供服务发现的机制,需要通过其他组件

    grpc是一种实现了rpc协议的框架,并且分别通过protocol buffer、netty channel 以及服务发现组件解决rpc的协议约定、传输协议、服务发现三大问题。

    2:grpc的应用场景

    - 实时聊天; - 微服务系统。

    3:GRPC的安装

    我们要想使用grpc必须要安装。不像rpc,他go内置了

    Windows安装

    别人安装文档 https://studygolang.com/articles/21276
    安装文档:https://www.cnblogs.com/hongjijun/p/13724738.html

    1:https://github.com/protocolbuffers/protobuf/releases 下载对应的操作系统,然后解压并且把解压后bin文件,添加到PATH中去!

    2:安装grpc

    go get google.golang.org/grpc
    

    这一步安装的是gRPC的核心库,但是这一步是需要(特别的上网方式)的。所以如果在安装过程中出错了,你可以科学一波,也可以找一找其他的安装方法。

    3:protoc-gen-go

    上一步安装的是protocol编译器。而上文中我们提到了可以生成各种不同语言的代码。因此,除了这个编译器,我们还需要配合各个语言的代码生成工具。

    对于Golang来说,称为protoc-gen-go

    不过在这儿有个小小的坑,github.com/golang/protobuf/protoc-gen-gogoogle.golang.org/protobuf/cmd/protoc-gen-go是不同的。

    区别在于前者是旧版本,后者是google接管后的新版本,他们之间的API是不同的,也就是说用于生成的命令,以及生成的文件都是不一样的。

    因为目前的gRPC-go源码中的example用的是后者的生成方式,为了与时俱进,本文也采取最新的方式。

    你需要安装两个库:

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

    因为这些文件在安装grpc的时候,已经下载下来了,因此使用install命令就可以了,而不需要使用get命令。

    然后你看你的$GOPATH路径,应该有标1和2的两个文件

    4:实现GRPC的案例

    gPRC 生成 go 代码为什么会有 
    UnimplementedServer 和 mustEmbedUnimplementedServer?
    https://blog.csdn.net/canon_in_d_major/article/details/108135724

    我们可以直接看官网的案例。如果你已经安装好了上面的grpc

     hello.proto

     使用命令生成以下两个文件:

    protoc --go-out=./ Hello.proto
    protoc --go-grpc_out=./ Hello.proto

    Hello_grpc_pb.go文件

     server.go

     client.go

    参考博客:https://blog.csdn.net/qq_38721452/article/details/121566018

  • 相关阅读:
    Java基础---Java 开发工具IntelliJ IDEA 安装
    Java基础---Java循环区别
    Java基础---JavaJShell脚本工具
    Java基础---Java方法
    Java基础---Java三元运算
    Java基础---Java变量
    Java基础---Java数据类型
    Java基础---Java常量
    “ERROR: Cannot read property 'fileCoverage' of undefined...”
    矩阵乘积
  • 原文地址:https://www.cnblogs.com/hero799/p/15845193.html
Copyright © 2020-2023  润新知