全部产品
Search
文档中心

Platform For AI:Memanggil layanan melalui koneksi langsung VPC

更新时间:Nov 11, 2025

Koneksi langsung VPC adalah metode pemanggilan layanan berkinerja tinggi yang memungkinkan klien dalam virtual private cloud (VPC) melewati gerbang publik dan langsung mengakses instans layanan EAS. Topik ini menjelaskan cara kerja koneksi langsung VPC, cara mengonfigurasinya, serta cara memanggil layanan menggunakan SDK resmi atau menerapkan logika pemanggilan kustom.

Ikhtisar fungsi

Skenario

  • Persyaratan berkinerja tinggi: Untuk layanan dengan lalu lintas tinggi dan banyak permintaan per detik (QPS), seperti layanan pengenalan citra atau ucapan, koneksi langsung dapat secara signifikan meningkatkan kinerja akses.

  • Sensitivitas latensi rendah: Untuk layanan yang memiliki persyaratan ketat terhadap waktu tanggapan, seperti rekomendasi daring dan kontrol risiko keuangan, koneksi langsung dapat secara efektif mengurangi latensi.

Cara kerja

Mekanisme intinya mencakup:

  • Konektivitas jaringan: Setelah Anda mengonfigurasi VPC untuk suatu layanan, EAS membuat antarmuka jaringan elastis (ENI) tambahan gratis untuk setiap instans layanan dan menyambungkannya ke VPC dan vSwitch yang ditentukan. Hal ini membangun koneksi jaringan antara VPC Anda dan instans layanan EAS. Dengan demikian, klien dalam VPC dapat langsung mengakses instans layanan EAS tanpa melewati gerbang, sehingga menghindari penerusan jaringan SLB Lapisan 4 dan Lapisan 7.

  • Penemuan layanan: EAS menyediakan mekanisme penemuan layanan yang memungkinkan klien memperoleh daftar real-time pasangan IP:PORT untuk semua instans layanan. Berdasarkan daftar ini, klien dapat menerapkan load balancing dan failover.

Persiapan

Sebelum memanggil layanan, pastikan Anda telah mengonfigurasi VPC untuk layanan tersebut. Untuk informasi selengkapnya, lihat Konfigurasi jaringan.

  • Setiap ENI menempati satu alamat IP di vSwitch. Pastikan jumlah alamat IP yang tersedia di vSwitch lebih besar dari atau sama dengan jumlah instans layanan agar memenuhi kebutuhan alamat IP.

  • Tambahkan aturan grup keamanan untuk menerapkan isolasi jaringan dan kontrol akses.

    Penting

    Akses jaringan antara klien, seperti Instance ECS, dan instans layanan EAS dikendalikan oleh aturan grup keamanan.

    • Secara default, instans dalam kelompok keamanan dasar dapat saling berkomunikasi melalui jaringan internal. Saat Anda mengonfigurasi koneksi langsung VPC untuk layanan EAS, Anda dapat memilih grup keamanan tempat Instance ECS yang perlu mengakses layanan EAS berada.

    • Untuk menggunakan grup keamanan yang berbeda, Anda harus mengatur aturan grup keamanan agar memungkinkan komunikasi antar Instance ECS. Untuk informasi selengkapnya, lihat Mengizinkan akses antar instans dalam grup keamanan berbeda di jaringan klasik.

Pemanggilan menggunakan SDK resmi (Direkomendasikan)

SDK resmi EAS mengenkapsulasi logika kompleks, seperti penemuan layanan, load balancing, dan retry failover. Kami menyarankan Anda menggunakan metode ini untuk memanggil layanan melalui koneksi langsung VPC.

