Topik ini menjelaskan cara ZooKeeper diintegrasikan ke dalam API Gateway dan bagaimana Anda dapat membuat, mempublikasikan, serta memanggil API dengan jenis layanan backend Service discovery.
Ikhtisar
Topik ini mencakup bagian-bagian berikut:
Cara kerjanya
Membuat instance integrasi VPC khusus (hanya instance integrasi VPC yang mendukung ZooKeeper)
Mengimplementasikan layanan ZooKeeper dan mendaftarkan aplikasi mikro-layanan
Membuat grup API
Membuat layanan backend
Membuat API
Membuat aplikasi dan memberikan otorisasi untuk memanggil API
Debug API
Cara kerjanya
ZooKeeper menyimpan data dalam struktur pohon yang mirip dengan sistem file. Setiap node dalam pohon memiliki jalur akses unik, seperti /provider/service. Penyedia layanan dapat mendaftarkan informasi instance aplikasi mikro-layanan mereka pada node layanan ZooKeeper. API Gateway kemudian mendengarkan node tersebut, mengurai alamat IP dan port layanan dari node, serta mendistribusikan permintaan klien ke instance mikro-layanan backend berdasarkan kebijakan load balancing.
Penyedia layanan mendaftarkan instance mikro-layanan dengan node layanan ZooKeeper.
API Gateway mendengarkan node dan node anak berdasarkan jalur akses mereka, serta mengurai informasi instance mikro-layanan yang disimpan dalam node, seperti alamat IP dan nomor port. Alamat IP dan nomor port disimpan dalam cache API Gateway untuk mengurangi overhead komunikasi.
Ketika permintaan klien diterima, API Gateway mendapatkan alamat IP dan nomor port dari cache-nya dan meneruskan permintaan ke server mikro-layanan yang sesuai. Kemudian, API Gateway menerima respons dari server dan meneruskan respons tersebut ke klien.
Jika aplikasi mikro-layanan mengalami perubahan informasi, misalnya, sebuah instance mikro-layanan offline atau instance baru ditambahkan, ZooKeeper menyinkronkan perubahan tersebut ke API Gateway. API Gateway memperbarui informasi dalam cach-nya untuk memastikan konsistensi antara dirinya sendiri dan ZooKeeper.
Ketika permintaan klien lain diterima, API Gateway merutekan dan meneruskan permintaan berdasarkan informasi yang telah diperbarui.
API Gateway berkomunikasi dengan ZooKeeper dan instance mikro-layanan melalui virtual private clouds (VPC). Oleh karena itu, Anda harus mengonfigurasi alamat internal sebagai alamat layanan ZooKeeper saat Anda membuat API. Jika tidak, API Gateway akan mengembalikan pengecualian alamat ZooKeeper tidak valid. Untuk alasan yang sama, URL internal harus didaftarkan sebagai URL aplikasi mikro-layanan backend di Zookeeper. Jika API Gateway mendapatkan URL publik dari ZooKeeper setelah menerima permintaan API, API Gateway tidak dapat memproses permintaan tersebut. Sebagai gantinya, API Gateway mengembalikan kode kesalahan I504IA. Jika API Gateway gagal mendapatkan URL mikro-layanan apa pun dari ZooKeeper, API Gateway mengembalikan kode kesalahan I504BA.
Langkah 1: Buat instance integrasi VPC
API Gateway berkomunikasi dengan ZooKeeper dan aplikasi mikro-layanan yang terdaftar di ZooKeeper melalui jaringan internal. Karena jaringan internal kustom tidak dapat didefinisikan pada instance khusus konvensional, tim API Gateway mengembangkan tipe instance baru, yaitu instance integrasi VPC, untuk memungkinkan API Gateway berkomunikasi langsung dengan VPC pengguna. Untuk informasi lebih lanjut tentang cara membuat instance integrasi VPC, lihat Instance integrasi VPC.
Langkah 2: Implementasikan layanan Zookeeper dan daftarkan aplikasi mikro-layanan di ZooKeeper
1. Implementasikan layanan ZooKeeper.
ZooKeeper harus diimplementasikan di VPC, zona, dan vSwitch yang sama dengan instance integrasi VPC yang Anda buat. Anda dapat mengimplementasikan layanan ZooKeeper asli pada Instance ECS (Elastic Compute Service) di vSwitch. Dengan cara ini, alamat akses ZooKeeper dapat diatur ke Alamat IP internal instance ECS: Port ZooKeeper. Saat Anda membuat instance ECS, atur Jaringan ke VPC dan pilih VPC, zona, dan vSwitch yang sama dengan yang Anda pilih saat membuat instance integrasi VPC.
Untuk informasi lebih lanjut tentang cara mengimplementasikan ZooKeeper, lihat Panduan Memulai ZooKeeper. Untuk informasi lebih lanjut tentang cara membuat instance ECS, lihat Petunjuk Pembelian.
Anda juga dapat menggunakan Alibaba Cloud Microservice Engine (MSE) untuk mengimplementasikan layanan ZooKeeper. Saat melakukannya, atur tipe jaringan ke VPC dan pilih VPC dan vSwitch yang sama dengan instance integrasi VPC yang Anda buat. Setelah layanan ZooKeeper diimplementasikan, Anda dapat melihat titik akhirnya di daftar instance MSE.
Untuk informasi lebih lanjut tentang cara mengimplementasikan layanan ZooKeeper menggunakan MSE, lihat Buat mesin ZooKeeper.
2. Daftarkan aplikasi mikro-layanan.
Anda harus mengimplementasikan aplikasi mikro-layanan di VPC, zona, dan vSwitch yang sama dengan instance integrasi VPC yang Anda buat. Ini memastikan bahwa aplikasi mikro-layanan terdaftar di layanan ZooKeeper dan diakses oleh API Gateway. Anda dapat memilih untuk mengimplementasikan aplikasi mikro-layanan pada instance ECS. Instance ECS harus dibuat di vSwitch yang sama dengan instance integrasi VPC yang Anda buat.
Gunakan format berikut untuk informasi tentang aplikasi mikro-layanan yang didaftarkan dengan ZooKeeper:
{
"address":"localhost",
"enabled":true,
"id":"cb1467f745c64d9f8cbfa5c2bd217cb8",
"name":"provider",
"payload":{
},
"port":8080,
"registrationTimeUTC":1699525871398,
"serviceType":"DYNAMIC",
"sslPort":443,
"uriSpec":{
"parts":[
{
"value":"scheme",
"variable":true
},
{
"value":"://",
"variable":false
},
{
"value":"address",
"variable":true
},
{
"value":":",
"variable":false
},
{
"value":"port",
"variable":true
}
]
}
}Untuk struktur data yang disimpan pada node ZooKeeper, lihat kelas org.apache.curator.x.discovery.ServiceInstance yang disediakan oleh proyek open source Apache Curator. Perhatikan bahwa uriSpec tidak boleh dibiarkan kosong. Kami menyarankan Anda mengonfigurasinya sebagai {scheme}://{address}:{port}. Jika Anda ingin menggunakan protokol HTTPS, konfigurasikan atribut sslPort.
Format data yang tidak valid dapat menyebabkan API Gateway gagal mengurai alamat backend instance mikro-layanan. Aplikasi mikro-layanan yang terdaftar dengan Zookeeper harus mendukung panggilan HTTP.
Langkah 3: Buat grup API
API dikelola dalam grup API. Anda harus membuat grup API sebelum membuat API.
Masuk ke konsol API Gateway.
Di panel navigasi di sebelah kiri, pilih Manage APIs > API Groups. Di pojok kanan atas halaman, klik Create Group. Di kotak dialog yang muncul, pilih instance integrasi VPC yang telah dibuat, konfigurasikan parameter Nama Grup dan BasePath, dan klik Konfirmasi.
Setelah grup dibuat, klik nama grup di daftar grup untuk masuk ke halaman detail grup. Di halaman detail, Anda dapat mengikat nama domain, memodifikasi informasi dasar, dan mengubah tipe instance.
API Gateway secara otomatis menetapkan nama domain tingkat kedua publik untuk setiap grup API. Nama domain tingkat dua hanya digunakan untuk debugging. Jika Anda langsung melakukan panggilan API menggunakan nama domain ini, Anda dapat melakukan maksimum 1.000 panggilan per hari di wilayah daratan Tiongkok dan 100 panggilan per hari di wilayah China (Hong Kong) dan wilayah lain di luar daratan Tiongkok. Kami menyarankan Anda mengikat nama domain independen untuk grup API Anda. Untuk informasi lebih lanjut, lihat Lakukan panggilan API melalui nama domain kustom.
Langkah 4: Buat layanan backend
Untuk membuat API dengan Service discovery sebagai tipe layanan backend, Anda harus terlebih dahulu membuat layanan backend.
Masuk ke konsol API Gateway.
Di panel navigasi di sebelah kiri, pilih Manage APIs > Backend Services. Di pojok kanan atas halaman, klik Create Backend Service. Di kotak dialog yang muncul, masukkan nama layanan backend dan atur Tipe ke Service discovery. Setelah layanan backend dibuat, Anda dapat menemukan layanan backend yang dibuat di daftar layanan backend dan klik nama layanan untuk masuk ke halaman detail layanan backend.
Dalam contoh ini, lingkungan produksi dipilih. Anda harus membuat layanan backend di lingkungan sebelum Anda dapat mempublikasikan API ke lingkungan. Di sisi kanan halaman, klik Buat untuk masuk ke halaman Definisikan Layanan Backend.
Anda harus memasukkan informasi berikut tentang layanan ZooKeeper dan aplikasi mikro-layanan di halaman Definisikan Layanan Backend:
URL Layanan: titik akhir internal ZooKeeper. Parameter ini wajib.
Nama Ruang: nama node induk yang menyimpan informasi aplikasi mikro-layanan. Parameter ini wajib.
Nama Layanan: nama aplikasi mikro-layanan. Parameter ini wajib.
Nama ruang dan nama layanan bersama-sama membentuk jalur akses node layanan. Misalnya, jika jalur node adalah "/provider/service", nama ruang dan nama layanan dapat diatur ke "provider" dan "service", masing-masing. Penyedia layanan dapat mendaftarkan informasi instance mikro-layanan di node yang jalur aksesnya adalah /provider/service dan node anaknya.
Langkah 5: Buat API
Di panel navigasi di sebelah kiri konsol API Gateway, pilih Manage APIs-APIs. Di pojok kanan atas halaman, klik Create API.
Konfigurasikan informasi dasar untuk API.
Pada langkah ini, konfigurasikan informasi dasar untuk API yang ingin Anda buat, termasuk grup API tempat API milik dan nama, metode autentikasi, tipe, dan deskripsi API. Pilih grup API yang Anda buat, pilih Alibaba Cloud App untuk Autentikasi Keamanan, dan pilih Aktifkan Autentikasi AppCode (Header & Query) untuk Autentikasi AppCode. Anda dapat menentukan nama dan deskripsi API kustom.
Anda dapat mengonfigurasi parameter Autentikasi Keamanan dan Autentikasi AppCode berdasarkan kebutuhan Anda. Topik ini hanya memberikan contoh.
Definisikan permintaan API.
Pada langkah ini, definisikan bagaimana klien, seperti browser, aplikasi seluler, atau sistem bisnis, meminta API Anda. Parameter termasuk tipe permintaan, protokol, jalur permintaan, metode HTTP, mode parameter input permintaan, dan definisi parameter input. Anda dapat menentukan jalur permintaan dan metode HTTP berdasarkan kebutuhan bisnis Anda.
Definisikan layanan backend.
Pada langkah ini, definisikan bagaimana API Gateway memetakan dan memproses parameter permintaan setelah menerima permintaan. Anda juga dapat menentukan alamat backend ke mana API Gateway terhubung. Dalam contoh ini, Use Existing Backend Service dipilih untuk parameter Mode Konfigurasi dan Service discovery dipilih untuk parameter Tipe Layanan Backend. Anda dapat mengatur parameter lain berdasarkan kebutuhan bisnis Anda.
Definisikan respons untuk API.
Pada langkah ini, konfigurasikan informasi respons untuk menghasilkan dokumentasi API. Dokumentasi membantu pemanggil API lebih memahami API. Anda juga dapat menentukan respons sukses sampel dan respons gagal sampel. Dalam contoh ini, langkah ini dilewati. Klik Buat.
Publikasikan API.
Setelah konfigurasi sebelumnya disimpan, Anda harus mempublikasikan API. Semua konfigurasi yang Anda lakukan pada API dapat berlaku hanya setelah Anda mempublikasikan API ke lingkungan. Dalam contoh ini, layanan backend dikonfigurasikan di lingkungan produksi. Oleh karena itu, API dipublikasikan ke lingkungan produksi. Jika Anda ingin mempublikasikan API ke lingkungan lain, Anda harus terlebih dahulu mengonfigurasi layanan backend di lingkungan tujuan. Dalam contoh ini, klik Publikasikan di pesan yang menunjukkan pembuatan API berhasil. Di kotak dialog Publikasikan API, atur parameter Stage ke Release, masukkan catatan, dan klik Publikasikan.
Langkah 6: Buat aplikasi dan otorisasi untuk memanggil API
Aplikasi adalah identitas yang diasumsikan oleh pemanggil API untuk memanggil API. Dalam contoh ini, Alibaba Cloud App dipilih untuk parameter Autentikasi Keamanan saat API dibuat. Oleh karena itu, setelah API dipublikasikan, Anda harus membuat aplikasi dan mengotorisasi aplikasi untuk memanggil API yang Anda buat. Untuk informasi lebih lanjut, lihat Kelola otorisasi.
Langkah 7: Debug API
API Gateway mendukung debugging online. Kami menyarankan Anda menggunakan fitur ini untuk memeriksa apakah API dikonfigurasi dengan benar sebelum Anda menyediakan API ini untuk klien panggilan.
Di halaman API, klik API yang dibuat. Di panel navigasi di sebelah kiri halaman detail API, klik Debug API. Jika Anda mendefinisikan parameter permintaan untuk API, Anda dapat memasukkan nilai berbeda untuk parameter permintaan untuk memeriksa apakah API bekerja seperti yang diharapkan.
Saat Anda mendebag API, pastikan aplikasi yang diotorisasi digunakan dan lingkungan untuk debugging adalah lingkungan di mana aplikasi diizinkan untuk memanggil API. Jika tidak, debugging mungkin gagal.