โครงสร้างเซิร์ฟเวอร์ gRPC สำหรับ Java

คุณดาวน์โหลดเซิร์ฟเวอร์ gRPC แบบโครงกระดูกได้ เพื่อช่วยในการเริ่มต้นใช้งานเซิร์ฟเวอร์ gRPC ที่สมบูรณ์

เริ่มต้นใช้งาน

  1. สร้างโปรเจ็กต์ Java Gradle (grpc-booking-service) ภายใต้ src/main สร้างไดเรกทอรี "proto"

  2. ดาวน์โหลดคำจำกัดความของบริการการจองและโปรโตคอลการตรวจสอบประสิทธิภาพการทำงาน โดยวางไว้ใต้ src/main/proto ไฟล์เหล่านี้กำหนดเมธอดและข้อความ gRPC สำหรับ Actions Center API และการตรวจสอบประสิทธิภาพการทำงาน

  3. อัปเดตไฟล์ build.gradle เพิ่มทรัพยากร Dependency และปลั๊กอิน protobuf สำหรับ Gradle คุณสามารถอ่านบทแนะนำและคำแนะนำสำหรับ protobuf-gradle-plugin ได้ที่นี่

        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. เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างไลบรารีและสร้างโค้ดโดยอัตโนมัติจากปลั๊กอินบิลด์ของ protoc

      ./gradlew build
    
  5. หากต้องการเปิดใช้ TLS ในเซิร์ฟเวอร์ คุณต้องมีไฟล์ต่อไปนี้ในส่วน src/main/certificates/

    • server_cert_chain.pem เชนใบรับรองเซิร์ฟเวอร์ในรูปแบบ PEM
    • server_private_key.pem คีย์ส่วนตัวของคุณสำหรับเชนใบรับรองเซิร์ฟเวอร์ต้องเป็นคีย์ส่วนตัว PKCS#8
    • trusted_client_roots.pem คือใบรับรองรูทที่เชื่อถือได้เมื่อตรวจสอบสิทธิ์ไคลเอ็นต์ คุณจะเลือกรับรูทที่เชื่อถือได้ชุดนี้จากหน่วยงานอย่างเช่น Mozilla หรือติดตั้งชุดรูทที่ Google Internet Authority G2 แนะนำในปัจจุบันก็ได้ ในกรณีหลัง คุณอาจต้องอัปเดตใบรับรองรูทด้วยตนเองหลายครั้ง
  6. เรียกโค้ดตัวอย่างจากที่เก็บนี้:

      git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
    

    วาง BookingService.java ใต้ src/main/java/ext/maps/booking/partner/v2 จากนั้นวาง Health.java ใต้ src/main/java/grpc/health/v1 ในทั้ง 2 ไฟล์ ให้ทำตามสิ่งที่ต้องทำเพื่อติดตั้งใช้งานให้เสร็จสมบูรณ์

  7. อัปเดตไฟล์ gradle.build เพื่อระบุการสร้างไฟล์ปฏิบัติการของเซิร์ฟเวอร์ โดยเพิ่มโค้ดต่อไปนี้

    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. คอมไพล์เซิร์ฟเวอร์:

    ./gradlew installDist
    
  9. เรียกใช้เซิร์ฟเวอร์การจองด้วยคำสั่งต่อไปนี้

    ./build/install/grpc-booking-service/bin/booking-service
    

โครงสร้างไดเรกทอรีขั้นสุดท้าย

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

ข้อมูลอ้างอิงอื่นๆ

  • สำหรับเครื่องมือสร้างอื่นๆ โปรดไปที่ gRPC-java และดาวน์โหลดตัวอย่างได้ที่ grpc-java/examples

     git clone -b v1.9.0 https://github.com/grpc/grpc-java
    
  • gRPC java Transport Security (TLS)

  • gRPC API V2