在现代微服务架构中,gRPC 因其高性能、跨语言支持和基于 HTTP/2 的特性而广受欢迎。本篇 Java gRPC 教程 将手把手带你从零开始搭建一个完整的 gRPC 服务,即使是编程新手也能轻松上手!
gRPC 是 Google 开源的高性能远程过程调用(RPC)框架,它使用 Protocol Buffers(简称 Protobuf)作为接口定义语言(IDL)和消息序列化格式。相比传统的 REST API,gRPC 具有更低的延迟、更小的数据体积以及双向流式通信能力。
在开始之前,请确保你的开发环境已安装以下工具:
gRPC 使用 .proto 文件来定义服务接口和消息结构。我们创建一个简单的“用户服务”。
在项目根目录下创建 src/main/proto/user_service.proto 文件:
syntax = "proto3";option java_multiple_files = true;option java_package = "com.example.grpc";option java_outer_classname = "UserServiceProto";package user;// 定义 User 消息message User { int32 id = 1; string name = 2; string email = 3;}// 请求消息message GetUserRequest { int32 id = 1;}// 响应消息message GetUserResponse { User user = 1;}// 定义 gRPC 服务service UserService { rpc GetUser(GetUserRequest) returns (GetUserResponse);} 在 pom.xml 中添加 gRPC 和 Protobuf 相关依赖及插件:
<dependencies> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>1.58.0</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.58.0</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.58.0</version> </dependency></dependencies><build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.7.1</version> </extension> </extensions> <plugins> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <protocArtifact>com.google.protobuf:protoc:3.21.12:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.58.0:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> </plugins></build> 运行以下 Maven 命令,自动生成 gRPC 所需的 Java 类:
mvn compile 生成的代码位于 target/generated-sources/protobuf 目录下,包括消息类和服务抽象类。
创建服务实现类 UserServiceImpl.java:
package com.example.grpc;import io.grpc.stub.StreamObserver;public class UserServiceImpl extends UserServiceGrpc.UserServiceImplBase { @Override public void getUser(GetUserRequest request, StreamObserver<GetUserResponse> responseObserver) { // 模拟数据库查询 User user = User.newBuilder() .setId(request.getId()) .setName("张三") .setEmail("zhangsan@example.com") .build(); GetUserResponse response = GetUserResponse.newBuilder() .setUser(user) .build(); responseObserver.onNext(response); responseObserver.onCompleted(); }} 创建主类 GrpcServer.java:
package com.example.grpc;import io.grpc.Server;import io.grpc.ServerBuilder;import java.io.IOException;public class GrpcServer { public static void main(String[] args) throws IOException, InterruptedException { Server server = ServerBuilder.forPort(8080) .addService(new UserServiceImpl()) .build(); server.start(); System.out.println("gRPC 服务器已启动,监听端口 8080..."); server.awaitTermination(); }} 创建客户端 GrpcClient.java 来调用服务:
package com.example.grpc;import io.grpc.ManagedChannel;import io.grpc.ManagedChannelBuilder;public class GrpcClient { public static void main(String[] args) { ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8080) .usePlaintext() .build(); UserServiceGrpc.UserServiceBlockingStub stub = UserServiceGrpc.newBlockingStub(channel); GetUserRequest request = GetUserRequest.newBuilder().setId(1).build(); GetUserResponse response = stub.getUser(request); System.out.println("收到用户信息: " + response.getUser()); channel.shutdown(); }} 1. 先运行 GrpcServer 启动服务端。
2. 再运行 GrpcClient,你将看到输出:
收到用户信息: id: 1 name: "张三" email: "zhangsan@example.com"
恭喜你!你已经成功完成了这个 Java gRPC 教程,掌握了如何使用 gRPC 构建高性能的微服务。通过本教程,你学会了:
无论是 gRPC 入门 还是实际项目中的 gRPC 服务开发,这些基础知识都至关重要。希望这篇 Java gRPC 示例 能为你打下坚实的基础!
关键词提示:本文覆盖了 Java gRPC教程、gRPC入门、Java gRPC示例、gRPC服务开发 等核心 SEO 关键词。
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025127999.html