All Products
Search
Document Center

HTTPDNS:Antarmuka konfigurasi

Last Updated:Nov 10, 2025

Antarmuka konfigurasi merupakan inti dari HTTPDNS Android SDK, yang menangani inisialisasi SDK, konfigurasi parameter, dan penyesuaian saat runtime. Antarmuka ini memungkinkan Anda menyesuaikan perilaku SDK—seperti pengaturan keamanan, kebijakan cache, parameter jaringan, dan optimasi kinerja—sesuai kebutuhan spesifik aplikasi Anda.

Mendapatkan instans layanan

Anda dapat memperoleh instans layanan HTTPDNS. SDK HTTPDNS mendukung beberapa instans, dan ID Akun yang berbeda akan mengembalikan instans yang berbeda.

Setiap instans yang diinisialisasi dengan ID Akun menggunakan pola desain singleton. Setelah diinisialisasi, instans tersebut bertahan sepanjang siklus hidup aplikasi dan tidak dibuat ulang.

getService

Definisi antarmuka

HttpDnsService getService(String accountID)

Versi diperkenalkan

2.6.3

Kelas

HttpDns

Parameter

Parameter

Tipe

Wajib

Deskripsi

accountID

String

Ya

ID Akun yang ditetapkan oleh sistem. Setelah Anda mengaktifkan HTTPDNS, Anda dapat menemukan ID Akun Anda di Konsol EMAS > [Nama Proyek] > Layanan Platform > HTTPDNS > halaman Konfigurasi Pengembangan.

Contoh kode

val httpdns = HttpDns.getService(accountID)
HttpDnsService httpdns = HttpDns.getService(accountID);

Menetapkan konteks

Menetapkan konteks lingkungan aplikasi yang digunakan untuk resolusi HTTPDNS.

setContext

Definisi antarmuka

InitConfig.Builder setContext(Context context)

Versi diperkenalkan

2.6.3

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

context

Context

Ya

Menetapkan applicationContext dari aplikasi saat ini.

Contoh kode

InitConfig.Builder()
    .setContext(context)
new InitConfig.Builder()
    .setContext(context);

Menetapkan kunci penandatanganan untuk antarmuka resolusi

Menetapkan kunci yang digunakan untuk menandatangani permintaan resolusi HTTPDNS.

Setelah kunci ditetapkan, SDK akan menandatangani permintaan yang dikirim ke server. Hal ini memungkinkan server HTTPDNS melakukan otentikasi identitas dan proteksi anti-pemalsuan terhadap permintaan resolusi, sehingga meningkatkan keamanan interaksi antara SDK dan server.

setSecretKey

Definisi antarmuka

InitConfig.Builder setSecretKey(String secretKey)

Catatan
  • Antarmuka ini tidak memengaruhi metode penagihan.

  • Untuk mencegah kebocoran informasi akibat dekompilasi berbahaya, aktifkan obfuscation dan perkuat aplikasi Anda sebelum dipublikasikan.

Versi diperkenalkan

2.6.3

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

secretKey

String

Ya

Kunci penandatanganan.

Contoh kode

InitConfig.Builder()
    .setSecretKey(secretKey)
new InitConfig.Builder()
    .setSecretKey(secretKey);

Menetapkan kunci enkripsi untuk antarmuka resolusi

Menetapkan kunci yang digunakan untuk enkripsi selama resolusi HTTPDNS.

Setelah kunci enkripsi ditetapkan, SDK menggunakan algoritma Standar Enkripsi Lanjutan (AES) untuk mengenkripsi parameter permintaan dan hasil tanggapan. Enkripsi ini memberikan keamanan yang lebih tinggi, tetapi logika penagihannya berbeda. Untuk informasi lebih lanjut tentang penagihan, lihat Penagihan Produk.

setAesSecretKey

Definisi antarmuka

InitConfig.Builder setAesSecretKey(String aesSecretKey)

Catatan
  • Untuk mencegah kebocoran informasi akibat dekompilasi berbahaya, aktifkan obfuscation dan perkuat aplikasi Anda sebelum dipublikasikan.