Pemanggilan menggunakan Python SDK

  1. Instal atau tingkatkan SDK.

    pip install -U eas-prediction --user

    Untuk informasi selengkapnya, lihat Menggunakan Python SDK.

  2. Tulis kode pemanggilan.

    Kode berikut memberikan contoh program yang menggunakan string sebagai input dan output. Untuk contoh program yang menggunakan format input dan output lainnya, seperti TensorFlow atau PyTorch, lihat Menggunakan Python SDK.

    #!/usr/bin/env python
    from eas_prediction import PredictClient
    from eas_prediction import StringRequest
    from eas_prediction import TFRequest
    from eas_prediction import ENDPOINT_TYPE_DIRECT
    
    # Ganti dengan titik akhir yang sebenarnya. Formatnya adalah {Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com
    # Uid adalah ID akun Alibaba Cloud Anda, dan RegionId adalah wilayah layanan EAS.
    ENDPOINT = "123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com"
    # Ganti dengan nama layanan EAS yang sebenarnya.
    SERVICE_NAME = "mnist_saved_model_example"
    # Ganti dengan token layanan. Anda dapat memperoleh token dari informasi pemanggilan di halaman detail layanan. Kami menyarankan agar Anda mengelola dan menggunakan token melalui Variabel lingkungan atau Key Management Service (KMS).
    TOKEN = "M2FhNjJlZDBmMzBmMzE4NjFiNzZhMmUxY2IxZjkyMDczNzAzYjFi****" 
    
    if __name__ == '__main__':
        client = PredictClient(ENDPOINT, SERVICE_NAME)
        client.set_token(TOKEN)
        client.set_endpoint_type(ENDPOINT_TYPE_DIRECT)  # Menentukan bahwa layanan diakses melalui saluran koneksi langsung.
        client.init()
        # request = StringRequest('[{}]')
        req = TFRequest('predict_images')
        req.add_feed('images', [1, 784], TFRequest.DT_FLOAT, [1] * 784)
        resp = client.predict(req)
        print(resp)

    Catatan:

    • Parameter input fungsi client = PredictClient() adalah Titik akhir koneksi langsung VPC dan nama layanan.

    • Titik akhir koneksi langsung VPC: Ini terikat pada suatu wilayah dan memiliki format {Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com. {Uid} adalah ID akun Alibaba Cloud Anda. Sebagai contoh, Titik akhir koneksi langsung VPC di wilayah Tiongkok (Shanghai) adalah 123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com.

    • TOKEN: Anda dapat memperoleh token dari informasi pemanggilan di halaman detail layanan.

Pemanggilan menggunakan Java SDK

  1. Tambahkan dependensi Maven.

    Untuk mengintegrasikan SDK EAS untuk Java ke dalam proyek Anda, tambahkan dependensi eas-sdk dalam file pom.xml. Untuk informasi versi terbaru SDK, kunjungi Repositori Maven. Contoh kode:

    <dependency>
      <groupId>com.aliyun.openservices.eas</groupId>
      <artifactId>eas-sdk</artifactId>
      <version>2.0.20</version>
    </dependency>

    Untuk informasi selengkapnya, lihat Menggunakan Java SDK.

  2. Tulis kode pemanggilan.

    import com.aliyun.openservices.eas.predict.http.PredictClient;
    import com.aliyun.openservices.eas.predict.http.HttpConfig;
    
    public class TestString {
        public static void main(String[] args) throws Exception {
            // Untuk memastikan objek klien dibagikan dengan benar, buat dan inisialisasi objek klien saat startup, bukan membuat objek klien baru untuk setiap permintaan.
            PredictClient client = new PredictClient(new HttpConfig());
            // Ganti dengan token layanan. Anda dapat mengklik Metode Pemanggilan di kolom Jenis Layanan layanan target untuk melihat informasi token.
            client.setToken("YWFlMDYyZDNmNTc3M2I3MzMwYmY0MmYwM2Y2MTYxMTY4NzBkNzdj****");
            // Untuk akses langsung, gunakan metode setDirectEndpoint dan atur nama domain menjadi 123**********.vpc.{region_id}.pai-eas.aliyuncs.com. Ganti 123********** dengan UID Anda. Sebagai contoh, ID wilayah untuk Tiongkok (Shanghai) adalah cn-shanghai.
            client.setDirectEndpoint("123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com");
            // Ganti dengan nama layanan.
            client.setModelName("scorecard_pmml_example");
    
            // Definisikan string input.
            String request = "[{\"money_credit\": 3000000}, {\"money_credit\": 10000}]";
            System.out.println(request);
    
            // Mengembalikan string melalui EAS.
            try {
                String response = client.predict(request);
                System.out.println(response);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            // Matikan klien.
            client.shutdown();
            return;
        }
    }

Pemanggilan menggunakan Golang SDK

Saat Anda memanggil layanan menggunakan Golang SDK, manajer paket Go secara otomatis mengunduh SDK dari GitHub selama kompilasi. Oleh karena itu, Anda tidak perlu menginstal Golang SDK terlebih dahulu. Untuk informasi selengkapnya, lihat Panduan Golang SDK.

Kode berikut menunjukkan cara memanggil layanan menggunakan Golang SDK resmi:

package main

import (
        "fmt"
        "github.com/pai-eas/eas-golang-sdk/eas"
)

func main() {
    // Atur nama domain menjadi 123**********.vpc.{region_id}.pai-eas.aliyuncs.com untuk akses. Ganti 123********** dengan UID Anda. Sebagai contoh, ID wilayah untuk Tiongkok (Shanghai) adalah cn-shanghai. Ganti wilayah dan nama layanan dengan layanan target Anda.
    client := eas.NewPredictClient("123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com", "scorecard_pmml_example")
    // Ganti dengan token layanan. Anda dapat mengklik Metode Pemanggilan di kolom Jenis Layanan layanan target untuk melihat informasi token.
    client.SetToken("YWFlMDYyZDNmNTc3M2I3MzMwYmY0MmYwM2Y2MTYxMTY4NzBkNzdj****")
    client.SetEndpointType(eas.EndpointTypeDirect)
    client.Init()
    req := "[{\"fea1\": 1, \"fea2\": 2}]"
    for i := 0; i < 100; i++ {
        resp, err := client.StringPredict(req)
        if err != nil {
            fmt.Printf("gagal memprediksi: %v\n", err.Error())
        } else {
            fmt.Printf("%v\n", resp)
        }
    }
}

Terapkan logika pemanggilan kustom

Jika Anda ingin menggunakan bahasa lain atau memiliki persyaratan khusus, Anda dapat merujuk pada konten berikut untuk menerapkan logika pemanggilan HTTP sendiri.

Peringatan

Penerapan logika pemanggilan kustom mengharuskan klien menangani logika toleransi kesalahan yang kompleks, seperti penemuan layanan, load balancing, dan retry failover. Implementasi klien secara langsung memengaruhi ketersediaan layanan. Kami sangat menyarankan Anda menggunakan SDK resmi. Perjanjian Tingkat Layanan (SLA) platform tidak mencakup gangguan layanan yang disebabkan oleh implementasi klien yang tidak tepat.

API penemuan layanan

EAS menyediakan API HTTP untuk penemuan layanan di lingkungan VPC. Dengan mengakses API ini, Anda dapat memperoleh daftar alamat IP, port, dan bobot semua instans backend untuk suatu layanan.

  • Format URL: http://<ID akun Alibaba Cloud Anda>.vpc.<RegionID>.pai-eas.aliyuncs.com/exported/apis/eas.alibaba-inc.k8s.io/v1/upstreams/<Nama layanan>

  • Metode autentikasi: API ini tidak memerlukan autentikasi token, tetapi hanya dapat diakses dari dalam VPC yang dikonfigurasi untuk layanan tersebut.

  • Waktu pemanggilan: Ini adalah API bypass dan harus dipanggil secara berkala oleh tugas latar belakang, misalnya setiap 5 hingga 10 detik. Jangan memanggil API ini untuk setiap permintaan inferensi. Hal ini sangat berdampak pada kinerja.

Contoh pemanggilan:

Contoh berikut menunjukkan cara memanggil layanan mnist_saved_model_example, yang memiliki dua instans dan diterapkan di Tiongkok (Hangzhou):

$curl http://123**********.vpc.cn-hangzhou.pai-eas.aliyuncs.com/exported/apis/eas.alibaba-inc.k8s.io/v1/upstreams/mnist_saved_model_example

Pastikan untuk mengganti 123********** dalam alamat dengan UID Anda.

Kode berikut menunjukkan daftar alamat layanan backend yang dikembalikan:

{
  "correlative": [
    "mnist_saved_model_example"
  ],
  "endpoints": {
    "items": [
      {
        "app": "mnist-saved-model-example",
        "ip": "172.16.XX.XX",
        "port": 50000,
        "weight": 100
      },
      {
        "app": "mnist-saved-model-example",
        "ip": "172.16.XX.XX",
        "port": 50000,
        "weight": 100
      }
    ]
  }
}

Logika implementasi terperinci

Pemanggilan klien kustom yang andal harus mencakup tiga komponen inti berikut:

  1. Cache daftar instans secara lokal dan segarkan secara berkala

    Penting

    Layanan penemuan layanan adalah layanan bypass. Jangan memanggil API penemuan layanan untuk setiap permintaan inferensi.

    Klien memulai thread latar belakang yang secara berkala memanggil API penemuan layanan, misalnya setiap 5 hingga 10 detik.

    • Jika berhasil: Ketika kode status HTTP adalah 200 dan daftar instans yang dikembalikan tidak kosong, timpa cache lokal dengan daftar baru.

    • Jika gagal: Jika pemanggilan API gagal, misalnya karena timeout atau kode status bukan 200, atau jika pemanggilan mengembalikan daftar kosong, Anda harus tetap menggunakan cache lokal. Jangan menghapus cache. Hal ini memastikan ketersediaan layanan.

  2. Menyeimbangkan beban permintaan

    Setiap kali Anda memulai permintaan inferensi, pilih instans target dari cache lokal. Kami menyarankan Anda menggunakan algoritma seperti Round-robin berbobot. Anda juga dapat memilih instans berdasarkan logika bisnis Anda.

  3. Retry saat gagal

    Jika koneksi gagal saat Anda memulai permintaan, hal ini menunjukkan bahwa instans layanan mungkin tidak normal, misalnya instans pengguna crash. Klien perlu melakukan retry. Jika cache lokal berisi lebih dari satu instans, ambil instans berbeda dari cache dan coba ulang permintaan tersebut.

Untuk alur implementasi lengkap, lihat implementasi Python SDK.

Referensi

Untuk informasi selengkapnya tentang metode pemanggilan layanan lainnya, lihat Ikhtisar metode pemanggilan.