# springgrpc **Repository Path**: wuyuan/springgrpc ## Basic Information - **Project Name**: springgrpc - **Description**: springgrpc注册到consul - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-25 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 根据代码结构,我来为您生成这个项目的 README 文档。 ```markdown # Spring gRPC 一个基于 Spring Boot 与 gRPC 整合的微服务示例项目,结合 Consul 服务发现实现 gRPC 服务的高可用调用。 ## 项目简介 本项目展示了如何在 Spring Boot 应用中集成 gRPC 服务,并利用 Consul 进行服务发现和负载均衡。项目包含一个 gRPC 服务端(HelloService),客户端可通过服务发现获取健康的服务实例进行调用。 ## 技术栈 - **Spring Boot** - 应用框架 - **gRPC** - 远程过程调用框架 - **Consul** - 服务发现与配置中心 - **JPA / Hibernate** - 数据持久化 - **H2 Database** - 嵌入式数据库(开发环境) ## 项目结构 ``` springgrpc/ ├── src/main/java/com/podman/springgrpc/ │ ├── SpringgrpcApplication.java # Spring Boot 启动类 │ ├── config/ │ │ └── GrpcConsulConfig.java # gRPC Consul 配置 │ ├── entity/ │ │ └── Student.java # 学生实体类 │ ├── grpc/service/ │ │ └── HelloServiceImplBase.java # gRPC 服务实现 │ ├── proto/ │ │ ├── HelloRequest.java # protobuf 生成 │ │ ├── HelloReply.java # protobuf 生成 │ │ └── SimpleGrpc.java # gRPC 存根 │ ├── repository/ │ │ └── StudentRepository.java # JPA 仓储 │ └── service/ │ └── PersonService.java # 业务服务层 ├── src/main/proto/ │ └── hello.proto # gRPC 协议定义 ├── src/main/resources/ │ └── application.yml # 应用配置 ├── py/ │ ├── main.py # Python 测试脚本 │ └── pyproject.toml # Python 项目配置 └── pom.xml # Maven 配置 ``` ## 核心功能 ### 1. gRPC 服务端 - 提供 `SayHello` 方法,接收 HelloRequest,返回 HelloReply - 使用 `@GrpcService` 注解自动注册 gRPC 服务 - 支持通过配置文件指定 gRPC 端口 ### 2. Consul 服务发现 - 集成 Spring Cloud Consul 实现服务注册 - 自动发现健康的服务实例 - 支持负载均衡策略获取下一个可用实例 ### 3. 数据持久化 - JPA 实体映射 Student 表 - 提供 CRUD 操作接口 ## 快速开始 ### 前置要求 - JDK 8+ - Maven 3.0+ - Consul(可选,用于服务发现) ### 构建项目 ```bash mvn clean package -DskipTests ``` ### 运行应用 ```bash java -jar target/springgrpc-0.0.1-SNAPSHOT.jar ``` ## gRPC 服务定义 ```protobuf syntax = "proto3"; package com.podman.springgrpc.proto; option java_package = "com.podman.springgrpc.proto"; option java_outer_classname = "HelloWorldProto"; service Simple { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } ``` ## 客户端调用示例 使用 grpcurl 调用 gRPC 服务: ```bash grpcurl -plaintext localhost:9090 com.podman.springgrpc.proto.Simple/SayHello ``` 或使用 Python 脚本: ```bash cd py uv run main.py ``` ## 配置说明 主要配置项在 `application.yml` 中: ```yaml spring: application: name: springgrpc cloud: consul: host: localhost port: 8500 grpc: server: port: 9090 server: port: 8080 ``` ## 测试 ```bash mvn test ``` ## 许可证 本项目仅供学习参考使用。 ```