2017-09-14 5 views
0

Ich möchte einen skalierbaren Zähler erstellen, den ich innerhalb Azure Funktionscode erhöhen kann. Diese Lösung scheint so zu sein:
http://blog.smarx.com/posts/architecting-scalable-counters-with-windows-azure
Allerdings wurde oben eine klassische Webserver-Architektur angenommen. Haben Sie Vorschläge, wie Sie das ID-Feld bei Verwendung von azure-Funktionen konstruieren können? Könnte die Aufruf-ID der Funktion verwenden(), aber das würde für jeden Funktionsaufruf eine Zählerzeile hinzufügen, die ziemlich schnell außer Kontrolle geraten würde.Wie man einen skalierbaren Zähler innerhalb der Azure-Funktionen erstellt

Antwort

0

InvocationId wird pro Funktionsinstanz sein. Azure Funktionen noch in einem Prozess ausgeführt, so kann man noch die Computernamen und Prozess-ID mit traditionellen Mitteln bekommen, so etwas wie:

var id = Environment.MachineName + System.Diagnostics.Process.GetCurrentProcess().Id; 

Die Herausforderung besteht darin, dass mit serverless, wir speziell auf abstraktes versuchen weg vom zugrunde liegenden Infrastruktur, sodass Instanzen im Laufe der Zeit möglicherweise auf vielen verschiedenen Prozessen ausgeführt werden können.

2

Sofern nicht aus rein akademischen Gründen, würde ich Hand-Crafting Distributed Counter In-Memory nicht stören.

Stattdessen würde ich etwas wie Redis und seine INCR command verwenden. Natürlich können Sie es von Ihrer Azure-Funktion aus aufrufen. Dies wird zu einer großen Anzahl ohne viel Aufwand skalieren.

Verwandte Themen