Garnet adalah jenis penyimpanan cache jarak jauh baru yang dikembangkan oleh Microsoft Research yang menawarkan beberapa manfaat unik:
- Garnet mengambil protokol lini RESP yang populer sebagai titik awal, yang memungkinkan untuk menggunakan Garnet dari klien Redis yang tidak dimodifikasi yang tersedia di sebagian besar bahasa pemrograman saat ini, seperti StackExchange.Redis di C#.
- Garnet menawarkan throughput dan skalabilitas yang lebih baik dengan banyak koneksi klien dan batch kecil dibandingkan dengan penyimpanan cache sumber terbuka yang sebanding, menghemat biaya untuk aplikasi dan layanan besar.
- Garnet menunjukkan latensi klien yang sangat rendah (biasanya kurang dari 300 mikrodetik pada 99,9%) menggunakan VM Commodity Cloud (Azure) dengan TCP yang dipercepat diaktifkan, yang sangat penting untuk skenario dunia nyata.
- Garnet didasarkan pada teknologi .NET terbaru dan lintas platform, dapat diperluas, dan modern. Ini dirancang agar mudah dikembangkan dan berkembang tanpa mengorbankan kinerja dalam situasi umum. Kami memanfaatkan ekosistem perpustakaan .NET yang kaya untuk memperluas API dan memberikan peluang pengoptimalan terbuka. Berkat penggunaan .NET yang cermat, Garnet mencapai kinerja canggih di Linux dan Windows.
Alamat Sumber Terbuka:Login hyperlink terlihat. Dokumentasi:Login hyperlink terlihat.
Garnet memiliki manfaat utama berikut:
- Throughput server (operasi per detik) meningkat beberapa urutan besarnya untuk batch kecil dan banyak sesi klien relatif terhadap penyimpanan cache sumber terbuka yang sebanding.
- Pada komputer cloud komoditas (Azure) dengan TCP yang dipercepat diaktifkan di Windows dan Linux, latensi per operasi sangat rendah (biasanya kurang dari 300 mikrodetik pada 99,9%).
- Seiring bertambahnya jumlah klien, skalabilitas yang lebih baik dicapai dengan atau tanpa batching klien.
- Kemampuan untuk menggunakan semua sumber daya CPU/memori komputer server melalui satu instans server memori bersama (tidak perlu pengelompokan intra-node).
- Dukungan untuk himpunan data yang lebih besar dari memori yang meluap ke perangkat penyimpanan lokal dan cloud.
- Fitur basis data seperti pos pemeriksaan cepat dan pemulihan dan publikasi/berlangganan.
- Dukungan untuk partisi hash serpihan multi-node (mode "cluster" Redis), migrasi status, dan replikasi.
- Diuji dengan baik dengan rangkaian pengujian yang komprehensif (ribuan pengujian unit terhadap Garnet dan tingkat penyimpanannya Tsavorite).
- Basis kode C# yang mudah dikembangkan dan diperluas.
Garnet tidak mendukung semua perintah Redis, khususnya perintah yang didukung untuk melihat:Login hyperlink terlihat. Proyek Garnet mencakup alat Tolok Ukur untuk menjalankan tolok ukur RESP menggunakan klien yang berbeda, beban kerja yang berbeda, dan kebijakan yang berbeda untuk mengukur throughput, kinerja, dan latensi. Alamat:Login hyperlink terlihat. Protokol RESP:Login hyperlink terlihat.
Artikel ini menggunakan alat pembandingan bawaan Redis untuk pengujian sederhana, dan lingkungan pengujiannya adalah sebagai berikut:
| tembolok | versi | | Redis | Redis 3.0.504 (00000000/0) 64 bit | | Garnet | Garnet 1.0.2 64 bit; Mode mandiri |
Tolok ukur Redis
Pertama, luncurkan cache Redis menggunakan baris perintah dengan perintah berikut:
Perintah uji adalah sebagai berikut:
Hasilnya adalah sebagai berikut:
====== SET ====== 500000 permintaan diselesaikan dalam 24,38 detik 100 klien paralel Muatan 3 byte tetap hidup: 1
0,03% <= 1 milidetik 0,25% <= 2 milidetik 2,65% <= 3 milidetik 16,49% <= 4 milidetik 59,95% <= 5 milidetik 99,09% <= 6 milidetik 99,76% <= 7 milidetik 99,86% <= 8 milidetik 99,93% <= 9 milidetik 99,98% <= 10 milidetik 99,99% <= 11 milidetik 100,00% <= 12 milidetik 20512.82 permintaan per detik
====== MENDAPATKAN ====== 500000 permintaan selesai dalam 27,41 detik 100 klien paralel Muatan 3 byte tetap hidup: 1
0,03% <= 1 milidetik 0,19% <= 2 milidetik 6,44% <= 3 milidetik 25,82% <= 4 milidetik 45,65% <= 5 milidetik 98,79% <= 6 milidetik 99,98% <= 7 milidetik 99,98% <= 8 milidetik 99,98% <= 9 milidetik 100,00% <= 9 milidetik 18238.86 permintaan per detik
Tolok ukur garnet
Buat proyek konsol .NET 8 baru dan referensikan paket Microsoft.Garnet terlebih dahulu dengan perintah berikut:
Kodenya adalah sebagai berikut:
Perintah startup adalah sebagai berikut:
Dengan menggunakan perintah benchmark yang sama, hasilnya adalah sebagai berikut:
====== SET ====== 500000 permintaan selesai dalam 11,51 detik 100 klien paralel Muatan 3 byte tetap hidup: 1
75,51% <= 1 milidetik 88,24% <= 2 milidetik 92,04% <= 3 milidetik 99,46% <= 4 milidetik 99,98% <= 5 milidetik 99,99% <= 6 milidetik 100,00% <= 12 milidetik 100,00% <= 12 milidetik 43448.04 permintaan per detik
====== MENDAPATKAN ====== 500000 permintaan selesai dalam 31,50 detik 100 klien paralel Muatan 3 byte tetap hidup: 1
0,01% <= 1 milidetik 0,90% <= 2 milidetik 27,25% <= 3 milidetik 97,65% <= 4 milidetik 99,82% <= 5 milidetik 99,94% <= 6 milidetik 99,98% <= 7 milidetik 99,98% <= 9 milidetik 99,98% <= 10 milidetik 99,99% <= 11 milidetik 100,00% <= 12 milidetik 100,00% <= 12 milidetik 15872.01 permintaan per detik Karena alat pengujian, versi perangkat lunak, parameter pengujian, dll., semuanya menghasilkan hasil yang berbeda, pengujian hanya untuk referensi, melalui pengujian sederhana dalam artikel ini, dapat dilihat bahwa Garnet memiliki latensi yang jauh lebih rendah daripada Redis.
(Akhir) |