Versi diperkenalkan

2.6.3

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

aesSecretKey

String

Ya

Kunci enkripsi.

Contoh kode

InitConfig.Builder()
    .setAesSecretKey(aesSecretKey)
new InitConfig.Builder()
    .setAesSecretKey(aesSecretKey);

Menggunakan permintaan HTTPS

Secara default, SDK HTTPDNS menggunakan protokol HTTP untuk mengirim permintaan resolusi. Untuk menggunakan protokol HTTPS sebagai gantinya, Anda harus mengonfigurasi SDK agar menggunakan HTTPS untuk resolusi nama domain.

Penggunaan permintaan HTTPS memberikan keamanan yang lebih tinggi, tetapi penagihan untuk permintaan HTTP dan HTTPS berbeda. Untuk informasi lebih lanjut tentang penagihan, lihat Penagihan Produk.

setEnableHttps

Definisi antarmuka

InitConfig.Builder setEnableHttps(boolean enableHttps)

Catatan
  • HTTPS dan enkripsi AES beroperasi pada lapisan yang berbeda. Protokol HTTPS menjamin keamanan lapisan transportasi. Namun, parameter dan detail tanggapan masih dapat dilihat dengan menangkap paket. Enkripsi AES mengamankan lapisan layanan HTTPDNS, sehingga mencegah isi teks biasa terlihat meskipun paket berhasil ditangkap. Oleh karena itu, Anda dapat mengaktifkan kedua fitur tersebut sesuai kebutuhan.

Versi diperkenalkan

2.2.2

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enableHttps

boolean

Ya

Menentukan apakah akan menggunakan protokol HTTPS untuk resolusi nama domain.

  • true: Aktifkan resolusi HTTPS.

  • false: Nonaktifkan resolusi HTTPS.

Contoh kode

InitConfig.Builder()
    .setEnableHttps(true)
new InitConfig.Builder()
    .setEnableHttps(true);

Izinkan penggunaan alamat IP yang telah kedaluwarsa

SDK mengikuti protokol DNS dan menyimpan cache hasil resolusi nama domain berdasarkan Time to Live (TTL)-nya. Hal ini meningkatkan efisiensi dalam memperoleh alamat IP ketika aplikasi Anda memulai permintaan jaringan. Saat cache kedaluwarsa, skenario berikut terjadi jika aplikasi memanggil antarmuka resolusi untuk memperoleh alamat IP:

  1. Jika aplikasi memanggil antarmuka sinkron non-blocking saat cache telah kedaluwarsa, SDK tidak dapat langsung mengambil hasil resolusi baru dari server. Untuk menghindari pemblokiran thread, antarmuka tersebut mengembalikan hasil kosong. Pemanggil kemudian harus beralih ke resolusi Local DNS.

  2. Jika aplikasi memanggil antarmuka sinkron atau asinkron, SDK mengirim permintaan resolusi untuk mengambil hasil baru dari server. Proses ini memerlukan waktu tertentu. Antarmuka sinkron akan memblokir thread hingga hasil baru diperoleh, sedangkan antarmuka asinkron hanya akan memanggil callback setelah hasil baru diperoleh.

SDK menyediakan opsi untuk menggunakan kembali alamat IP yang telah kedaluwarsa. Jika opsi ini diatur ke true, antarmuka dapat langsung mengembalikan alamat IP yang telah kedaluwarsa dalam kedua skenario di atas, meskipun alamat IP dalam cache telah kedaluwarsa. Hal ini mengurangi waktu pemrosesan untuk resolusi DNS dan meningkatkan kinerja permintaan jaringan. Secara bersamaan, ketika SDK mendeteksi bahwa alamat IP telah kedaluwarsa, SDK segera memulai thread asinkron untuk meresolusi nama domain dan mengambil hasil baru.

