21 Punkte von xguru 2024-04-10 | 1 Kommentare | Auf WhatsApp teilen

Motivation

  • Unter den Go-Cache-Bibliotheken gibt es keine wirklich contention-free Lösung. Die meisten sind nur Maps mit Mutexen und einer Eviction-Policy.
  • Dadurch erreichen sie nicht die Geschwindigkeit von Caches in anderen Sprachen, etwa Caffeine.
  • Ristretto, der schnellste Cache von Dgraph Labs, war zwar bis zu 30 % schneller als die Konkurrenz (Otter ist noch deutlich schneller), hatte aber keine gute Hit Ratio.
  • In realen Anwendungen kann das problematisch sein, weil man nicht an die Leistungsgrenzen der Cache-Bibliothek stoßen möchte.
  • Daher sollte der schnellste und am einfachsten zu nutzende Cache entstehen.

Hauptfunktionen

  • Einfache API: Gewünschte Parameter im Builder setzen und direkt verwenden.
  • Automatische Konfiguration: Wird automatisch auf Basis der Parallelisierungsfähigkeit der Anwendung konfiguriert.
  • Generics: Jeder vergleichbare Typ kann sicher als Schlüssel verwendet werden, und jeder Typ kann als Wert genutzt werden.
  • TTL: Abgelaufene Werte werden automatisch aus dem Cache entfernt.
  • Kostenbasierte Eviction: Unterstützt Eviction auf Basis der Kosten jedes Eintrags.
  • Herausragender Durchsatz: Der derzeit schnellste Cache, der die Konkurrenzprodukte deutlich übertrifft (Theine, Ristretto, Bigcache, Fastcache).
  • Hervorragende Hit Ratio: Verwendet den neuen S3-FIFO-Algorithmus, der sehr gute Ergebnisse liefert.

1 Kommentare

 
xguru 2024-04-10

Der Name kam mir irgendwie bekannt vor, also habe ich nachgesehen, und es gab tatsächlich so etwas.
Otter: Ein multimodales Modell, bei dem sich Befehle im Kontext feinabstimmen lassen
Man sollte wohl besser damit aufhören, Dinge nach Tieren zu benennen. Wenn es nicht gerade etwas extrem Seltenes ist, gibt es die meisten Namen schon.

Die Einschätzung der KI-Analyse war auch ganz gut, daher füge ich sie noch hinzu.

Meinung von GN⁺

  • Diese Open-Source-Cache-Bibliothek dürfte für Go-Entwickler sehr nützlich sein. Vor allem für Services mit hohen Performance-Anforderungen kann sie eine Alternative sein, um die Leistungsgrenzen bestehender Cache-Bibliotheken zu überwinden.
  • Beeindruckend ist, dass auf Basis eines Papers ein Algorithmus angewendet wurde, der im Vergleich zu bestehenden Bibliotheken wettbewerbsfähige Performance erreicht. Vor dem Einsatz in realen Services sollte die Leistung jedoch durch verschiedene Benchmarks überprüft werden.
  • Sie wirkt auch in Bezug auf die Entwicklerfreundlichkeit stark, da sie mit einer einfachen API leicht zu nutzen ist und Generics in aktuellen Go-Versionen unterstützt.
  • Ähnliche Go-Cache-Bibliotheken sind unter anderem groupcache, fastcache, ristretto und freecache. Man sollte ihre Performance-Eigenschaften und die Benutzerfreundlichkeit gut miteinander vergleichen.
  • Nützlicher scheint sie eher für Services mit hohem Datenverkehr als für persönliche oder kleine Services zu sein. Man sollte gut überlegen, wie groß der Cache sein soll und wie der Eviction-Zyklus eingestellt wird. Außerdem ist Vorsicht geboten, da bei zu starker Abhängigkeit vom Cache Konsistenzprobleme entstehen können.