美文网首页Java 杂谈
gRPC入门指南详解

gRPC入门指南详解

作者: 爱学习的蹭蹭 | 来源:发表于2019-05-14 22:45 被阅读1次

    1、gRPC 官方与简要

    GitHub
    gRPC是一个现代的,开源的,高性能的远程过程调用(RPC)框架,可以在任何地方运行,gRPC使客户端和服务器应用程序能够透明地进行通信,并简化了连接系统的构建。

    2、gRPC 的特征

    • grpc 生成的服务端和客户端都统称stub
    • gRPC是一个可伸缩的框架(scale)
    • 实现双向的流(Bi-directional streaming) *重点和难点
    • 容易构建分布式(distributed)应用和服务
    • protocol buffer versions proto3 在grpc建议使用
    • payload 负载
    • proto的rpc关键字
    • stream 独立的流(read 、write)
    • grpc提供了一个插件
    • gRPC是基于http2协议去实现rpc通信
    • blocking 是同步阻塞

    3、gRPC 的语法

    • java_multiple_files 支持生成多个文件
    • repeated 重复关键字(封装list)

    4、gRPC 基于3种传输实现

    • netty
    • okHttp(Android)
    • InProcess 进程

    5、gRPC 生明周期

    • gRPC 生明周期其实就是解析四种stream的工作原理

    6、gradlew与gradle使用

    • gradlew 是由gradle wrapper 包装器构成
    • gradlew 在本地没有gradle也可以构建项目,它会自动下载gradle
    • gradlew wrapper --gradle -version 3.5 命令使用
    • gradle generate proto build 编译proto3文件
    • gradle clean generate proto 清除文件
    • gradle clean build -x test 清除且编译不包括test文件

    7、StreamObserver 流观察者

    • StreamObserver 只要客户端以流形式向服务端发送请求,那么这种请求都是异步 (GRPC规范行为)

    8、 JVM回调钩子

    • Runtime.getRuntime().addshutdownHook JVM回调钩子,对接收程序收尾的工作(释放资源)异步
    • Runtime JVM 不允许实例化这个类,只能通过getRuntime获取,由于Runtime是私有(private)
      private Server server;
      Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                 //关闭server
                this.stop();
            }));
     //关闭grpc的Server 
     private void stop() {
            if(null != this.server) {
                this.server.shutdown();
            }
        }
    

    9、什么时候回调用addshutdownHook

    • 1、程序正常退出或非线程退出
    • 2、虚拟机在响应用户的中断,如:ctrl + C或操作系统的中断或宕机
    • 3、当虚拟机开始将要序列化关闭所有注册停止
    • 4、一旦序列开始终止会通过halt方法
    • 5、不同服务调用可能存在死锁(不建议在钩子里面处理过长时间的业务逻辑)

    10、gRPC 要点

    • grpc 比较重要,比thrift偏难入手,grpc是protobuf的升级版,将来可能会广泛使用,它基于http2协议实现

    11、grpc的依赖核心工程

    依赖核心工程

    12、解决gradle编译多个文件重复问题

    • generatedFilesBaseDir = "路径指定"
    • grpc -> setOutputSubDir "java" 指定grpc的sub生成路径
    • protobuf-gradle-plugin 是一个groovy语言开发

    相关文章

      网友评论

        本文标题:gRPC入门指南详解

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