Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penyusun API Data mendukung lama cache dalam memori Level 1 (L1) dan header permintaan HTTP terkait cache seperti no-store, no-cache, dan only-if-cached untuk memengaruhi perilaku cache.
Cache Tingkat 2 (L2) memperluas penembolokan di luar proses lokal dengan menambahkan lapisan cache terdistribusi. Dengan L2, hasil yang di-cache dapat digunakan kembali di beberapa instans DAB dan dapat bertahan dari mulai ulang kontainer individual, yang membuat penyebaran stateless terasa kurang stateless dengan semua cara yang tepat.
Manfaat cache tingkat 2
Gunakan cache tingkat 2 saat Anda ingin:
- Bagikan hasil cache di seluruh instans DAB yang diskalakan
- Mengurangi perjalanan pulang pergi database untuk bacaan berulang
- Jaga agar kontainer stateless tetap hangat setelah daur ulang atau sebarkan ulang
- Meningkatkan performa untuk beban kerja baca-berat
- Partisipasi cache namespace dengan partisi
Mengonfigurasi pengaturan cache runtime
Cache Tingkat 2 dikonfigurasi secara global di bawah runtime.cache. Blok cache runtime memungkinkan penembolokan, mengatur waktu hidup default (TTL), dan mengonfigurasi penyedia cache terdistribusi.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Properti runtime
| Harta benda | Deskripsi |
|---|---|
enabled |
Mengaktifkan dukungan cache secara global. |
ttl-seconds |
Mengatur cache default time-to-live dalam hitungan detik. |
level-2.enabled |
Mengaktifkan tingkat cache terdistribusi. |
level-2.provider |
Memilih penyedia cache terdistribusi. Saat ini redis didukung. |
level-2.connection-string |
String koneksi untuk instans Redis. |
level-2.partition |
Namespace opsional untuk kunci Redis dan saluran backplane. Hanya kontainer yang menggunakan partisi yang sama yang berbagi ruang cache terdistribusi yang sama. |
Mengonfigurasi perilaku cache khusus entitas
Entitas dapat mengambil alih perilaku cache global. Gunakan blok entitas cache untuk mengaktifkan penembolokan, mengatur TTL kustom, dan memilih tingkat cache.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
Properti cache.level
Gunakan cache.level untuk mengontrol tingkat cache mana yang digunakan entitas.
| Nilai | Deskripsi |
|---|---|
L1 |
Hanya cache dalam memori. Cepat dan lokal ke proses DAB saat ini. |
L1L2 |
Dalam memori ditambah cache terdistribusi. Tingkat ini adalah default untuk entitas yang di-cache. |
Jika L2 tidak diaktifkan secara global, entitas yang dikonfigurasi dengan L1L2 perilaku sebagai L1.
Cara kerja L1L2
Petunjuk / Saran
TL; DRL1L2 = Meminta → L1 → L2 → database → L2 → L1 → Respons
Secara bawaan, entitas dengan penyimpanan sementara diaktifkan menggunakan tingkat L1L2.
-
L1adalah cache dalam memori per proses. -
L2adalah lapisan cache terdistribusi, saat ini Redis, ditambah backplane untuk koherensi lintas instans.
Dengan L1L2, pencarian cache pertama-tama memeriksa L1.
L1 Jika tidak ada, ini memeriksa apakah L2 penembolokan tingkat 2 diaktifkan dan dikonfigurasi secara global. Jika entri tidak ditemukan di salah satu lapisan, DAB menjalankan kueri database. Hasilnya kemudian disimpan di dan L1L2.
Itu berarti:
- Permintaan di masa mendatang pada instans yang sama dilayani dari lokal
L1 - Permintaan pada instans lain dapat membaca dari
L2dan mempromosikan entri ke dalam instans mereka sendiriL1 - Jika kontainer dimulai ulang, kesalahan
L1diikuti olehL2hit masih dapat menghindari perjalanan pulang pergi database
Kombinasi ini memberi Anda cache terdistribusi hangat di seluruh instans yang diskalakan atau didaur ulang.
Dukungan Redis
Redis adalah penyedia saat ini untuk cache tingkat 2. Sangat cocok untuk skenario ini karena mendukung:
- Akses bersama di beberapa instans DAB
- Kedaluwarsa kunci untuk penembolokan berbasis TTL
- Membaca dan menulis cepat untuk beban kerja throughput tinggi
- Koordinasi backplane di seluruh instans
Spasi cache yang dipartisi
Gunakan pengaturan opsional partition untuk mengisolasi aktivitas cache terdistribusi. DAB menggunakan nilai partisi untuk namespace kunci Redis dan saluran backplane. Hanya kontainer yang berbagi partisi yang sama yang berpartisipasi dalam ruang cache terdistribusi yang sama.
Pengaturan ini berguna ketika Anda ingin:
- Memisahkan lalu lintas produksi dan nonproduksi
- Mengisolasi penyewa atau lingkungan
- Mencegah layanan yang tidak terkait berbagi entri yang di-cache