Google gRPC 简介

本文介绍了Google的gRPC框架,它是一个基于HTTP/2和Protobuf的RPC实现,特别适合移动场景下的通信。gRPC支持多种语言,包括c、Java、golang,并以c共享库方式支持其他语言。通过HTTP/2协议,gRPC实现了连接多路复用和高效的数据传输,优化了移动端的客户端与服务端通信。此外,文章还提到了gRPC的协议设计,如使用HTTP Body发送请求和响应数据,Header表示控制信息。
摘要由CSDN通过智能技术生成
Google gRPC 简介

1.   简介

      Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的RPC 实现。

      其中github地址: https://github.com/grpc/grpc

      Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开源了Protobuf 序列化反序列化的代码,而没有开源RPC 的实现,于是存在着众多良莠不齐的第三方RPC 实现。

      从实现和特性看来,grpc 更多的是考虑移动场景情况下客户端和服务端的通信,正如其自称的「general RPC framework that puts mobile and HTTP/2 first」。HTTP2 本身提供了连接多路复用、Body 和

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Spring和Google gRPC的整合可以实现使用gRPC协议的远程过程调用(RPC)在Spring应用程序中的使用。下面一些步骤: 1. 在pom.xml中添加以下赖项: ``` <dependency> <groupIdorg.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifact> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>${grpc.version}</version> </dependency> ``` 2. 创建服务定义文件 使用protobuf语言定义您的gRPC服务。这将生成Java类以进行客户端和服务器端通信。例如,假设我们想要定义一个简单的问候服务,服务定义文件可能如下所示: ``` syntax = "proto3"; option java_multiple_files = true; option java_package = "com.example.grpc"; option java_outer_classname = "HelloWorldProto"; package helloworld; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } ``` 3. 生成Java类 使用protobuf编译器生成Java类。在pom.xml文件中添加以下插件: ``` <build> <plugins> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>${protobuf.plugin.version}</version> <configuration> <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 然后运行以下maven命令来生成Java类: ``` mvn clean package ``` 4. 创建gRPC客户端 在Spring应用程序中创建gRPC客户端。您可以使用@GrpcClient注释来注入您的客户端。例如: ``` @Component public class MyClient { @GrpcClient("myService") private GreeterGrpc.GreeterBlockingStub greeterStub; public String sendMessage(String name) { HelloRequest request = HelloRequest.newBuilder().setName(name).build(); HelloReply response = greeterStub.sayHello(request); return response.getMessage(); } } ``` 5. 创建gRPC服务器 在Spring应用程序中创建gRPC服务器。您可以使用@GrpcService注释来指定您的服务。例如: ``` @Service public class MyServiceImpl extends GreeterGrpc.GreeterImplBase { @Override public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) { String message = "Hello " + request.getName() + "!"; HelloReply reply = HelloReply.newBuilder().setMessage(message).build(); responseObserver.onNext(reply); responseObserver.onCompleted(); } } ``` 6. 配置gRPC服务器 在Spring应用程序中配置gRPC服务器。例如: ``` @Configuration public class GrpcConfiguration { @Value("${grpc.server.port}") private int grpcServerPort; @Bean public Server grpcServer() throws IOException { Server server = ServerBuilder.forPort(grpcServerPort) .addService(myService()) .build(); server.start(); return server; } @Bean public MyServiceImpl myService() { return new MyServiceImpl(); } } ``` 7. 配置gRPC客户端 在Spring应用程序中配置gRPC客户端。例如: ``` @Configuration public class GrpcConfiguration { @Value("${grpc.server.host}") private String grpcServerHost; @Value("${grpc.server.port}") private int grpcServerPort; @Bean public ManagedChannel grpcManagedChannel() { return ManagedChannelBuilder.forAddress(grpcServerHost, grpcServerPort) .usePlaintext() .build(); } @Bean public MyClient myClient() { return new MyClient(); } } ``` 这些步骤可以帮助您在Java Spring应用程序中集成Google gRPC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值