zoukankan      html  css  js  c++  java
  • gRPC

    上篇博客我们学习了 Proto3 协议,今天我们来学习 gRPC 框架,这两个一般都会放在一起使用,那我们开始吧

    gRPC 简介

     gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。它的特点:

    [1]HTTP/2;

    [2]protobuf;

    [3]客户端和服务端基于同一份 IDL(接口定义语言);

    [4]移动网络的良好支持;

    [5]多语言;

    gRPC 服务启动

    首先编写一个服务端代码,然后运行起来。主程序代码如下:

    package main
    
    import (
        "context"
        "fmt"
        "google.golang.org/grpc"
        "google.golang.org/grpc/reflection"
        pb "greeter/proto"
        "log"
        "net"
    )
    
    type GreetServiceServer struct {
    
    }
    
    func (s *GreetServiceServer) SayHello(ctx context.Context, in *pb.SayHelloReq) (*pb.SayHelloRsp, error) {
        log.Println("SayHi begin...")
        resp := "Hello: " + in.Name
        return &pb.SayHelloRsp{Response: resp}, nil
    }
    
    func main() {
        lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", "127.0.0.1", 8888))
        if err != nil {
            log.Fatalf("dail failed: %v", err)
            return
        }
        grpcServer := grpc.NewServer()
        // 注册 grpcurl 的 reflection 服务
        reflection.Register(grpcServer)
        pb.RegisterGreetServiceServer(grpcServer, &GreetServiceServer{})
        log.Println("gRPC server is running...")
        grpcServer.Serve(lis)
    }

    开启 gRPC 服务的步骤:

    [1] 监听指定 TCP 端口,用于接收客户端请求

    [2] 创建 gRPC Server 的实例对象

    [3] gRPC Server 内部服务和路由的注册

    [4] Server() 调用服务器以执行阻塞等待,直到进程被终止或被 Stop() 调用

    grpcurl 命令

    安装

    $ go get github.com/fullstorydev/grpcurl
    $ go install github.com/fullstorydev/grpcurl/cmd/grpcurl

    注册 reflection 服务

    grpcurl 对于其它 grpc 服务的感知皆来自 reflection 服务,所以在注册自己的服务之前需要先注册 reflection 服务,否则会提示:

    grpcurl 的使用

    查询服务列表

     查询服务提供的方法

     查看更详细的描述

     获取参数详细信息

     调用服务方法

    :上述命令是在 windows 系统上所使用的格式,如果是在类 Linux 系统上,则只需要:

    $ grpcurl -d '{"Name":"sween"}' --plaintext localhost:8888 greeter.greetService.SayHello
  • 相关阅读:
    树莓派AI视觉云台——8、WiringPi库函数
    树莓派AI视觉云台——7、树莓派系统备份
    树莓派AI视觉云台——7、树莓派系统备份
    树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
    树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
    树莓派AI视觉云台——5.SSH文件传输
    暑假第一周进度报告
    teamfinal使用体验(15号作品)
    《驱动学习
    《驱动学习
  • 原文地址:https://www.cnblogs.com/zpcoding/p/12402189.html
Copyright © 2011-2022 走看看