هيكل عظمي لخادم gRPC للغة Java

يمكنك تنزيل خادم gRPC الأساسي للمساعدة في البدء في تنفيذ خادم gRPC الكامل.

البدء

  1. قم بإنشاء مشروع java grale (grpc-booking-service)، ضمن src/main، أنشئ دليل 'proto'.

  2. عليك تنزيل تعريف خدمة الحجز وبروتوكول التحقّق من الصحة، ووضعهما ضمن src/main/proto. تحدد هذه الملفات طرق gRPC والرسائل الخاصة بواجهة برمجة تطبيقات مركز الإجراءات والتحقّق من الصحة.

  3. حدِّث الملف build.gradle، وأضف التبعيات والمكوِّن الإضافي protobuf لـ Gradle. يمكنك العثور هنا على مقدمة ودليل ملف protobuf-gradele-Plugins.

        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. قم بتشغيل الأمر التالي لإنشاء المكتبة وإنشاء التعليمات البرمجية تلقائيًا من المكوّن الإضافي إصدار proto:

      ./gradlew build
    
  5. لتفعيل بروتوكول أمان طبقة النقل (TLS) على الخادم، ضمن src/main/certificates/، يجب إدراج الملفات التالية:

    • server_cert_chain.pem سلسلة شهادات الخادم بتنسيق PEM
    • يجب أن يكون server_private_key.pem مفتاحك الخاص لسلسلة شهادات الخادم هو المفتاح الخاص PKCS#8.
    • trusted_client_roots.pem شهادات الجذر الموثوق بها عند مصادقة البرامج، يمكنك اختيار الحصول على هذه المجموعة من الجذور الموثوقة من مرجع مثل Mozilla، أو تثبيت مجموعة الجذور الموصى بها حاليًا من قِبل هيئة الإنترنت من Google 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. في كلا الملفين، اتّبِع قوائم المهام لإكمال عمليات التنفيذ.

  7. حدِّث ملف grale.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

مراجع أخرى