Opsi ini memiliki efek samping minimal, terutama ketika konfigurasi resolusi nama domain tidak sering berubah, seperti pada nama domain situs utama atau gerbang statis. Jika resolusi nama domain memang berubah, mengaktifkan opsi ini hanya memengaruhi permintaan pertama setelah cache nama domain kedaluwarsa. Hal ini karena ketika SDK dipanggil dan menemukan alamat IP yang telah kedaluwarsa, SDK selalu langsung memulai pembaruan resolusi untuk nama domain tersebut.

Fitur ini diaktifkan secara default.

Penting

Saat diatur ke true, SDK mengembalikan alamat IP yang telah kedaluwarsa secara real-time dan melakukan pembaruan asinkron untuk mengambil informasi IP terbaru.

setEnableExpiredIp

Definisi antarmuka

InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)

Versi diperkenalkan

2.2.2

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enableExpiredIp

boolean

Ya

Menentukan apakah akan mengizinkan pengembalian alamat IP yang telah melebihi TTL-nya.

  • true: Izinkan pengembalian alamat IP yang telah kedaluwarsa.

  • false: Jangan kembalikan alamat IP yang telah kedaluwarsa.

Contoh kode

InitConfig.Builder()
    .setEnableExpiredIp(true)
new InitConfig.Builder()
    .setEnableExpiredIp(true);

Aktifkan cache lokal

Fitur cache persistensi dirancang untuk mengoptimalkan waktu yang dihabiskan untuk resolusi nama domain setelah startup, sehingga meningkatkan kecepatan pemuatan layar pertama.

Jika diaktifkan, HTTPDNS menyimpan hasil resolusi terakhir ke lapisan persistensi lokal. Setelah aplikasi dimulai ulang, resolusi pertama untuk setiap nama domain akan mengambil hasil cache dari lapisan persistensi terlebih dahulu, mencapai efisiensi resolusi tercepat. Dengan demikian, alamat IP pertama yang digunakan mungkin merupakan alamat IP yang telah kedaluwarsa, artinya TTL-nya dalam cache telah habis. Namun, dalam kebanyakan kasus, alamat IP ini masih dapat digunakan, terutama untuk nama domain dengan rekaman DNS yang stabil.

Untuk menghindari penggunaan ulang cache yang telah kedaluwarsa terlalu lama setelah aplikasi dimulai (misalnya, jika aplikasi terakhir kali dijalankan sebulan yang lalu), antarmuka ini menyediakan parameter expiredThresholdMillis. Saat aplikasi dimulai dan memuat cache dari lapisan persistensi ke memori, parameter ini menentukan apakah hasil resolusi yang telah kedaluwarsa lebih lama dari durasi expiredThresholdMillis akan dibuang. Kami merekomendasikan menetapkan nilai ini menjadi satu hari.

Fitur ini dinonaktifkan secara default.

setEnableCacheIp

Definisi antarmuka

InitConfig.Builder setEnableCacheIp(boolean enableCacheIp, long expiredThresholdMillis)

Catatan
  • Saat Anda mengaktifkan cache lokal, Anda dapat menentukan bahwa hasil cache lokal akan dipurge setelah kedaluwarsa selama periode tertentu.

  • Jika alamat IP server bisnis Anda sering berubah, gunakan fitur ini dengan hati-hati untuk menghindari dampak pada operasi bisnis Anda.

  • Cache persistensi hanya memengaruhi hasil resolusi nama domain pertama. Resolusi berikutnya tetap meminta server HTTPDNS dan memperbarui cache lokal.

  • Setelah Anda mengaktifkan fitur ini, setiap catatan resolusi jaringan diperbarui dalam cache lokal. Setelah aplikasi dimulai ulang, cache lokal dimuat terlebih dahulu ke memori.

Versi diperkenalkan

2.4.3

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enableCacheIp

boolean

Ya

Mengontrol apakah akan mengaktifkan cache lokal.

  • true: Aktifkan cache lokal.

  • false: Nonaktifkan cache lokal.

expiredThresholdMillis

long

Ya

Saat antarmuka ini dipanggil, SDK memuat catatan dari cache lokal ke cache memori. Catatan cache lokal yang telah kedaluwarsa lebih lama dari expiredThresholdMillis yang ditentukan akan dipurge.

