Tair (Redis OSS-compatible) menyediakan pemrosesan data dalam memori berkinerja tinggi. Ikuti standar pengembangan dan O&M untuk Tair (Redis OSS-compatible) ini guna membangun sistem yang efisien dan memaksimalkan Tair. Berdasarkan pengalaman bertahun-tahun dalam O&M Alibaba Cloud, standar ini mencakup penerapan bisnis, desain kunci, penggunaan SDK, penggunaan perintah, dan manajemen O&M.
Batas kinerja Tair
Gambar 1. Batas kinerja Tair
|
Jenis resource |
Deskripsi |
|
Resource komputasi |
Wildcard, skrip Lua konkuren, PUBSUB satu-ke-banyak, dan hotkey mengonsumsi resource komputasi secara intensif. Untuk instans kluster, item-item ini juga dapat menyebabkan ketimpangan permintaan (request skew) dan pemanfaatan shard yang tidak optimal. |
|
Resource penyimpanan |
Pekerjaan streaming dan kunci besar (large keys) mengonsumsi resource penyimpanan secara intensif. Untuk instans kluster, item-item ini juga dapat menyebabkan kesenjangan data (data skew) dan pemanfaatan shard yang tidak optimal. |
|
Resource jaringan |
Pemindaian seluruh database (KEYS) dan kueri rentang pada kunci serta nilai besar (HGETALL) mengonsumsi resource jaringan secara intensif dan sering menyebabkan kemacetan thread. Penting
Kemampuan konkurensi tinggi Tair tidak secara signifikan meningkatkan kinerja akses seperti yang diharapkan, tetapi memengaruhi kinerja keseluruhan Tair. Sebagai contoh, penyimpanan nilai besar di Tair tidak meningkatkan kinerja akses secara signifikan. |
Untuk instans kluster, hotkey, kunci besar, atau nilai besar juga dapat menyebabkan penyimpanan tidak seimbang atau permintaan tidak seimbang . Di lingkungan produksi, penting untuk menghindari mencapai batas kinerja Tair.
Standar penerapan bisnis
|
Tingkat kepentingan |
Standar |
Deskripsi |
|
★★★★★ |
Tentukan apakah skenario tersebut merupakan cache berkecepatan tinggi atau database dalam memori . |
|
|
★★★★★ |
Terapkan aplikasi Anda di virtual private cloud (VPC) yang sama dengan instans Tair Anda, misalnya pada instans Elastic Compute Service (ECS). |
Tair memberikan kinerja tinggi, tetapi penerapan yang jauh dari instans Tair atau koneksi melalui Internet secara signifikan menurunkan kinerja karena latensi jaringan. Catatan
Untuk penerapan cross-region, gunakan Global Distributed Cache untuk pemulihan bencana geo, redundansi geo-aktif, dan pengurangan latensi. |
|
★★★★☆ |
Buat instans Tair untuk setiap layanan. |
Jangan berbagi instans Tair antarlayanan. Menggabungkan beban kerja cache dan database dalam memori menyebabkan kebijakan penggantian, kueri lambat, dan eksekusi perintah FLUSHDB dari satu layanan memengaruhi layanan lainnya. |
|
★★★★☆ |
Konfigurasikan kebijakan eviksi yang sesuai untuk mengeviktir kunci yang kedaluwarsa. |
Kebijakan penggantian default untuk kunci kedaluwarsa di Tair adalah volatile-lru . Konfigurasikan kebijakan penggantian di Parameter yang dapat dikonfigurasi untuk instans Redis Edisi Open-Source. |
|
★★★☆☆ |
Atur data dan durasi uji stres. |
Tair tidak menghapus data uji stres. Untuk mencegah dampak terhadap bisnis Anda, Anda harus mengelola data dan durasi uji stres sendiri. |
Standar desain kunci
|
Tingkat kepentingan |
Standar |
Deskripsi |
|
★★★★★ |
Pertahankan nilai di bawah 10 KB. |
Nilai yang terlalu besar menyebabkan kesenjangan data, hotkey, bandwidth tinggi, atau pemanfaatan CPU tinggi. |
|
★★★★★ |
Gunakan nama kunci yang deskriptif dan ringkas. |
|
|
★★★★★ |
Batasi sub-kunci per struktur data kompleks hingga kurang dari 1.000. Catatan
Struktur data kompleks umum mencakup Hash, Set, Zset, Geo, dan Stream, serta struktur khusus Tair (Edisi Perusahaan), seperti exHash, Bloom, dan TairGIS. |
Kompleksitas waktu perintah seperti HGETALL meningkat seiring jumlah sub-kunci. Perintah O(N)+ yang sering digunakan pada kunci dengan sub-kunci berlebihan menyebabkan kueri lambat, kesenjangan data, dan hotkey. |
|
★★★★☆ |
Serialisasi nilai ke dalam struktur yang dapat dibaca. |
Bytecode bahasa dapat berubah antarversi. Menyimpan objek mentah (Java, C#) di Tair menyulitkan peningkatan stack. Alih-alih itu, serialisasi nilai ke dalam struktur yang dapat dibaca. |
Standar penggunaan SDK
|
Tingkat kepentingan |
Standar |
Deskripsi |
|
★★★★★ |
Gunakan JedisPool atau JedisCluster untuk menghubungkan ke instans Tair. Catatan
Gunakan klien TairJedis untuk instans Tair (Edisi Perusahaan) berbasis DRAM — klien ini menyediakan kelas enkapsulasi untuk struktur data baru. Gunakan klien untuk menghubungkan ke instans. |
Koneksi tunggal tidak dapat terhubung ulang secara otomatis setelah timeout. Konfigurasikan koneksi JedisPool: Gunakan klien untuk menghubungkan ke instans, Optimasi JedisPool, dan JedisCluster. |
|
★★★★☆ |
Rancang mekanisme toleransi kesalahan yang tepat untuk klien Anda. |
Fluktuasi jaringan dan penggunaan resource tinggi dapat menyebabkan timeout koneksi atau kueri lambat di Tair. Untuk mencegah risiko ini, Anda harus merancang mekanisme toleransi kesalahan yang tepat untuk klien Anda. |
|
★★★★☆ |
Gunakan interval retry yang memadai. |
Interval retry kurang dari 200 ms dapat memicu retry cepat dan menyebabkan avalanche layanan. Mekanisme retry untuk klien Redis. |
Standar penggunaan perintah
|
Tingkat kepentingan |
Standar |
Deskripsi |
|
★★★★★ |
Hindari kueri rentang seperti KEYS *. Gunakan kueri titik atau SCAN sebagai gantinya. |
Kueri rentang dapat menyebabkan gangguan layanan, kueri lambat, atau kemacetan. |
|
★★★★★ |
Gunakan struktur data diperluas (seperti exString (termasuk perintah yang meningkatkan fungsionalitas string Redis), exHash, exZset, GIS, Bloom, Doc, TS, Cpc, Roaring, Search, dan Vector) alih-alih skrip Lua. |
Skrip Lua mengonsumsi resource komputasi dan memori secara intensif tanpa dukungan multithreading. Skrip yang kompleks atau tidak tepat dapat menghabiskan resource. |
|
★★★★☆ |
Gunakan pipeline untuk mengurangi waktu round-trip (RTT) data. |
Saat klien Anda tidak bergantung pada tanggapan individual, kelompokkan perintah menggunakan pipeline. Panduan:
|
|
★★★★☆ |
Gunakan perintah Redis dengan benar. |
Batasan perintah transaksi:
|
|
★★★★☆ |
Hindari distribusi pesan skala besar dengan perintah Pub/Sub. |
Pub/Sub tidak memiliki mekanisme persistensi data dan acknowledgment. Mendistribusikan pesan berukuran lebih dari 1 KB kepada lebih dari 100 subscriber dapat menghabiskan resource server dan menyebabkan kehilangan pesan. Catatan
Untuk meningkatkan kinerja dan keseimbangan, Tair mengoptimalkan Pub/Sub di instans kluster dengan melakukan penghashan perintah ke node data berdasarkan nama channel. |
Standar manajemen O&M
|
Tingkat kepentingan |
Standar |
Deskripsi |
|
★★★★★ |
Pahami dampak dari berbagai operasi manajemen instans. |
Perubahan konfigurasi atau restart dapat menyebabkan pemutusan sementara pada instans Tair. Pahami dampaknya sebelum melanjutkan. Status instans dan dampaknya. |
|
★★★★★ |
Uji penanganan error klien dan logika pemulihan bencana. |
Tair memantau kesehatan node dan secara otomatis memicu alih bencana master-replika saat master tidak tersedia. Sebelum klien digunakan di produksi, picu alih bencana secara manual untuk memverifikasi penanganan error dan logika pemulihan bencana. Alihkan beban kerja secara manual dari node master ke node replika. |
|
★★★★★ |
Nonaktifkan perintah yang memakan waktu atau berisiko tinggi. |
Penyalahgunaan perintah di lingkungan produksi dapat menyebabkan kehilangan data (FLUSHALL) atau kemacetan jaringan (KEYS). Nonaktifkan perintah berisiko untuk meningkatkan stabilitas. Nonaktifkan perintah berisiko tinggi. |
|
★★★★☆ |
Tangani event tertunda segera. |
Alibaba Cloud menghasilkan event tertunda untuk peningkatan perangkat keras, pembaruan perangkat lunak, atau maintenance jaringan — misalnya, saat versi minor database perlu diperbarui. Tinjau dampaknya dan jadwalkan ulang jika diperlukan. Lihat dan kelola event terjadwal. |
|
★★★★☆ |
Konfigurasikan alert untuk metrik inti. |
Pantau pemanfaatan CPU, penggunaan memori, dan bandwidth secara real time dengan Pengaturan alert. |
|
★★★★☆ |
Periksa kesehatan instans secara berkala menggunakan fitur O&M Tair untuk troubleshooting anomali resource. |
|
|
★★★☆☆ |
Aktifkan fitur log audit dan evaluasi log audit tersebut. |
Fitur log audit mencatat operasi tulis dan mendukung kueri, analisis online, serta ekspor. Gunakan fitur ini untuk memantau keamanan dan kinerja instans. Log Audit. Penting
Setelah Anda mengaktifkan fitur log audit, kinerja instans Tair dapat menurun 5% hingga 15%, tergantung pada volume tulis dan audit. Untuk beban kerja Tair yang intensif menulis, aktifkan log audit hanya selama operasi O&M seperti troubleshooting. |