All Products
Search
Document Center

HTTPDNS:Praktik terbaik

Last Updated:Dec 17, 2025

HTTPDNS menyediakan kemampuan resolusi nama domain melalui API HTTP. Developer dapat menentukan mode akses dalam skenario di mana SDK resmi tidak dapat diintegrasikan secara langsung. Topik ini memberikan rekomendasi mengenai aspek-aspek penting seperti ketersediaan, performa, kualitas resolusi, dan keamanan untuk membantu developer mengoptimalkan penggunaan API HTTP.

1. Optimasi ketersediaan

Skenario: Node layanan HTTPDNS tertentu tidak tersedia

Informasi latar belakang

Dalam kasus ekstrem, seperti bencana alam, pemblokiran oleh penyedia layanan Internet (ISP), atau kegagalan jaringan, satu titik masuk layanan HTTPDNS mungkin menjadi tidak tersedia, yang dapat memengaruhi resolusi nama domain.

Solusi

  1. Failover alamat IP startup

    • Sisipkan beberapa alamat IP startup atau nama domain dalam aplikasi untuk memastikan konektivitas berkelanjutan dengan HTTPDNS.

    • Jika permintaan gagal, alamat IP startup berikutnya akan digunakan secara otomatis.

  2. Pembaruan dinamis daftar alamat IP layanan

    Bagan alir berikut menunjukkan cara memperoleh alamat IP layanan dengan mengirim permintaan ke alamat IP startup.

image

Untuk informasi selengkapnya, lihat Scheduling Service Interface.

Catatan

Kami menyarankan Anda memperbarui dan menyimpan daftar alamat IP layanan dalam skenario berikut:

  • (Direkomendasikan) Perbarui daftar alamat IP layanan saat cold start dimulai.

  • (Direkomendasikan) Perbarui daftar alamat IP layanan saat Anda mengganti lingkungan jaringan.

  • (Direkomendasikan) Perbarui daftar alamat IP layanan setidaknya sekali setiap 8 jam.

  • Saat daftar alamat IP layanan tidak dapat diselesaikan setelah beberapa kali percobaan ulang, perbarui daftar tersebut.

  1. Kebijakan failover

    Saat menggunakan HTTPDNS, mekanisme rotasi IP diterapkan. Jika suatu alamat IP tidak dapat dijangkau, sistem akan beralih ke alamat IP berikutnya untuk mencoba ulang, sehingga memastikan HTTPDNS tetap berfungsi meskipun satu alamat IP layanan menjadi tidak tersedia. Saat permintaan resolusi dikirim ke server, sistem mengambil alamat IP layanan yang tersedia dari daftar alamat IP layanan global. Jika resolusi menggunakan alamat IP layanan saat ini berhasil, SDK akan terus menggunakan alamat IP tersebut sepanjang lifecycle-nya. Jika resolusi menggunakan alamat IP layanan saat ini gagal, sistem beralih ke alamat IP berikutnya dalam daftar alamat IP layanan global untuk mencoba ulang. Jika percobaan ulang juga gagal, sistem mengembalikan null dan mencoba beralih ke alamat IP layanan lainnya lagi.

image
Penting
  • Kursor bersifat global. Kami menyarankan Anda menyimpan kursor tersebut secara persisten di komputer Anda.

  • Dalam kebanyakan kasus, daftar alamat IP layanan tetap tidak berubah kecuali resolusi gagal.

  • Daftar alamat IP layanan disarankan agar dapat dikonfigurasi secara dinamis, karena hal ini dapat mengurangi waktu yang diperlukan agar pembaruan berlaku dan meminimalkan dampaknya.

Jika semua alamat IP layanan HTTPDNS gagal merespons, kembali menggunakan Domain Name System (DNS) lokal, yaitu rantai DNS native dari sistem operasi. Jika Anda menggunakan OkHttp sebagai library jaringan untuk mengintegrasikan HTTPDNS pada Android, Anda dapat menggunakan kode berikut untuk melakukan resolusi menggunakan DNS lokal:

List<InetAddress> result = okhttp3.Dns.SYSTEM.lookup(host);
val result: List<InetAddress> = Dns.SYSTEM.lookup(host)

Untuk iOS, hindari melakukan penggantian Host atau intersepsi permintaan, sehingga permintaan asli tetap tidak berubah:

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
// Kirim permintaan.
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    if (error) {
        NSLog(@"error: %@", error);
    } else {
        NSLog(@"response: %@", response);
    }
}];
[task resume];
var request = URLRequest(url: url)
// Kirim permintaan.
let session = URLSession.shared
let task = session.dataTask(with: request) { (data, response, error) in
    if let error = error {
        print("error: \(error)")
    } else {
        print("response: \(response?.description ??  "")")
    }
}
task.resume()
  1. Resolusi non-blocking

    Gunakan metode asinkron dalam aplikasi Anda untuk mengakses HTTPDNS. Dengan demikian, bisnis Anda tidak perlu terganggu menunggu hasil resolusi.

2. Optimasi performa

Skenario: Bottleneck performa akibat kueri yang sering

Informasi latar belakang

Jika permintaan ke HTTPDNS dilakukan untuk resolusi nama domain pada setiap permintaan jaringan, latensi bisnis dan konsumsi bandwidth akan meningkat secara signifikan. Mengingat bahwa hasil resolusi nama domain memiliki nilai cache time to live (TTL), Anda dapat menerapkan caching berdasarkan nilai tersebut.

Solusi

  1. Cache lokal

    • Sesuai standar DNS RFC 1034, hasil resolusi dapat di-cache berdasarkan nilai TTL.

