Bạn có thể tải máy chủ gRPC khung của chúng tôi xuống để bắt đầu triển khai máy chủ gRPC hoàn chỉnh.
Bắt đầu
Tạo một dự án gradle java (grpc-booking-service), trong src/main, tạo một thư mục "proto".
Tải định nghĩa dịch vụ đặt phòng và giao thức kiểm tra tình trạng xuống, đặt các tệp này trong src/main/proto. Các tệp này xác định các phương thức và thông báo gRPC cho API Trung tâm hành động và tính năng Kiểm tra tình trạng.
Cập nhật tệp build.gradle, thêm các phần phụ thuộc và trình bổ trợ protobuf cho Gradle. Bạn có thể xem phần giới thiệu và hướng dẫn về trình bổ trợ protobuf-gradle tại đây.
apply plugin: 'java' apply plugin: 'com.google.protobuf' repositories { mavenCentral() } // updating the version in our release process. def grpcVersion = '1.8.0' // CURRENT_GRPC_VERSION def nettyTcNativeVersion = '2.0.7.Final' dependencies { compile "com.google.api.grpc:proto-google-common-protos:0.1.9" compile "io.grpc:grpc-netty:${grpcVersion}" compile "io.grpc:grpc-protobuf:${grpcVersion}" compile "io.grpc:grpc-stub:${grpcVersion}" compile "io.netty:netty-tcnative-boringssl-static:${nettyTcNativeVersion}" compile "org.bouncycastle:bcmail-jdk15:1.46" testCompile "io.grpc:grpc-testing:${grpcVersion}" testCompile "junit:junit:4.12" testCompile "org.mockito:mockito-core:1.9.5" } buildscript { repositories { mavenCentral() } dependencies { // ASSUMES GRADLE 2.12 OR HIGHER. Use plugin version 0.7.5 with earlier // gradle versions classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1' } } protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.4.0' } plugins { grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } } generateProtoTasks { all()*.plugins { grpc {} } } } // Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. sourceSets { main { java { srcDirs 'build/generated/source/proto/main/grpc' srcDirs 'build/generated/source/proto/main/java' } } } // Generate IntelliJ IDEA's .idea & .iml project files apply plugin: 'idea' // Provide convenience executables for trying out the examples. apply plugin: 'application' startScripts.enabled = false
Chạy lệnh sau để tạo thư viện và tự động tạo mã từ trình bổ trợ bản dựng protoc:
./gradlew build
Để bật TLS trên máy chủ, trong src/main/certificates/, bạn cần có các tệp sau:
- server_cert_chain.pem chuỗi chứng chỉ máy chủ ở định dạng PEM
- server_private_key.pem khoá riêng tư của bạn cho chuỗi chứng chỉ máy chủ, cần phải là khoá riêng tư PKCS#8
- trusted_client_roots.pem các chứng chỉ gốc đáng tin cậy khi xác thực ứng dụng, bạn có thể chọn lấy bộ gốc đáng tin cậy này từ một cơ quan như Mozilla hoặc cài đặt bộ gốc hiện được Cơ quan Internet của Google G2 đề xuất. Trong trường hợp sau, đôi khi bạn có thể phải cập nhật chứng chỉ gốc theo cách thủ công
Truy xuất mã mẫu từ kho lưu trữ này:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
đặt BookingService.java trong src/main/java/ext/maps/booking/partner/v2, đặt Health.java trong src/main/java/grpc/health/v1. Trong cả hai tệp, hãy làm theo TODO để hoàn tất quá trình triển khai.
Cập nhật tệp gradle.build để chỉ định quá trình tạo tệp thực thi máy chủ bằng cách thêm mã sau:
task bookingService(type: CreateStartScripts) { mainClassName = 'ext.maps.booking.partner.v2.BookingService' applicationName = 'booking-service' outputDir = new File(project.buildDir, 'tmp') classpath = jar.outputs.files + project.configurations.runtime } applicationDistribution.into('bin') { from(bookingService) fileMode = 0755 }
Biên dịch máy chủ:
./gradlew installDist
Chạy máy chủ đặt phòng:
./build/install/grpc-booking-service/bin/booking-service
Cấu trúc thư mục cuối cùng
src
|---main
|---certificates
|---server_cert_chain.pem
|---server_private_key.pem
|---trusted_client_roots.pem
|---java
|---ext.maps.booking.partner.v2.BookingService.java
|---grpc.health.v1.Health.java
|---proto
|---booking_service.proto
|---health.proto
|---test
Tài liệu tham khảo khác
Đối với các công cụ xây dựng khác, hãy truy cập vào gRPC-java và tải ví dụ xuống, hãy kiểm tra grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java