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)
php
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

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

4年前 评论
Krisji (楼主) 4年前

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

水经验,没卵用

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!