21 poin oleh xguru 2024-04-10 | 1 komentar | Bagikan ke WhatsApp

Latar belakang pembuatan

  • Di antara pustaka cache Go, belum ada yang benar-benar bebas contention. Kebanyakan hanya berupa map dengan mutex dan kebijakan eviksi
  • Karena itu, performanya tidak mampu menyamai cache di bahasa lain (misalnya Caffeine)
  • Ristretto, cache tercepat dari Dgraph labs, hingga 30% lebih cepat daripada pesaingnya (Otter jauh lebih cepat), tetapi hit ratio-nya kurang baik
  • Dalam aplikasi nyata, hal ini bisa menjadi masalah karena kita tidak ingin terbentur pada performa pustaka cache
  • Hasilnya, mereka ingin membuat cache yang paling cepat dan paling mudah digunakan

Fitur utama

  • API sederhana: cukup atur parameter yang diinginkan di Builder lalu gunakan
  • Konfigurasi otomatis: dikonfigurasi otomatis berdasarkan kemampuan pemrosesan paralel aplikasi
  • Generics: semua tipe yang comparable dapat digunakan dengan aman sebagai key, dan semua tipe dapat digunakan sebagai value
  • TTL: nilai yang kedaluwarsa akan otomatis dihapus dari cache
  • Eviksi berbasis biaya: mendukung eviksi berdasarkan biaya tiap item
  • Throughput sangat tinggi: saat ini merupakan pustaka cache tercepat yang jauh melampaui produk pesaing (Theine, Ristretto, Bigcache, Fastcache)
  • Hit ratio yang sangat baik: menggunakan algoritma S3-FIFO baru yang menunjukkan hasil unggul

1 komentar

 
xguru 2024-04-10

Namanya terasa agak familier, jadi saya cari-cari dan ternyata ada yang seperti ini.
Otter: model multimodal yang dapat melakukan tuning perintah dalam konteks
Sepertinya sebaiknya mulai sekarang jangan membuat sesuatu dengan nama hewan. Kecuali sangat langka, kebanyakan sudah ada.

Pendapat analisis AI-nya juga cukup bagus, jadi saya tambahkan.

Opini GN⁺

  • Library cache open source ini tampaknya akan sangat berguna bagi developer Go. Terutama untuk layanan yang membutuhkan performa tinggi, ini bisa menjadi alternatif untuk mengatasi batas performa library cache yang sudah ada.
  • Cukup mengesankan bahwa library ini menerapkan algoritme berdasarkan paper dan berhasil mencapai performa yang kompetitif dibanding library yang ada. Namun, sebelum diterapkan ke layanan nyata, performanya perlu diverifikasi lewat berbagai benchmark.
  • API-nya sederhana sehingga mudah digunakan, dan juga mendukung generics di versi Go terbaru, jadi kemudahan pengembangannya juga terlihat tinggi.
  • Library cache Go yang mirip antara lain groupcache, fastcache, ristretto, dan freecache. Sepertinya perlu membandingkan dengan baik karakteristik performa dan kemudahan penggunaannya.
  • Dibanding untuk layanan pribadi/skala kecil, library ini tampaknya lebih berguna untuk layanan yang menangani trafik besar. Perlu dipikirkan matang-matang soal ukuran cache yang akan ditetapkan dan seberapa sering eviction dilakukan. Selain itu, jika terlalu bergantung pada cache, masalah konsistensi bisa muncul, jadi perlu berhati-hati.