GRPC安装使用教程

1、下载 protocolbuffers

Release Protocol Buffers v26.1 · protocolbuffers/protobuf · GitHub

2、加入环境变量

需要将下载后的bin目录,加入环境变量

输入protoc表示加入成功

 3、下载grpc依赖

go get google.golang.org/grpc

4、安装protoc-gen-go 

grpc可能存在调用其他语言,所以需要protocol,除了这个编译器还需要各个语言的代码生成工具城为protoc-gen-go,同样需要加入环境变量

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

4、生成proto文件

syntax = "proto3";
//当前目录生成
option go_package = ".;service";

package helloworld;

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// The request message containing the user's name.
// 1为消息号
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

5、生产go代码

编写好文件后生成go代码,远程调用一般使用grpc中代码

protoc --go_out=. hello.proto
protoc --go-grpc_out=. hello.proto

6、具体使用操作

https://github.com/lemonth12/grpc

7、安全grpc

ssl/tls认证

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions  ,下载后需要配置环境变量

GRPC(Google Remote Procedure Call)是一种高性能、通用的开源 RPC 框架,可以在任何地方运行。它使得客户端和服务器应用程序可以透明地相互通信,而无需知道对方的语言和平台。在本教程中,我们将介绍如何使用Java实现简单的gRPC应用程序。 1. 安装gRPC 首先,您需要安装gRPC。请按照官方文档的说明进行安装:https://grpc.io/docs/languages/java/quickstart/ 2. 创建proto文件 接下来,您需要创建一个.proto文件,定义您的服务和消息格式。例如,以下是一个简单的例子: ``` syntax = "proto3"; option java_multiple_files = true; option java_package = "com.example.grpc"; option java_outer_classname = "HelloWorldProto"; service HelloWorld { rpc SayHello (HelloRequest) returns (HelloResponse) {} } message HelloRequest { string name = 1; } message HelloResponse { string message = 1; } ``` 这个.proto文件定义了一个名为HelloWorld的服务,该服务有一个名为SayHello的方法,该方法接受一个HelloRequest消息并返回一个HelloResponse消息。 3. 生成Java代码 使用gRPC的protobuf编译器,您可以生成Java代码以实现您的服务。在命令行中,运行以下命令: ``` protoc --java_out=<output_directory> <proto_file>.proto ``` 例如,如果您的.proto文件名为helloworld.proto,输出目录为src/main/java,那么您可以运行以下命令: ``` protoc --java_out=src/main/java helloworld.proto ``` 这将生成一个Java类,该类实现了您的服务和消息格式。 4. 实现服务 现在,您可以编写Java代码来实现您的服务。以下是一个简单的实现示例: ``` import io.grpc.Server; import io.grpc.ServerBuilder; import io.grpc.stub.StreamObserver; import com.example.grpc.*; import java.io.IOException; public class HelloWorldServer { private int port = 50051; private Server server; private void start() throws IOException { server = ServerBuilder.forPort(port) .addService(new HelloWorldImpl()) .build() .start(); System.out.println("Server started, listening on " + port); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { System.err.println("*** shutting down gRPC server since JVM is shutting down"); HelloWorldServer.this.stop(); System.err.println("*** server shut down"); } }); } private void stop() { if (server != null) { server.shutdown(); } } /** * Await termination on the main thread since the grpc library uses daemon threads. */ private void blockUntilShutdown() throws InterruptedException { if (server != null) { server.awaitTermination(); } } public static void main(String[] args) throws IOException, InterruptedException { final HelloWorldServer server = new HelloWorldServer(); server.start(); server.blockUntilShutdown(); } static class HelloWorldImpl extends HelloWorldGrpc.HelloWorldImplBase { @Override public void sayHello(HelloRequest request, StreamObserver<HelloResponse> responseObserver) { String message = "Hello " + request.getName() + "!"; HelloResponse response = HelloResponse.newBuilder().setMessage(message).build(); responseObserver.onNext(response); responseObserver.onCompleted(); } } } ``` 这个示例代码创建了一个名为HelloWorldServer的类,该类实现了您的服务。它使用ServerBuilder来创建服务器,并将服务添加到服务器中。当服务器启动时,它将打印一条消息,并将关闭挂钩添加到运行时中。当服务器关闭时,它将打印另一条消息。 服务的实现在HelloWorldImpl类中。它实现了您的服务定义中的SayHello方法,并使用请求中的名称构造响应消息。 5. 实现客户端 最后,您可以编写Java代码来实现客户端,以便使用您的服务。以下是一个简单的实现示例: ``` import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import com.example.grpc.*; public class HelloWorldClient { private final ManagedChannel channel; private final HelloWorldGrpc.HelloWorldBlockingStub blockingStub; public HelloWorldClient(String host, int port) { channel = ManagedChannelBuilder.forAddress(host, port) .usePlaintext() .build(); blockingStub = HelloWorldGrpc.newBlockingStub(channel); } public void shutdown() throws InterruptedException { channel.shutdown().awaitTermination(5, TimeUnit.SECONDS); } public void greet(String name) { HelloRequest request = HelloRequest.newBuilder().setName(name).build(); HelloResponse response = blockingStub.sayHello(request); System.out.println(response.getMessage()); } public static void main(String[] args) throws Exception { HelloWorldClient client = new HelloWorldClient("localhost", 50051); try { String user = "world"; if (args.length > 0) { user = args[0]; /* Use the arg as the name to greet if provided */ } client.greet(user); } finally { client.shutdown(); } } } ``` 这个示例代码创建了一个名为HelloWorldClient的类,该类连接到服务器并调用您的服务。它使用ManagedChannelBuilder来创建一个通道,并将其用于创建一个HelloWorldGrpc.HelloWorldBlockingStub,该stub可以用于调用您的服务。它还定义了一个greet方法,该方法接受一个名称并调用您的服务,然后打印响应消息。 6. 运行您的应用程序 现在,您可以运行您的应用程序。首先启动服务器: ``` $ java HelloWorldServer ``` 然后启动客户端: ``` $ java HelloWorldClient ``` 您应该能够看到客户端打印出“Hello world!”(如果您没有提供名称参数)或“Hello <name>!”(如果您提供了名称参数)。 这就是如何在Java中使用gRPC创建简单的客户端-服务器应用程序的介绍。希望这个教程能够帮助您入门gRPC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值