Bộ xương máy chủ gRPC dành cho Java

Bạn có thể tải máy chủ gRPC 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

  1. Tạo một dự án gradle Java (grpc-booking-service), trong src/main, hãy tạo một thư mục "proto".

  2. Tải định nghĩa về dịch vụ đặt phònggiao thức kiểm tra tình trạng xuống, đặt các nội dung 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 Actions Center API và tính năng Kiểm tra tình trạng.

  3. 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 thông tin giới thiệu và hướng dẫn về protobuf-gradle-plugin 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
    
  4. Chạy lệnh sau để tạo thư viện và tự động tạo mã qua trình bổ trợ bản dựng protoc:

      ./gradlew build
    
  5. Để bật TLS trên máy chủ, trong src/main/certificates/ thì bạn phải có các tệp sau:

    • server_cert_chain.pem chuỗi chứng chỉ máy chủ của bạn ở đị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 chứng chỉ gốc được tin cậy khi xác thực ứng dụng, bạn có thể chọn lấy nhóm gốc đáng tin cậy này từ một cơ quan có thẩm quyền như Mozilla hoặc cài đặt nhóm gốc hiện do Google Internet Authority G2 đề xuất. Trong trường hợp thứ hai, thỉnh thoảng bạn có thể phải cập nhật chứng chỉ gốc theo cách thủ công
  6. 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.

  7. Cập nhật tệp gradle.build để chỉ định việc 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
    }
    
  8. Biên dịch máy chủ:

    ./gradlew installDist
    
  9. 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