美文网首页
grpc-go 的安装和使用

grpc-go 的安装和使用

作者: MrRight_li | 来源:发表于2018-08-02 09:12 被阅读24次

    grpc-go 安装

    • 需求 Go 1.7 以上

    • 使用 go get 安装代码库

    go get -u google.golang.org/grpc
    
    • 安装 protocol buffers v3
    # mac os 下使用 homebrew 安装
    
    brew install automake
    brew install libtool
    brew install protobuf
    
    
    # cenos 7 
    1.下载源码包,解压,编译安装
    地址:https://github.com/google/protobuf/releases 选择Source code (tar.gz)下载
    
    2 编译安装
    tartar -zxvf protobuf- -zxvf prot 3.1.0.tar.gz -C /usr/local/
    cd protobuf-3.1.0/
    # 如果使用的不是源码,而是release版本 (已经包含gmock和configure脚本),可以略过这一步
    ./autogen.sh
    # 指定安装路径
    ./configure --prefix=/usr/local/protobuf
    #编译
    make
    # 测试,这一步很耗时间
    make check
    make install
    # refresh shared library cache.
    ldconfig
    注意make check这一步会花费比较多的时间
    
    3、设置一下环境变量 /etc/profile
    # (动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib
    # (静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径
    export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib
    
    export PATH=$PATH:/usr/local/protobuf/bin
    
    4、查看版本
    protoc --version
    之后,对于相同的系统环境,就不需要再编译了,直接将编译好的protobuf(目录:/usr/local/protobuf)分发到其他
    

    官方 example 运行

    • server 建立
    
    package main
    
    import (
        "log"
        "net"
    
        "golang.org/x/net/context"
        "google.golang.org/grpc"
        pb "google.golang.org/grpc/examples/helloworld/helloworld"
        "google.golang.org/grpc/reflection"
    )
    
    const (
        port = ":50051"
    )
    
    // server is used to implement helloworld.GreeterServer.
    type server struct{}
    
    // SayHello implements helloworld.GreeterServer
    func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
        return &pb.HelloReply{Message: "Hello " + in.Name}, nil
    }
    
    func main() {
        lis, err := net.Listen("tcp", port)
        if err != nil {
            log.Fatalf("failed to listen: %v", err)
        }
        s := grpc.NewServer()
        pb.RegisterGreeterServer(s, &server{})
        // Register reflection service on gRPC server.
        reflection.Register(s)
        if err := s.Serve(lis); err != nil {
            log.Fatalf("failed to serve: %v", err)
        }
    }
    
    • client 建立
    
    package main
    
    import (
        "log"
        "net"
    
        "golang.org/x/net/context"
        "google.golang.org/grpc"
        pb "google.golang.org/grpc/examples/helloworld/helloworld"
        "google.golang.org/grpc/reflection"
    )
    
    const (
        port = ":50051"
    )
    
    // server is used to implement helloworld.GreeterServer.
    type server struct{}
    
    // SayHello implements helloworld.GreeterServer
    func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
        return &pb.HelloReply{Message: "Hello " + in.Name}, nil
    }
    
    func main() {
        lis, err := net.Listen("tcp", port)
        if err != nil {
            log.Fatalf("failed to listen: %v", err)
        }
        s := grpc.NewServer()
        pb.RegisterGreeterServer(s, &server{})
        // Register reflection service on gRPC server.
        reflection.Register(s)
        if err := s.Serve(lis); err != nil {
            log.Fatalf("failed to serve: %v", err)
        }
    }
    

    相关文章

      网友评论

          本文标题:grpc-go 的安装和使用

          本文链接:https://www.haomeiwen.com/subject/ssfjvftx.html