Unitnya adalah milidetik. Nilai default adalah 0 ms, yang berarti catatan yang telah kedaluwarsa dibuang secara default. Nilai maksimum adalah satu tahun.

Contoh kode

InitConfig.Builder()
    .setEnableCacheIp(true, DateUtils.YEAR_IN_MILLIS)
new InitConfig.Builder()
    .setEnableCacheIp(true, DateUtils.YEAR_IN_MILLIS);

setEnableCacheIp

Definisi antarmuka

InitConfig.Builder setEnableCacheIp(boolean enableCacheIp)

Catatan

Saat Anda memanggil metode ini, SDK memuat catatan dari cache persistensi lokal ke cache memori. Catatan cache lokal yang telah kedaluwarsa akan dipurge.

Versi diperkenalkan

2.2.2

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enableCacheIp

boolean

Ya

Mengontrol apakah akan mengaktifkan cache lokal.

  • true: Aktifkan cache lokal.

  • false: Nonaktifkan cache lokal.

Contoh kode

InitConfig.Builder()
    .setEnableCacheIp(true)
new InitConfig.Builder()
    .setEnableCacheIp(true);

Aktifkan resolusi otomatis saat jaringan berubah

Ketika jaringan perangkat berubah (misalnya, beralih dari jaringan Wi-Fi ke jaringan seluler, atau dari satu penyedia layanan seluler ke penyedia lainnya), alamat IP yang sebelumnya di-cache oleh SDK HTTPDNS dapat menyebabkan permintaan bisnis lintas jaringan, yang berpotensi memengaruhi kinerja dan tingkat keberhasilan permintaan. Oleh karena itu, SDK secara internal mendengarkan event perubahan jaringan dan secara cerdas memutuskan apakah akan memurge cache resolusi global.

Antarmuka ini digunakan untuk mengonfigurasi apakah SDK secara otomatis memperbarui hasil resolusi untuk semua nama domain setelah lingkungan jaringan berubah dan cache resolusi global dipurge. Jika diaktifkan, permintaan jaringan bisnis dapat langsung mengambil hasil baru setelah pergantian jaringan, sehingga mengurangi waktu yang dihabiskan untuk resolusi nama domain dan meningkatkan kinerja permintaan.

Mengaktifkan fitur ini dapat sedikit meningkatkan jumlah permintaan resolusi. Fitur ini dinonaktifkan secara default.

Penting
  • Pergantian antara Wi-Fi, jaringan seluler, dan tanpa jaringan dianggap sebagai transisi jaringan.

  • Pergantian antara 4G dan 3G tidak dianggap sebagai transisi jaringan.

  • Pergantian kartu SIM tidak ditangani secara terpisah.

setPreResolveAfterNetworkChanged

Definisi antarmuka

InitConfig.Builder setPreResolveAfterNetworkChanged(boolean enable)

Versi diperkenalkan

2.4.0

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

enable

boolean

Ya

Menentukan apakah akan meresolusi ulang semua nama domain dalam cache saat jaringan berubah.

  • Jika diatur ke true, semua nama domain dalam cache akan dire-solve dan diperbarui saat jaringan berubah.

  • Jika diatur ke false atau tidak diatur, SDK hanya menghapus cache untuk semua nama domain saat jaringan berubah. Nama domain tersebut akan dire-solve hanya saat diakses berikutnya.

Contoh kode

InitConfig.Builder()
    .setPreResolveAfterNetworkChanged(true)
new InitConfig.Builder()
    .setPreResolveAfterNetworkChanged(true);

Konfigurasi waktu habis

Menetapkan periode waktu habis untuk resolusi nama domain. Nilai default adalah 2000 ms.

setTimeoutMillis

Definisi antarmuka

InitConfig.Builder setTimeoutMillis(int timeoutInterval)

Versi diperkenalkan

2.4.0

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

timeoutInterval

int

Ya

Menetapkan periode waktu habis untuk resolusi nama domain, dalam milidetik. Nilai default adalah 2000 ms. Nilai maksimum adalah 5000 ms.

Contoh kode

