Ich entwerfe einen Prototyp Echtzeitmonitor für die Verarbeitung ziemlich großer Mengen (> 30G/Tag) von Streaming-numerischen Daten. Ich würde das gerne in Clojure schreiben, da die Sprache gut zu der Art von "Observer + State Machine" -System passt, mit dem dies wahrscheinlich enden wird.Lamina vs Storm
Die zwei Hauptkandidaten, die ich für einen Rahmen gefunden habe, sind Lamina und Storm. Es gibt auch Riemann und Pulse, aber ersteres scheint eher eine vollständige Lösung als ein Framework zu sein, und ich möchte mich lieber nicht auf ein endgültiges Design festlegen; Das Repo von Pulse sieht ein wenig nicht gepflegt aus?
Was ich gerne wissen würde ist; Für welche Arten von Daten- und Arbeitsfluss sind diese beiden Projekte optimiert? Storm scheint reifer zu sein, aber Lamina scheint kompostierbarer und "Clojureic" (mein Hintergrund ist Python, also neige ich dazu, dies hoch zu bewerten).
Was ich aus der Lektüre online gefunden habe:
Sturm scheint Big Data (Strom) fokussiert zu sein, wobei der Kern gerade Java mit einem Clojure DSL ist. Es sieht so aus, als habe es für eine Anzahl von existierenden Datenquellen bereits vorbereitete Handler.
Lamina ist mehr eine leichte, wiederverwendbare Komponente, die die Clojure-Sache der Codierung zu Abstraktionen macht, was bedeutet, dass es reused as a base for other eventing systems sein kann. Die Datenquellen müssen in Code behandelt werden.
Beide haben einen nützlichen Satz von Aggregation/Splitting/Berechnung Bibliothek Funktionen aus der Box. Lamina Graphviz Integration ist eine nette Geste.
Es gibt eine Menge Sachen gebündelt, also werde ich es versuchen und sehen, ob es übertrieben ist. Lamina, von meinem Basteln her, scheint ein bisschen zu niedrig, obwohl sehr stromlinienförmig und elegant. Vielen Dank! – CLF