0

Ich bin Junior-Entwickler und wollte eine Frage zu Design/Architektur eines Job-Schedulers stellen.Wie erstellt man einen Job-Scheduler für viele Arten von Jobs?

Ich entwerfe die Architektur für einen Scheduler, der mehrere Aufgaben verwaltet. Es gibt mehrere Kategorien (über 70) zB Film, Einkaufen, Essen. Jede Kategorie hat drei oder mehr Aufgaben, die implementiert werden müssen. Also mein Scheduler muss Aufgaben für jede Kategorie bei Bedarf ausführen. Aufgaben für jede Kategorie sind unabhängig voneinander. So können Aufgaben für KategorieA parallel zu denen von KategorieB ausgeführt werden, abhängig vom Zeitplan.

Also habe ich zwei Arten von Design, die ich im Sinn habe, dies zu tun. Man wendet jede Kategorie als separaten Dienst an, um auf einer einzelnen Instanz zu laufen. Auf diese Weise ist es modular, aber das System wird zu viele Instanzen (über 70) verbrauchen, selbst wenn für jede Kategorie keine Aufgabe ausgeführt wird.

category1

  • task1
  • task2
  • task3

...

category2

  • task1
  • task2
  • task3

...

Kategorie3

  • task1
  • task2
  • task3

...

Die andere Idee, die ich habe, ist Kategorien nach jeder Aufgabe zu gruppieren. So wird jede Aufgabe selbst zu einem Modul und innerhalb jeder Aufgabe gibt es eine Sammlung von spezifischen Aufgaben, die zu verschiedenen Kategorien gehören.

task1

  • task1 zu category1 Zusammenhang
  • task1 im Zusammenhang mit category2
  • task1 zu Kategorie3 Zusammenhang

...

task2

  • task2 zu category1 Zusammenhang
  • task2 zu category2
  • Zusammenhang task2 im Zusammenhang mit Kategorie3

...

task3

  • task3 zu category1 Zusammenhang
  • task3 zu category2 Zusammenhang
  • task3 im Zusammenhang mit Kategorie3

Welches Sie denken, ist es ein besseres Design ist? Ich würde deine Einsicht darin lieben. Danke :)

+0

Ehrlich gesagt ist Jobplanung und -verwaltung ein weites Thema. Wenn es sich also nicht um ein lustiges Projekt handelt, würde ich eine der auf dem Markt verfügbaren Services/Lösungen verwenden, beide Open Source (wie http://www.quartz-scheduler.org/) und kommerziell (wie http://infinitedata.com/products/schedulein) –

Antwort

2

einen Job Scheduling muss diese grundlegenden Funktionalitäten

  1. Scheduling Job
  2. Unscheduling/Löschen von geplanten Auftrag
  3. Verarbeitung auf Priorität basiert haben (wird in langfristigen Nutzen sein), Vielleicht Sie können basierend auf den Kategorien, die Sie haben, priorisieren. Entdecken Sie redis hier, da es erstaunliche Fähigkeiten hat bestellt Save Set

Ich würde vorschlagen, den Job zu halten Warteschlangendienst und Auftragsbearbeitung Service (dh Arbeitnehmer) anders als dies die Anwendung aktiviert als Blackbox arbeiten

Verwandte Themen