Es gibt alle Arten von Techniken für die Hochleistungstransaktionsverarbeitung, und die in Fowlers Artikel beschriebene ist nur eine von vielen, die derzeit auf dem neuesten Stand sind. Anstatt eine Reihe von Techniken aufzulisten, die auf die Situation eines Menschen anwendbar sind oder nicht, ist es meines Erachtens besser, die Grundprinzipien und die Art und Weise, wie LMAX eine große Anzahl von Techniken anspricht, zu diskutieren.
Für ein umfangreiches Transaktionsverarbeitungssystem möchten Sie so viel wie möglich tun:
Minimieren Sie den Zeitaufwand in den langsamsten Speicherebenen. Von der schnellsten zur langsamsten auf einem modernen Server haben Sie: CPU / L1 -> L2 -> L3 -> RAM -> Festplatte / LAN -> WAN. Der Sprung von der schnellsten modernen Magnetplatte zum langsamsten Arbeitsspeicher beträgt mehr als das 1000-fache für sequentiellen Zugriff. Zufallszugriff ist noch schlimmer.
Minimieren oder eliminieren Sie Wartezeiten . Dies bedeutet, dass Sie so wenig Status wie möglich freigeben und explizite Sperren nach Möglichkeit vermeiden , wenn der Status freigegeben werden muss .
Verteilen Sie die Arbeitslast. CPUs sind in den letzten Jahren nicht viel schneller geworden, aber sie sind kleiner geworden, und 8 Kerne sind auf einem Server ziemlich verbreitet. Darüber hinaus können Sie die Arbeit sogar auf mehrere Computer verteilen. Dies ist der Ansatz von Google. Das Tolle daran ist, dass es alles skaliert , einschließlich I / O.
Laut Fowler verfolgt LMAX bei jedem dieser Punkte den folgenden Ansatz:
Halten Sie alle Zustand in Erinnerung an allen Zeiten. Die meisten Datenbank-Engines tun dies ohnehin, wenn die gesamte Datenbank in den Arbeitsspeicher passt, aber sie möchten nichts dem Zufall überlassen, was auf einer Echtzeit-Handelsplattform verständlich ist. Um dies zu erreichen, ohne ein großes Risiko einzugehen, mussten sie eine Reihe leichter Backup- und Failover-Infrastrukturen aufbauen.
Verwenden Sie eine sperrfreie Warteschlange ("Disruptor") für den Stream von Eingabeereignissen. Im Gegensatz zu herkömmlichen dauerhaften Nachrichtenwarteschlangen, die definitiv nicht frei von Sperren sind und in der Regel schmerzhaft langsam verteilte Transaktionen beinhalten .
Nicht viel. LMAX wirft dieses unter den Bus auf der Grundlage, dass die Workloads voneinander abhängig sind. Das Ergebnis des einen ändert die Parameter für die anderen. Dies ist eine kritische Einschränkung, auf die Fowler ausdrücklich hinweist. Sie machen einige Verwendung von Parallelität , um Failover - Funktionen zur Verfügung zu stellen, aber alle der Business - Logik auf einem verarbeiteten einzigen Thread .
LMAX ist nicht der einzige Ansatz für hochskaliertes OLTP. Und obwohl es in seinem eigenen Recht ziemlich brillant, man nicht bleeding-edge - Techniken , um dieses Niveau der Leistung abziehen verwenden müssen.
Von allen oben genannten Prinzipien ist # 3 wahrscheinlich das wichtigste und effektivste, da Hardware ehrlich gesagt billig ist. Wenn Sie die Arbeitslast ordnungsgemäß auf ein halbes Dutzend Kerne und mehrere Dutzend Computer verteilen können, ist der Himmel die Grenze für konventionelle Parallel-Computing- Techniken. Sie wären überrascht, wie viel Durchsatz Sie mit nur ein paar Nachrichtenwarteschlangen und einem Round-Robin-Verteiler erzielen können. Es ist offensichtlich nicht so effizient wie LMAX - eigentlich nicht einmal in der Nähe -, aber Durchsatz, Latenz und Kosteneffizienz sind getrennte Aspekte, und hier geht es speziell um den Durchsatz.
Wenn Sie die gleichen speziellen Anforderungen wie LMAX haben, insbesondere einen geteilten Zustand, der einer geschäftlichen Realität entspricht, im Gegensatz zu einer voreiligen Designwahl, dann würde ich vorschlagen, ihre Komponente auszuprobieren, da ich nicht viel gesehen habe sonst passt das zu diesen anforderungen. Aber wenn wir nur über hohe Skalierbarkeit sprechen, dann möchte ich Sie dringend auffordern, mehr über verteilte Systeme zu forschen, da dies der kanonische Ansatz ist, den die meisten Organisationen heutzutage verwenden (Hadoop und verwandte Projekte, ESB und verwandte Architekturen, CQRS, auch Fowler) Erwähnungen und so weiter).
SSDs werden auch zum Game-Changer. wohl schon. Sie können nun einen permanenten Speicher mit ähnlichen Zugriffszeiten auf den Arbeitsspeicher haben, und obwohl SSDs der Server-Klasse immer noch schrecklich teuer sind, werden sie mit zunehmender Adoptionsrate im Preis sinken. Es wurde ausgiebig recherchiert und die Ergebnisse sind ziemlich umwerfend und werden mit der Zeit immer besser, so dass das gesamte Konzept "Alles im Gedächtnis behalten" viel weniger wichtig ist als früher. Daher würde ich versuchen, mich nach Möglichkeit auf die Nebenläufigkeit zu konzentrieren.