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

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

البدء

  1. أنشئ مشروع جافا gradle (grpc-booking-service)، ضمن src/main، إنشاء "نموذج أوّلي" الدليل.

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

  3. عدِّل ملف build.gradle، وأضِف التبعيات والمكوّن الإضافي Protobuf من أجل Gradle. يمكن أن تكون المقدمة والدليل الخاص بالمكوّن الإضافي Protobuf-gradle يمكنك الاطّلاع عليها هنا

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

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

مرجع آخر