Hangfire mit mehreren Servern

Arbeite ich an einer Anwendung, bei der ich mehrere Server auf unterschiedlichen Rechnern zu tun, lange Vorgänge für mich. Es ist ein windows-Dienst läuft auf diesen Maschinen geschrieben, die mit hangfire/topshelf. Nur eine operation gleichzeitig ausgeführt werden pro Maschine. Zusätzlich möchte ich einige status-check und Reinigung jobs, regelmäßig auf jedem server, ich kann also nicht einfach Warteschlange als Arbeitsplätze.

Gibt es eine Möglichkeit, das zu tun, hangfire? Auch, gibt es eine Möglichkeit, senden Sie eine follow-up-job auf dem gleichen server wie einem früheren job?

ADD-ON: ich weiß, eine Möglichkeit wäre es, fügen Sie einen anderen hangfire Schicht: Stellen Sie die Dienste ein hangfire-client mit eigener DB und dienen sich selbst, und dann planen Sie wiederkehrende Aufgaben für Sie, aber das scheint furchtbar kompliziert – vor allem, wenn das skalieren und hinzufügen von Servern.

  • Hangfire implementiert eine Warteschlange, und es wird nur die Zuordnung eines server-pro Auftrag, so dass keine Notwendigkeit zu befürchten, dass. Es gibt jedoch keine Fähigkeit, eine Affinität zu einem bestimmten server, soweit ich weiß. Würden Sie koordinieren innerhalb Ihrer app, vielleicht mit Hilfe einer verteilten cache oder Schlüssel/Wert-Ebene.
  • Ich weiß, es ist nur ein server pro Auftrag. Ich muss es den anderen Weg herum, einen job pro server. Dass ich tun kann, mit der WorkerCount. Aber dann gibt es jobs, die ich will, um in regelmäßigen Abständen führen Sie auf jedem server, weil Sie nicht Aufräumen auf dem server …
InformationsquelleAutor EluciusFTW | 2016-09-23



3 Replies
  1. 0

    Wenn Ihre Aufgabe ist die Ausführung einiger geplanter task auf jedem server, ich denke, die beste option ist es selbst implementieren, Hangfire nicht unterstützen, Veranstaltungen Handhabung, nur command handling. Ich denke, dass Sie den Punkt erreicht, von Hangfire Möglichkeiten und wechseln zu müssen leistungsfähiger und Allgemeines Werkzeug.

    Für Veranstaltungen und deren Handhabung Sie können andere Systeme, zum Beispiel RabbitMQ. Sie nur angeben, Ereignis-generator und abonnieren Sie alle Ihre Maschinen für diese Veranstaltung.

    • Senden/Hören zu Veranstaltungen über das internet? Die Maschinen sind in einem lokalen Netzwerk!
    • Sie können überall sein. Konzept der Ereignisse und deren Handhabung ist implementiert in Kaninchen. Also, ja, Sie können Abonnements über das internet. Lesen Sie diese: rabbitmq.com/tutorials/tutorial-three-dotnet.html
    • Ich bin mir nicht sicher, ob ich implementieren möchten ein anderes externes tool im moment, aber danke für die Anregung! Wenn ich keinen Weg findet, mit hangfire, ich könnte gezwungen werden.
  2. 0

    Ich weiß, das ist ein bisschen spät, aber die Art, wie wir behandeln diese Art der Sache ist, nur um zu schreiben eine einfache Konsolenanwendung und planen Sie es mit dem Windows-Taskplaner.

  3. 0

    Wahrscheinlich haben Sie dieses Problem gelöst, indem jetzt, aber

    1 – one job pro server – wie Sie es haben – Arbeiter Graf – wahrscheinlich das beste, da kann man mehrere queues pro server und der Filter wird Ihnen nicht helfen, es.

    2 – sollte die Bereinigung nach jeder Verarbeitungs-job?
    wenn ja, können Sie das cleanup-job in Ihrem Prozess der job-Ausführung (ok, vielleicht nicht perfekt-design, aber es funktioniert gut) und der Zuweisung zu einer Warteschlange auf dem gleichen server, nur fügen Sie einige Logik in Filter, um sicherzustellen Verarbeitung job ist, gefolgt von einer Bereinigung job, und Sie sind sortiert.

    alternativ können Sie die Fortsetzung jobs (wie auf der Website https://www.hangfire.io/) – nicht verwendet haben, diese aber klingt wie es könnte den trick tun.

    wenn Sie nur wollen, um in regelmäßigen Abständen führen Sie den cleanup-code dann nur den job einplanen als wiederkehrende, auf allen Servern

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.