Tair (Redis OSS-compatible) adalah layanan database berkinerja tinggi. Dokumen ini menjelaskan standar pengembangan dan O&M untuk Tair (Redis OSS-compatible), membantu Anda merancang sistem bisnis yang lebih efisien dan memanfaatkan Tair secara optimal. Standar ini dikembangkan oleh Alibaba Cloud berdasarkan pengalaman bertahun-tahun dalam operasi dan pemeliharaan, serta mencakup skenario seperti penyebaran bisnis, desain kunci, penggunaan SDK, penggunaan perintah, dan manajemen O&M.
Batasan kinerja Tair
Gambar 1. Batasan Kinerja Tair
Jenis sumber daya | Deskripsi |
Sumber daya komputasi | Karakter wildcard, skrip Lua bersamaan, satu-ke-banyak PUBSUB, dan hotkeys mengonsumsi sejumlah besar sumber daya komputasi. Untuk instans kluster, item-item ini juga dapat menyebabkan permintaan miring dan pemanfaatan data shard yang tidak optimal. |
Sumber daya penyimpanan | Pekerjaan streaming dan kunci besar mengonsumsi sejumlah besar sumber daya penyimpanan. Untuk instans kluster, item-item ini juga dapat menyebabkan kesenjangan data dan pemanfaatan data shard yang tidak optimal. |
Sumber daya jaringan | Pemindaian basis data secara keseluruhan (dengan menjalankan perintah KEYS) dan kueri rentang untuk kunci dan nilai besar (dengan menjalankan perintah HGETALL) mengonsumsi sejumlah besar sumber daya jaringan dan sering menyebabkan kemacetan thread. Penting Kemampuan konkurensi tinggi dari Tair tidak secara signifikan meningkatkan kinerja akses seperti yang diharapkan tetapi memengaruhi kinerja keseluruhan Tair. Sebagai contoh, penyimpanan nilai besar dalam Tair tidak meningkatkan kinerja akses secara signifikan. |
Untuk instans kluster, hotkeys, kunci besar, atau nilai besar dapat menyebabkan penyimpanan miring atau permintaan miring . Dalam lingkungan produksi, penting untuk menghindari mencapai batasan kinerja Tair.
Standar penyebaran bisnis
Tingkat Kepentingan | Standar | Deskripsi |
★★★★★ | Tentukan apakah skenario tersebut adalah cache kecepatan tinggi atau database dalam memori . |
|
★★★★★ | Sebarkan bisnis Anda dekat dengan instans Tair. Sebagai contoh, Anda dapat menyebarkan bisnis Anda di instans Elastic Compute Service (ECS) yang berada di virtual private cloud (VPC) yang sama dengan instans Tair Anda. | Tair adalah layanan database berkinerja tinggi. Namun, jika Anda menyebarkan server bisnis jauh dari instans Tair dan server bisnis terhubung ke instans melalui Internet, kinerja Tair sangat terganggu karena latensi jaringan. Catatan Untuk penyebaran lintas wilayah, Anda dapat menggunakan kemampuan replikasi geo dari Global Distributed Cache untuk menerapkan pemulihan bencana geo atau redundansi geo aktif, mengurangi latensi jaringan, dan menyederhanakan desain bisnis. Untuk informasi lebih lanjut, lihat Global Distributed Cache. |
★★★★☆ | Buat instans Tair untuk setiap layanan. | Jangan gunakan instans Tair untuk layanan yang berbeda. Sebagai contoh, jangan gunakan instans Tair untuk layanan caching kecepatan tinggi dan database dalam memori secara bersamaan. Jika tidak, kebijakan penggantian, kueri lambat, dan eksekusi perintah FLUSHDB dari satu layanan akan memengaruhi layanan lainnya. |
★★★★☆ | Konfigurasikan kebijakan penggantian yang sesuai untuk menghapus kunci yang kedaluwarsa. | Kebijakan penggantian default untuk kunci yang kedaluwarsa dalam Tair adalah volatile-lru . Untuk informasi lebih lanjut tentang kebijakan penggantian, lihat Parameter yang Dapat Dikonfigurasi untuk Instans Redis Edisi Open-Source. |
★★★☆☆ | Kelola data uji stres dan durasinya. | Tair tidak menghapus data uji stres. Untuk mencegah dampak pada bisnis Anda, Anda harus mengelola data uji stres dan durasinya sendiri. |
Standar desain kunci
Tingkat Kepentingan | Standar | Deskripsi |
★★★★★ | Konfigurasikan nilai kunci ke ukuran yang sesuai. Kami menyarankan Anda menjaga ukuran nilai yang disimpan dalam kunci di bawah 10 KB. | Nilai yang terlalu besar dapat menyebabkan kesenjangan data, hotkeys, bandwidth tinggi, atau pemanfaatan CPU tinggi. Anda dapat mencegah masalah-masalah ini sejak awal dengan memastikan bahwa nilai kunci memiliki ukuran yang tepat. |
★★★★★ | Konfigurasikan nama kunci yang tepat dengan panjang yang sesuai. |
|
★★★★★ | Untuk struktur data kompleks yang mendukung sub-kunci, Anda harus menghindari memasukkan sub-kunci yang berlebihan dalam satu kunci. Kami menyarankan Anda memasukkan kurang dari 1.000 sub-kunci dalam satu kunci. Catatan Struktur data kompleks umum termasuk Hash, Set, Zset, Geo, dan Stream, serta struktur khusus untuk Tair (Edisi Perusahaan), seperti exHash, Bloom, dan TairGIS. | Kompleksitas waktu perintah tertentu seperti HGETALL secara langsung berkaitan dengan jumlah sub-kunci. Jika Anda sering menjalankan perintah dengan kompleksitas waktu O(N) atau lebih tinggi, dan kunci tersebut berisi terlalu banyak sub-kunci, masalah seperti kueri lambat, kesenjangan data, dan hotkeys dapat terjadi. |
★★★★☆ | Gunakan metode serialisasi untuk mengonversi nilai menjadi struktur yang dapat dibaca. | Bytecode bahasa pemrograman dapat berubah saat versi bahasa berubah. Jika Anda menyimpan objek telanjang (seperti objek Java dan objek C#) di instans Tair, tumpukan perangkat lunak mungkin sulit untuk ditingkatkan. Kami menyarankan Anda menggunakan metode serialisasi untuk mengonversi nilai menjadi struktur yang dapat dibaca. |
Standar penggunaan SDK
Tingkat Kepentingan | Standar | Deskripsi |
★★★★★ | Gunakan JedisPool atau JedisCluster untuk terhubung ke instans Tair. Catatan Kami menyarankan Anda menggunakan klien TairJedis untuk terhubung ke Tair (Edisi Perusahaan) instans berbasis DRAM, karena klien TairJedis menyediakan kelas enkapsulasi untuk struktur data baru. Untuk informasi lebih lanjut, lihat Gunakan klien untuk terhubung ke instans. | Jika Anda menggunakan satu koneksi, klien tidak dapat secara otomatis menyambungkan kembali ke instans Tair setelah koneksi habis waktu. Untuk informasi lebih lanjut tentang cara menggunakan JedisPool untuk terhubung ke instans Tair, lihat Gunakan klien untuk terhubung ke instans, Optimasi JedisPool, dan JedisCluster. |
★★★★☆ | Rancang mekanisme toleransi kesalahan yang tepat untuk klien Anda. | Fluktuasi jaringan dan penggunaan sumber daya yang 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. |
★★★★☆ | Tetapkan interval percobaan ulang yang lebih lama untuk klien Anda. | Jika interval percobaan ulang lebih pendek dari yang diperlukan (seperti lebih pendek dari 200 milidetik), banyak percobaan ulang dapat terjadi dalam waktu singkat. Hal ini dapat mengakibatkan avalan layanan. Untuk informasi lebih lanjut, lihat Mekanisme percobaan ulang untuk klien Redis. |
Standar penggunaan perintah
Tingkat Kepentingan | Standar | Deskripsi |
★★★★★ | Hindari kueri rentang, seperti yang dieksekusi dengan menjalankan perintah KEYS *. Sebagai gantinya, gunakan beberapa kueri titik atau jalankan perintah SCAN untuk mengurangi latensi. | Kueri rentang dapat menyebabkan gangguan layanan, kueri lambat, atau kemacetan. |
★★★★★ | Gunakan struktur data ekstensi untuk melakukan operasi kompleks. Untuk informasi lebih lanjut, lihat Integrasi Modul Data Multipel. Jangan gunakan skrip Lua. | Skrip Lua mengonsumsi sejumlah besar sumber daya komputasi dan memori serta tidak mendukung akselerasi multi-threading. Skrip Lua yang terlalu kompleks atau tidak tepat dapat mengakibatkan habisnya sumber daya. |
★★★★☆ | Gunakan pipeline untuk mengurangi waktu round-trip (RTT) data. | Jika Anda ingin mengirim beberapa perintah ke server dan klien Anda tidak bergantung pada setiap respons dari server, Anda dapat menggunakan pipeline untuk mengirim perintah sekaligus. Perhatikan hal-hal berikut saat menggunakan pipeline:
|
★★★★☆ | Gunakan perintah Redis dengan benar. | Saat Anda menggunakan perintah transaksi, perhatikan batasan berikut:
|
★★★★☆ | Jangan gunakan perintah Redis untuk melakukan banyak tugas distribusi pesan. | Grup perintah Pub dan Sub tidak mendukung persistensi data atau mekanisme pengakuan yang memastikan keandalan data. Kami menyarankan Anda untuk tidak menggunakan perintah Pub atau Sub untuk melakukan banyak tugas distribusi pesan. Sebagai contoh, jika Anda menggunakan perintah-perintah ini untuk mendistribusikan pesan yang ukurannya lebih besar dari 1 KB kepada lebih dari 100 klien pelanggan, sumber daya server mungkin habis dan klien pelanggan mungkin tidak menerima pesan tersebut. Catatan Untuk meningkatkan kinerja dan keseimbangan, Tair dioptimalkan untuk perintah Pub dan Sub. Dalam instans kluster, node proxy menghitung nilai hash perintah berdasarkan nama saluran dan mengalokasikan perintah ke node data yang sesuai. |
Standar manajemen O&M
Tingkat Kepentingan | Standar | Deskripsi |
★★★★★ | Pahami dampak dari berbagai operasi manajemen instans. | Perubahan konfigurasi atau restart memengaruhi status instans Tair. Sebagai contoh, koneksi sementara dapat terjadi pada instans tersebut. Sebelum Anda melakukan operasi tersebut, pastikan Anda memahami dampaknya. Untuk informasi lebih lanjut, lihat Status Instans dan Dampaknya. |
★★★★★ | Verifikasi kemampuan penanganan kesalahan atau logika pemulihan bencana klien. | Tair dapat memantau status kesehatan node. Jika node master dalam instans menjadi tidak tersedia, Tair secara otomatis memicu alih bencana master-replika. Peran node master dan replika dipertukarkan untuk memastikan ketersediaan tinggi instans. Sebelum klien umum tersedia, kami menyarankan Anda memicu alih bencana master-replika secara manual. Ini dapat membantu Anda memverifikasi kemampuan penanganan kesalahan atau logika pemulihan bencana klien. Untuk informasi lebih lanjut, lihat Alih Beban Kerja dari Node Master ke Node Replika Secara Manual. |
★★★★★ | Nonaktifkan perintah yang memakan waktu atau berisiko tinggi. | Dalam lingkungan produksi, penyalahgunaan perintah dapat menyebabkan masalah. Sebagai contoh, perintah FLUSHALL dapat menghapus semua data. Perintah KEYS dapat menyebabkan kemacetan jaringan. Untuk meningkatkan stabilitas dan efisiensi layanan, Anda dapat menonaktifkan perintah tertentu untuk meminimalkan risiko. Untuk informasi lebih lanjut, lihat Nonaktifkan Perintah Berisiko Tinggi. |
★★★★☆ | Tangani acara tertunda secepat mungkin. | Untuk meningkatkan pengalaman pengguna dan memberikan kinerja layanan yang lebih baik dan stabilitas, Alibaba Cloud kadang-kadang menghasilkan acara tertunda untuk meningkatkan perangkat keras dan perangkat lunak server tertentu atau mengganti fasilitas jaringan. Sebagai contoh, acara tertunda dihasilkan ketika versi minor database perlu diperbarui. Setelah Anda menerima notifikasi acara dari Alibaba Cloud, Anda dapat memeriksa dampak acara tersebut dan mengubah waktu yang dijadwalkan untuk acara tersebut agar sesuai dengan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Lihat dan Kelola Acara Terjadwal. |
★★★★☆ | Konfigurasikan peringatan untuk metrik inti untuk memantau status instans Anda dengan lebih baik. | Konfigurasikan peringatan untuk metrik inti seperti pemanfaatan CPU, penggunaan memori, dan penggunaan bandwidth untuk memantau status instans Anda secara real-time. Untuk informasi lebih lanjut, lihat Pengaturan Peringatan. |
★★★★☆ | Gunakan fitur O&M yang disediakan oleh Tair untuk memeriksa status instans atau menyelesaikan masalah penggunaan sumber daya yang tidak normal secara berkala. |
|
★★★☆☆ | Aktifkan fitur log audit dan evaluasi log audit. | Setelah Anda mengaktifkan fitur log audit, statistik audit tentang operasi tulis dicatat. Tair juga memungkinkan Anda untuk menanyakan, menganalisis online, dan mengekspor log audit. Fitur-fitur ini membantu Anda memantau keamanan dan kinerja instans Tair Anda. Untuk informasi lebih lanjut, lihat Log Audit. Penting Setelah Anda mengaktifkan fitur log audit, kinerja instans Tair dapat menurun sebesar 5% hingga 15%. Penurunan kinerja aktual bervariasi berdasarkan jumlah operasi tulis atau operasi audit. Jika bisnis Anda mengharapkan banyak operasi tulis pada instans Tair, kami menyarankan Anda mengaktifkan fitur log audit hanya saat Anda melakukan operasi O&M, seperti pemecahan masalah. Ini membantu Anda mencegah penurunan kinerja. |