InitConfig.Builder()
    setTimeoutMillis.(2 * 1000)
new InitConfig.Builder()
    .setTimeoutMillis(2 * 1000);

Koreksi waktu penandatanganan aplikasi

Setelah Anda melakukan operasi ini, jika terjadi deviasi waktu, waktu perangkat akan dikoreksi pada setiap permintaan jaringan. Jika tidak, waktu perangkat akan digunakan.

Penting
  • Skenario: Waktu pada perangkat seluler mungkin tidak akurat.

  • Koreksi ini berlaku untuk satu siklus hidup aplikasi. Setelah aplikasi dimulai ulang, Anda harus menyetelnya lagi agar berlaku. Anda dapat menyetelnya berulang kali.

  • Anda memerlukan layanan waktu, yang dapat Anda bangun sendiri. Antarmuka timestamp sederhana sudah cukup. Minta waktu yang benar dari layanan waktu ini, lalu berikan waktu tersebut ke antarmuka ini. SDK kemudian akan mengetahui selisih waktunya.

setAuthCurrentTime

Definisi antarmuka

void setAuthCurrentTime(long time)

Versi diperkenalkan

1.3.2

Kelas

HttpDnsService

Parameter

Parameter

Tipe

Wajib

Deskripsi

time

long

Ya

Timestamp saat ini.

Contoh kode

val httpdns = HttpDns.getService(accountID)
httpdns?.setAuthCurrentTime(System.currentTimeMillis())
HttpDnsService httpdns = HttpDns.getService(accountID);
httpdns.setAuthCurrentTime(System.currentTimeMillis());

Menetapkan node wilayah

Jika aplikasi Anda perlu menggunakan HTTPDNS di lingkungan di luar Tiongkok, Anda dapat menetapkan node layanan startup untuk SDK ini guna meningkatkan efisiensi resolusi. Setelah node ditetapkan, SDK akan menggunakannya untuk resolusi nama domain dan pembaruan berikutnya pada daftar node penjadwalan.

setRegion

Menetapkan wilayah layanan selama inisialisasi.

Definisi antarmuka

InitConfig.Builder setRegion(Region region)

Versi diperkenalkan

2.4.2

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

region

Region

Ya

Node wilayah. Tetapkan wilayah di luar Tiongkok untuk memilih area layanan di luar Tiongkok.

setRegion

Memperbarui wilayah layanan.

Definisi antarmuka

void setRegion(Region region)

Versi yang Diperkenalkan

2.4.2

Kelas

HttpDnsService

Parameter

Parameter

Tipe

Wajib

Deskripsi

region

Region

Ya

Node wilayah. Tetapkan wilayah di luar Tiongkok untuk memilih area layanan di luar Tiongkok.

setRegion

Memperbarui wilayah layanan.

Definisi antarmuka

void setRegion(String region)

Versi diperkenalkan

1.3.2

Kelas

HttpDnsService

Parameter

Parameter

Tipe

Wajib

Deskripsi

region

String

Ya

Node wilayah. Tetapkan wilayah di luar Tiongkok untuk memilih area layanan di luar Tiongkok. Saat ini, hanya didukung `hk` (node Tiongkok (Hong Kong)), `sg` (node Singapura), `de` (node Jerman), dan `us` (node AS). Setelah Anda menentukan wilayah, node layanan lokal akan dikembalikan.

Penting

Jika aplikasi Anda menggunakan HTTPDNS di lingkungan di luar Tiongkok, tetapkan node layanan yang sesuai di luar Tiongkok untuk meningkatkan efisiensi resolusi.

Menyesuaikan TTL hasil resolusi

Secara default, TTL yang disediakan oleh server digunakan untuk menentukan apakah setiap hasil resolusi telah kedaluwarsa. Untuk memodifikasi TTL hasil resolusi, Anda dapat mengonfigurasinya menggunakan antarmuka berikut.

configCacheTtlChanger

Definisi antarmuka

InitConfig.Builder configCacheTtlChanger(CacheTtlChanger changer)

Versi diperkenalkan

2.3.0

Kelas

InitConfig.Builder

