2016-12-22 3 views
1

Ich bin sehr neu in Azure Service Fabric. Von meiner Forschung bin ich ziemlich daran interessiert, es für ein spezifisches Optimierungsproblemszenario zu verwenden. Ich finde jedoch keine Detailinformationen zu MSDN, um meine Ergebnisse zu unterstützen.Azure Service Stoff Schauspieler für lange laufende Aufgaben

Meine Anforderung ist, dass ich eine Web-API habe, die eine Eingabe erhält und in eine Datenbank ausgegeben wird. Diese Eingabe wird verwendet, um einen Optimierungsalgorithmus auszuführen, der typischerweise ungefähr 3-5 Minuten dauert. Es kann mehrere Anfragen von Benutzern geben, die eventuell bearbeitet werden müssen.

Ich denke derzeit, eine neue ASF zuverlässige Akteure pro Optimierung Eingang ist eine gute Wahl. Mir ist jedoch nicht klar, wie ASF für solche Aufgaben funktioniert, die lange andauern und nicht sofort ablaufen.

Weitere Ich bin nicht sicher, wie meine Ressourcennutzung innerhalb des Clusters sein wird. Mein Endziel ist in der Lage, mindestens eine vordefinierte Menge an Optimierungsalgorithmus Aktoren oder statusless Dienste bei Bedarf parallel zu übermitteln.

Really schätzen Sie Ihre technischen Ratschläge in Bezug auf die Bedenken, die ich habe. Ist es Schauspieler oder statesless, die ich für dieses Szenario berücksichtigen sollte.

Antwort

2

Ich denke, was hier wesentlich ist, ist die Berechnungen im Hintergrund zu tun. Service-/Actor-Anrufer sollten nicht warten, während der Optimierungsalgorithmus ausgeführt wird.

Um dies zu erreichen, müssten Sie einen Befehl übernehmen, speichern Sie es irgendwo (eine Warteschlange würde gut tun), ein Token an den Aufrufer zurückgeben. Mit dem Token kann Status/Fortschritt abgefragt werden.

dies in einem Schauspieler tun erfordert:

  • die StateManager Mit einer Warteschlange zu halten, die Arbeitsplätze
  • Registrieren eines Timer hält die Arbeit zu verarbeiten.
  • Optional andere (extra) Schauspieler Aufruf über die Fortschritte

tun dies in einem Stateless Service melden erfordert:

  • Eine externe Warteschlange (die eine externe Abhängigkeit ist, dass die Auswirkungen Verfügbarkeit)
  • Optional ein externer Fortschrittsspeicher

dies in einer Stateful Service (zusätzliche Wahl) Dies erfordert:

  • die StateManager mit einem ReliableQueue zu halten.
  • regelmäßig diese Warteschlange für die Arbeit von RunAsync überprüfen.
  • Optional regelmäßig speichern Fortschritt in der StateManager.

Ich vermute, der Service-Typ, der am besten für dieses Szenario vorbereitet ist, ist der Stateful Service. Here's ein Stateful Service-Beispiel, das die Arbeit in eine Warteschlange stellt und verarbeitet.

+0

Danke für die Antwort. Angenommen, ich verwende einen zustandsbehafteten Dienst, der einen Befehl in einer zuverlässigen Warteschlange speichert. Ich überprüfe dann regelmäßig die Warteschlange, um ausstehende Befehle zu überprüfen. Entferne den ersten und bringe einen Staatenlosen oder Schauspieler zur Welt (nicht sicher, was am besten ist) und leite den Algorithmus ein. Könnten Sie mir vorschlagen, wie ich normalerweise überwachen würde, ob mein Algorithmus-Dienst vollständig ausgeführt wurde oder nicht? Sollte das eine Aufgabe des Algorithmus-Service oder des Master-State-Full-Service sein? Ich weiß immer noch nicht, wie ich es erreichen soll. – Praneeth

0

Ich denke, eine Kombination von Stateful und Staatenlos wird eine gute Lösung für Ihr Szenario sein. Verwenden Sie das Stateful, um die Anforderungen in eine Warteschlange zu stellen, und verwenden Sie Stateless, um die Anforderungen zu verarbeiten (zu algorithmisch). Der SF-Cluster erstellt bei Bedarf weitere Instanzen des zustandslosen Dienstes für andere Knoten im Cluster basierend auf der Auslastung. Der zustandsbehaftete Dienst wird Ihr dauerhafter Speicher sein, um die Anfragen (über die zuverlässige Warteschlange) und den Fortschritt (zuverlässige Wörterbücher) zu speichern. Der statusbehaftete Dienst verwaltet eine primäre Replik und zwei sekundäre Replikate im Cluster.

+0

Danke für die Antwort. Könnten Sie mich wissen lassen, warum Sie in diesem Fall SF Stareless Service über Schauspieler empfehlen? Auch "nehme an" ich habe einen 5-Knoten-Cluster und spawn 5 Inkremente des Algorithmus, der 100% CPU-intensiv ist, wie würde sich das Laichen einer anderen Instanz im Kontext von SF verhalten? – Praneeth

Verwandte Themen