image
Catatan
  • Nilai TTL adalah bidang ttl dalam respons API HTTP.

  • Jika cache tidak ditemukan atau telah kedaluwarsa, Anda harus menginisiasi permintaan resolusi dan memperbarui cache.

  1. Pre-resolving

Catatan

Saat cache hampir kedaluwarsa, misalnya pada 80% masa TTL, Anda dapat melakukan resolusi nama domain terkait dan menyimpan hasilnya secara lokal. Lakukan pre-resolving untuk nama domain yang umum digunakan dan simpan hasilnya saat aplikasi dimulai. Pre-resolving mengurangi latensi akses layanan tetapi meningkatkan jumlah permintaan resolusi. Kami menyarankan Anda hanya menggunakan pre-resolving untuk nama domain hotspot.

  1. Penggunaan koneksi ulang

    Anda dapat mengaktifkan fitur penggunaan koneksi ulang dari client HTTP untuk mengurangi waktu yang diperlukan dalam membuat koneksi TCP dan menurunkan latensi resolusi HTTPDNS.

  2. Caching persisten

    Anda dapat menyimpan hasil resolusi secara persisten yang diperoleh sebelumnya. Setelah aplikasi dimulai ulang, hasil resolusi akan diprioritaskan dimuat dari lapisan persistensi. Hal ini meningkatkan kecepatan pemuatan pertama.

Catatan
  • Alamat IP mungkin telah kedaluwarsa saat pertama kali digunakan (masa TTL-nya telah habis), tetapi dalam kebanyakan kasus masih dapat digunakan.

  • Jika Anda mengaktifkan caching persisten, hasil resolusi nama domain akan terpengaruh saat aplikasi pertama kali dijalankan atau jenis jaringan berubah. Setelah caching persisten diaktifkan, semua permintaan resolusi akan diarahkan ke server HTTPDNS dan data dalam cache lokal akan diperbarui.

3. Optimasi kualitas resolusi

Skenario: Latensi akses akibat resolusi lintas ISP

Informasi latar belakang

Saat Anda menggunakan nama domain akselerasi CDN atau nama domain yang dikonfigurasi dengan resolusi routing cerdas, jika client menyimpan cache alamat IP yang diperoleh dari resolusi DNS berdasarkan nilai TTL, masalah dapat muncul ketika lingkungan jaringan berubah. Misalnya, jaringan 4G berubah menjadi Wi-Fi atau sebaliknya. Dalam kasus seperti itu, alamat IP yang di-cache mungkin tidak lagi sesuai dengan rute optimal untuk lingkungan jaringan baru, yang berpotensi menyebabkan degradasi performa pada permintaan jaringan terkait bisnis.

Solusi

  1. Pemantauan lingkungan jaringan

    • Pantau perubahan jaringan client, misalnya dari Wi-Fi ke data seluler.

    • Secara proaktif refresh cache lokal untuk memastikan hasil resolusi kompatibel dengan lingkungan jaringan saat ini.

Penting

Me-refresh hasil resolusi untuk semua domain menghasilkan traffic tambahan.

  1. Pengujian kecepatan dan pengurutan

    Gunakan pengujian asinkron ICMP atau TCP untuk mengurutkan hasil resolusi dan memprioritaskan alamat IP dengan waktu respons tercepat.

Penting

Metode ini dapat memengaruhi strategi load balancing asli dari server bisnis.

4. Optimasi keamanan

Skenario: Permintaan resolusi dibajak atau bocor

Informasi latar belakang

API resolusi tanpa mekanisme autentikasi menimbulkan risiko keamanan, karena dapat dieksploitasi pihak ketiga untuk mencuri traffic dan menimbulkan biaya.

Solusi

  1. Resolusi dengan autentikasi

    Kami menyarankan Anda menggunakan Operasi API dengan autentikasi untuk melakukan resolusi nama domain. Anda dapat memilih apakah akan menonaktifkan Operasi API tanpa autentikasi di Konsol HTTPDNS.

    • Saat Anda memanggil operasi ini untuk melakukan resolusi nama domain, HTTPDNS menggunakan kunci rahasia untuk menghasilkan string terenkripsi dan menyertakan string tersebut dalam permintaan untuk autentikasi. Kunci rahasia tidak disertakan dalam permintaan, sehingga mengurangi risiko eksposur dan menjamin keamanan permintaan resolusi.

    • Untuk informasi selengkapnya, lihat Implement authenticated access.

  2. Gunakan HTTPS untuk komunikasi aman

5. Pemecahan masalah

Untuk menemukan masalah secara efisien, Anda dapat menghasilkan ID sesi saat aplikasi dimulai untuk mengidentifikasi secara unik lifecycle dari satu sesi aplikasi. Saat Anda menginisiasi permintaan ke HTTPDNS, sertakan ID sesi ini dalam permintaan. Jika terjadi masalah, tim dukungan teknis HTTPDNS dapat menggunakan ID sesi yang diberikan untuk memecahkan dan menyelesaikan masalah tersebut. ID sesi memiliki format [a-zA-Z0-9]{12}.

Contoh: http://203.107.xxx.xxx/{accountId}/sign_d?host=www.aliyun.com&t=1573XXXX&s=60c7XXXXXX&sid=1234567890ab

6. Ringkasan

Dengan mengikuti solusi optimasi ini, developer dapat mencapai integrasi HTTPDNS yang sangat tersedia, berlatensi rendah, dan aman menggunakan API dalam lingkungan jaringan yang kompleks. Di sisi lain, potensi masalah juga dapat diatasi, sehingga meningkatkan kualitas resolusi secara keseluruhan.