Definisi parameter

Parameter

Tipe

Wajib

Deskripsi

changer

CacheTtlChanger

Ya

Menyesuaikan TTL.

Contoh kode

InitConfig.Builder().configCacheTtlChanger { host, requestIpType, ttl ->
    if (TextUtils.equals(host, "www.aliyun.com")) {
        // Gunakan www.aliyun.com sebagai contoh.
        ttl * 10
    } else ttl
}
new InitConfig.Builder().configCacheTtlChanger(new CacheTtlChanger() {
    @Override
    public int changeCacheTtl(String host, RequestIpType requestIpType, int ttl) {
        // Gunakan www.aliyun.com sebagai contoh.
        if (TextUtils.equals(host, "www.aliyun.com")) {
            return ttl * 10;
        }

        return ttl;
    }
});

Menetapkan blacklist nama domain untuk HTTPDNS

Untuk mencegah nama domain tertentu diselesaikan menggunakan HTTPDNS, Anda dapat memfilternya menggunakan antarmuka ini. Nama domain yang difilter akan mengembalikan hasil resolusi kosong. Anda kemudian harus beralih ke DNS lokal untuk resolusi nama domain.

setNotUseHttpDnsFilter

Definisi antarmuka

InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)

Versi diperkenalkan

2.4.0

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

filter

NotUseHttpDnsFilter

Ya

Mengonfigurasi kebijakan blacklist.

Contoh kode

InitConfig.Builder().setNotUseHttpDnsFilter { hostName ->
    TextUtils.equals(
        hostName,
        "www.aliyun.com"
    )
}
new InitConfig.Builder().setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
    @Override
    public boolean notUseHttpDns(String hostName) {
        return TextUtils.equals(hostName, "www.aliyun.com");
    }
});

Aktifkan probing IP

Menetapkan daftar probing IP. Setelah antarmuka ini ditetapkan, jika nama domain yang sesuai diselesaikan, SDK akan melakukan pengujian kecepatan IP pada alamat IP yang dikembalikan. SDK kemudian akan mengurutkan daftar yang dikembalikan secara dinamis untuk memastikan alamat IP pertama memiliki ketersediaan yang lebih baik.

Catatan

Hanya alamat IPv4 yang didukung untuk probing IP.

setIPRankingList

Definisi antarmuka

InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)

Versi diperkenalkan

2.3.2

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

ipRankingList

List<IPRankingBean>

Ya

Daftar probing IP. Jika nama domain dalam daftar ini diselesaikan, SDK akan melakukan pengujian kecepatan pada alamat IP yang dikembalikan dan mengurutkannya agar alamat IP dengan ketersediaan terbaik berada di posisi pertama.

Contoh kode

val list = ArrayList<IPRankingBean>()
list.add(IPRankingBean("www.aliyun.com", 8080))
InitConfig.Builder().setIPRankingList(list)
ArrayList<IPRankingBean> list = new ArrayList<IPRankingBean>();
list.add(new IPRankingBean("www.aliyun.com", 8080));
new InitConfig.Builder().setIPRankingList(list);

Menetapkan parameter global untuk resolusi kustom

Parameter global ini digabungkan dengan parameter tambahan dari antarmuka resolusi kustom. Operasi penggabungan ini tidak memengaruhi pengaturan parameter dari antarmuka resolusi kustom.

setSdnsGlobalParams

Definisi antarmuka

InitConfig.Builder setSdnsGlobalParams(Map<String, String> params)

Versi diperkenalkan

2.4.0

Kelas

InitConfig.Builder

Parameter

Parameter

Tipe

Wajib

Deskripsi

params

Map<String, String>

Ya

Parameter global untuk resolusi kustom. Setiap permintaan resolusi kustom mencakup parameter global ini.

Contoh kode

val params: MutableMap<String, String> = HashMap()
params["level"] = "1"
InitConfig.Builder()
    .setSdnsGlobalParams(params)
Map<String, String> params = new HashMap<>();
params.put("level", "1");
new InitConfig.Builder()
        .setSdnsGlobalParams(params);