Heim > Artikel > Backend-Entwicklung > Wann sollten Sie watch.Interface, Cache.NewInformer oder Cache.NewSharedIndexInformer in Kubernetes verwenden?
watch.Interface vs. Cache.NewInformer vs. Cache.NewSharedIndexInformer
Bei der Überwachung von Ressourcen in Kubernetes und der Reaktion auf Änderungen haben Entwickler verschiedene Möglichkeiten welche Optionen ihnen zur Verfügung stehen. Es ist von entscheidender Bedeutung, die Unterschiede zwischen diesen Methoden zu verstehen.
watch.Interface
Das durch Methoden wie rest.Request.Watch() erhaltene watch.Interface stellt einen ResultChan bereit, der streamt Ereignisse (hinzugefügt/geändert/gelöscht) von Ressourcenänderungen. Es bietet eine Abstraktion auf niedriger Ebene und stellt nur den „Nachher“-Status der Ressource bereit.
cache.NewInformer
Mit der Funktion „cache.NewInformer“ können Sie a angeben ResourceEventHandler, der OnAdd()/OnUpdate()/OnDelete()-Aufrufe verarbeitet. Es enthält einen Mechanismus zum Empfangen sowohl des „Vorher“- als auch des „Nachher“-Status der Ressource. Intern nutzt NewInformer watch.Interface über NewListWatchFromClient.
cache.NewSharedInformer vs. cache.NewSharedIndexInformer
Diese Funktionen bieten höhere Abstraktionsebenen als NewInformer. Sie nutzen eine gemeinsame Verbindung zum API-Server und teilen Ressourcen unter den Informanten. Cache.NewSharedIndexInformer fügt zusätzlich eine Indizierung zum Datencache hinzu.
Empfehlung
Für die meisten Anwendungsfälle werden SharedInformers gegenüber Abstraktionen auf niedrigerer Ebene empfohlen. SharedInformer teilen Ressourcen und bieten eine höhere Abstraktionsebene, wodurch viele Aufgaben auf niedrigerer Ebene vereinfacht werden. Bei der Arbeit mit einem großen Datensatz werden SharedIndexInformers aufgrund ihrer Indizierungsfunktion bevorzugt.
Instanziieren Sie SharedInformers aus derselben SharedInformerFactory, um Ressourcen effizient zu teilen. Ein Beispiel ist unten dargestellt:
informerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30) podInformer := informerFactory.Core().V1().Pods() serviceInformer := informerFactory.Core().V1().Services() podInformer.Informer().AddEventHandler( // Add event handling ) // Add event handling for serviceInformer informerFactory.Start(wait.NeverStop) informerFactory.WaitForCacheSync(wait.NeverStop)
Das obige ist der detaillierte Inhalt vonWann sollten Sie watch.Interface, Cache.NewInformer oder Cache.NewSharedIndexInformer in Kubernetes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!