Rpc 的时代要来临了

1 RPC的阐述

rpc就是远程调用的意思 客户端发送一个数据 服务端接手并且解析 中间过程互相建立tcp 连接 ,指定的协议规范 可以用以下这个协议 为什么要用它呢 现如今时代异构系统互相调用 方便而且传输不比json慢

Google Protocol Buffer( 简称 Protobuf)
轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。
 特点:性能高、传输快、维护方便,反正就是各种好,各种棒
一些第三方rpc库都会支持protobuf  

2 RPC的使用方式

2.1 安装
https://github.com/protocolbuffers/protobuf/releases/latest
下载它 并且解压 把protoc39\bin 加入到你的环境变量
这是protobuf编译器,将.proto文件,转译成protobuf的原生数据结构
2.2 GO中的使用方式
    2.2.1 首先你要使用go的一个插件 go get github.com/golang/protobuf/protoc-gen-go 此时会在你的GOPATH 的bin目录下生成可执行文件. protobuf的编译器插件protoc-gen-go
    2.2.2 创建如下中间文件叫做prod.proto
    syntax="proto3";
    message  ProdRequest {
        int32 prod_id =1;   //传入的商品ID
    }
    message ProdResponse{
        int32 prod_stock=1;//商品库存
    }
   然后执行 protoc --go_out=../Prod.proto  就会生成一个协议文件,大致完成。

3 RPC 的服务端简单使用 【以GO做个范列】

3.3.1  建立一个服务结构体文件Prod.proto
    syntax="proto3";
    package services;
    message  ProdRequest {
            int32 prod_id =1;   //传入的商品ID
    }
    message ProdResponse{
            int32 prod_stock=1;//商品库存
    }
3.3.2 建立一个服务结构体
    type ProdService struct {
    }
    func(this *ProdService) GetProdStock(ctx context.Context, request *ProdRequest) (*ProdResponse, error) {
          return &ProdResponse{ProdStock:20},nil
    }
3.3.3 建立一个RPC服务 端口8081
    rpcServer:=grpc.NewServer()
    services.RegisterProdServiceServer(rpcServer,new(services.ProdService))
    lis,_:=net.Listen("tcp",":8081")
    rpcServer.Serve(lis)
    注意:使用此包来开发
    google.golang.org/grpc

4 RPC的客户端调用 【以GO做个范列】

引入  google.golang.org/grpc 这个包
client,err:=grpc.Dial(":8081",grpc.WithInsecure())
if err!=nil{
    log.Fatal(err)
}
defer client.Close()
prodClient:=services.NewProdServiceClient(client)
res,err:=prodClient.GetProdStock(
    context.Background(),
    &services.ProdRequest{ProdId:12},
    )
if err!=nil{
    log.Fatal(err)
}
fmt.Println(res.ProdStock)
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

阿里云的国际短信现在就是用 RPC 了

2个月前 评论
Krisji (楼主) 2个月前

Rpc一直都存在。
以前做项目的时候,发布项目为了模块和功能之间不受影响,会按照功能划分子项目,分别部署在不同地方独立发布,模块与模块直接通过http接口调用,那也算是rpc,只不过那个时候没有专门使用Rpc这个词汇罢了。

2个月前 评论
Krisji (楼主) 2个月前
jobsssss (作者) 2个月前

==
标题党到这种程度?还以为是有什么事件,结果就这样而已?

水经验,没卵用

2个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!