Java के लिए gRPC सर्वर स्केलेटन

पूरा gRPC सर्वर लागू करने के लिए, हमारा स्केलेटन gRPC सर्वर डाउनलोड किया जा सकता है.

शुरू करें

  1. src/main में जाकर, एक java gradle प्रोजेक्ट (grpc-booking-service) बनाएं और 'proto' डायरेक्ट्री बनाएं.

  2. बुकिंग सेवा की परिभाषा और हेल्थ जांच करने वाला प्रोटोकॉल डाउनलोड करें और उन्हें src/main/proto में डालें. ये फ़ाइलें, Actions Center API और परफ़ॉर्मेंस की जांच की सुविधा के लिए gRPC के तरीकों और मैसेज तय करती हैं.

  3. build.gradle फ़ाइल को अपडेट करें. साथ ही, Gradle के लिए डिपेंडेंसी और protobuf प्लग इन जोड़ें. 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, सर्वर सर्टिफ़िकेट चेन के लिए आपकी निजी कुंजी, पीकेसीएस#8 निजी कुंजी होनी चाहिए
    • trusted_client_roots.pem, क्लाइंट की पुष्टि करते समय भरोसेमंद माने जाने वाले रूट सर्टिफ़िकेट. भरोसेमंद रूट का यह सेट, Mozilla जैसी किसी संस्था से पाया जा सकता है. इसके अलावा, Google Internet Authority G2 के सुझाए गए रूट का सेट भी इंस्टॉल किया जा सकता है. दूसरे मामले में, आपको कभी-कभी रूट सर्टिफ़िकेट को मैन्युअल तरीके से अपडेट करना पड़ सकता है
  6. इस repo से सैंपल कोड पाएं:

      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 में डालें. दोनों फ़ाइलों में, क्या-क्या करना है के निर्देशों का पालन करके, बदलाव लागू करें.

  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

अन्य रेफ़रंस