Wednesday 5 April 2017

Zeromq Handelssystem


WARNUNG: Dieser Text ist veraltet und bezieht sich auf eine alte Version von MQ. Es bleibt hier für historisches Interesse. NICHT VERWENDEN DIESE LERNEN MQ. Einleitung Da MQ primär für das Aktienhandelsgeschäft bestimmt ist, hat weve eine Beispielanwendung erstellt, die die interne Arbeit einer Börse simuliert. Der Hauptfokus dieses Beispiels ist, zu zeigen, wie MQ perfroms in real-world-like Szenario. Das folgende Diagramm zeigt die Architektur der Anwendung: Die Gateway-Komponente sollte Aufträge von Händlern über das Netzwerk (unter Verwendung des FIX-Protokolls oder eines spezifischen proprietären Protokolls) erhalten und Antworten an die Händler senden. Da die beispielhafte Anwendung jedoch beabsichtigt ist, zu zeigen, was die möglichen Durchsatzverteilungen eines solchen Systems ist, erzeugt das Gateway zufällige Aufträge, anstatt sie von den Händlern zu empfangen. Beim Start des Gateways können Sie die Anzahl der zu generierenden Aufträge pro Sekunde angeben. Zusammenpassende Maßeinheit enthält den Kern der Börsegeschäftslogik. Es passt zueinander und produziert Trades und Zitate. Unsere Implementierung ist minimalistisch, basierend auf dem Timeprice Matching Algorithmus (implementieren pro rata Algorithmus bleibt als Übung für den Leser). Dennoch hat der Algorithmus die Komplexität von O (1) und ist stark optimiert. Weve gesehen es Prozess etwa 18 Millionen Bestellungen pro Sekunde. Die Statistikkomponente empfängt Leistungsinformationen, die sowohl vom Gateway als auch von der entsprechenden Engine generiert werden, und zeigt sie in einer von Menschen lesbaren Form an. Um das Lesen von Statistiken noch komfortabler zu machen, ist ein einfaches grafisches Werkzeug im Beispiel enthalten. Leistung Der folgende Screenshot zeigt Beispiele für die Leistung von zwei High-End-8-Core (3GHz) - Kästen mit jeweils 2 dedizierten 1GbE-NICs. Denken Sie daran, dass, wenn Sie es auf der underspecified andor untuned Hardware es kann immer noch ziemlich schnell, aber youll Erfahrung unteren Nachrichtendurchsatz und mehr Latenz Spitzen. Wenn Sie die Nachrichtenrate zu hoch eingestellt haben, können Sie sogar einen Gateway-Fehler erleben, da die Tickerkomponente, die verwendet wird, um Aufträge mit der stabilen Rate zu senden, nicht in der Lage ist, Schritt zu halten. Die gelbe Linie zeigt Roundtrip-Latenz, d. H., Wie lange es dauert, den Auftrag vom Gateway zur passenden Engine weiterzuleiten, sie zu verarbeiten und die Auftragsbestätigung an das Gateway zurückzusenden. In unserer Test-Latenz schwankten etwa 200 Mikrosekunden. Die untere Durchsatzlinie (900.000 messagessecond) ist die Rate der Aufträge, die vom Gateway zum passenden Motor geführt werden. Die obere Durchsatzlinie (2.300.000 messagessecond) ist die Rate der Auftragsbestätigungen, der Handel und der Aktienzitate, die vom übereinstimmenden Motor zum Gateway geführt werden. Insgesamt sahen wir etwa 3.200.000 Nachrichten pro Sekunde durch das Netzwerk. Building it Um das Beispiel zu nutzen, verwenden Sie --with-exchange-Option mit configure: Um das Grafik-Tool ausführen zu können, müssen Sie Perl-Tk installiert haben (verpackt als perl-tk auf Debian) sowie Tk :: Graph aus CPAN . Ausführen Zum Beispiel haben wir folgende Netzwerk-Topologie, um das Beispiel auf. Es sind 3 Boxen (test01, test02 und test03) mit entsprechenden IP-Adressen von 192.168.0.1, 192.168.0.2 an das geschaltete Netzwerk angeschlossen. Die Boxen repräsentieren einzelne Maschinen, Pfeile repräsentieren physikalische Kabel zwischen einzelnen Netzwerkschnittstellen Und 192.168.0.3. Darüber hinaus gibt es zwei direkte Verbindungen zwischen test02 und test03. Eine Verbindung verbindet die Netzwerkschnittstelle 10.0.0.1 auf test02 mit der Netzwerkschnittstelle 10.0.0.2 auf test03. Andere verbinden die Netzwerkschnittstelle 10.1.0.1 auf test02 mit der Netzwerkschnittstelle 10.1.0.2 auf test03. Gut laufen zmqserver und statistische Komponente auf test01, passender Motor auf test02 und Gateway auf test03. Verwenden Sie eine der direkten Verbindungen zwischen test02 und test03, um Befehle von Gateway zu passendem Motor zu übergeben und die andere, Bestätigungen, Trades und Anführungszeichen von passenden Engine zu Gateway zu übergeben. Zuerst starten Sie zmqserver auf test01: Danach starten Sie die statistische Komponente auf test01. Die Parameter sind das Feld, in dem zmqserver ausgeführt wird, und die Netzwerkschnittstelle, um statistische Informationen zu erhalten: Alternativ können Sie die statistischen Daten an das Grafik-Tool übergeben: Starten Sie nun die passende Engine. Versorgung zmqserver s Host-Name, Schnittstelle zum Empfangen von Nachrichten auf und Schnittstelle zum Senden von Nachrichten auf als Parameter: Schließlich führen Sie das Gateway. Lieferort von zmqserver und die Anzahl der zu sendenden Aufträge pro Sekunde als Parameter: Fazit Das Exchange-Beispiel ermöglicht Ihnen, die Leistung von MQs im realen Szenario zu testen. Allerdings ist eine stabile Latenz bei hohen Durchsätzen eine heikle Angelegenheit, die von der Gesamtabstimmung Ihrer Hardware, Betriebssystems, Ausführungsumgebung usw. abhängt. Wenn Sie ernsthaft über Leistungstests sind, kontaktieren Sie uns, um Ihnen bei der Aufgabe zu helfen. Geschrieben: 1218019882Y. m.e Revised: 1286694428Y. m.e Wenn Sie diese Seite nützlich gefunden, bitte bewerten Sie es, so dass andere es finden. Einführung Der Finanzsektor lebt von Messaging-Technologie. Auf quotWall Streetquot (das globale Aktienhandelsgeschäft), Kapazität und Latenz sind alles. Die derzeitige Infrastruktur, die stark darauf abgestimmt ist, Millionen-Nachrichten pro Sekunde zu erhalten, und Latenzen von unter Millisekunden, scheitert immer noch, wenn der Handel hektisch wird. Riesige Geldbeträge hängen davon ab, die ersten, die Daten zu erhalten, und die erste zu handeln. Das Aktienhandelsgeschäft entwickelt sich drastisch. Penny-Pricing erzeugt mehr Daten. Neue US - und EU-Vorschriften erhöhen die Zahl der an den Finanzmärkten beteiligten Parteien. Neue algorithmische Handelstechnologien erhöhen die Nachfrage nach aktuellen Bestandsdaten und der Anzahl der Bestellungen. Während die vorhandene Infrastruktur die Kapazität oder Geschwindigkeit pro 18 Monate verdoppeln kann, wird der Verkehr in den nächsten drei Jahren um das 20-fache steigen. Gleichzeitig steigen die Preise für Messaging-Technologie stetig. Messaging Middleware - Software, die Anwendungen oder Stücke von Anwendungen in einem verallgemeinerten Plug-and-Play-Mode verbindet - ist eine der letzten Big-Ticket-Artikel noch nicht in eine Ware durch das Internet-Zeitalter der billigen Software verwandelt. Mainframes haben viel von ihrer Macht von clever Messaging, Transaktionsverarbeitung Systeme wie IBM CICS. Aber auch heute noch ist die 80er-Standard-Middleware - im Gegensatz zu Datenbanken, Betriebssystemen, Compilern, Editoren, GUIs usw. - für gewöhnliche Entwickler noch nicht weit. Die Software-Industrie produziert verschiedene Business-Anwendungen und Stücke von Anwendungen, und die Werkzeuge, um diese, in immer größeren Mengen und immer niedrigeren Preisen, aber die Messaging-Bit ist noch fehlen. Das Fehlen eines Wegs, diese Anwendungen zu verbinden, ist nicht nur ein unbesiegtes Terrain, sondern auch ein gravierender Engpass für das Wachstum, vor allem für neue Start-ups, die theoretisch aggressiv mit größeren, älteren Firmen konkurrieren könnten, wenn sie in der Lage waren, billig zu kombinieren Vorhandene Softwareblöcke. Diese Frustration ist in vielen Märkten sichtbar und hat zu dem Wachstum von Messaging-over-HTTP (SOAP) und anderen Kompromissen geführt. Architekturen wie SOAP funktionieren, aber sie lösen nicht die beiden Hauptprobleme einer unternehmenseigenen Nachrichtenübermittlung, nämlich Routing und Warteschlangen. Unternehmen, die solche Technologien einsetzen, können nicht maßstabsgerecht konkurrieren und können nicht in wirklich großen Märkten konkurrieren, es sei denn, sie schreiben ihre eigene Messaging-Software oder kaufen ein kommerzielles Produkt. Verschiedene andere Standardisierungsversuche wurden unternommen, um den Markt zu konstruieren: CORBA, JMS und in letzter Zeit AMQP, wobei CORBA aufgrund der RPC-Metapher nicht erfolgreich war, die den Bedürfnissen der Finanzmärkte nicht gerecht wird und JMS in der Java-Welt erfolgreich ist Ein großes Unbekanntes. Die steigende Nachfrage und der Mangel an echten Wettbewerb zeigt in den Abschlüssen der High-End-Messaging-Anbieter wie Tibco Software Inc: quotTotal Umsatz im ersten Quartal des Geschäftsjahres 2007 gegenüber dem gleichen Quartal des Vorjahres um 11,0 Millionen oder 10 erhöht Der Anstieg betrug einen Anstieg der Service - und Wartungserlöse um 7,0 Mio. oder 11 sowie einen Anstieg der Lizenzerlöse um 4,0 Mio. oder 8 Prozent. 2 Tibco-Kunden berichten, dass die Lizenzgebühren im Jahresvergleich zunehmen. Der Markt Der globale Aktienhandelsmarkt ist der Hauptschwerpunkt des MQ, denn der Schwerpunkt liegt auf Messaging, die meisten Ressourcen werden akkumuliert und die meisten Kantenschneidtechnologien werden eingesetzt. Das Hauptmerkmal des Marktes ist der Hunger nach schneller Lieferung. Jede Millisekunde der Aktienkurs oder der Trade-Order ist schneller als die konkurrierende eine direkte finanziellen Gewinn, so dass die beteiligten Unternehmen sind natürlich gespannt auf jeden Vorteil, den sie bekommen können. Derzeit ist im Ladengeschäft die Verkehrsbelastung so hoch und die Latenz so kritisch, dass die Middleware stark optimiert werden muss. Latenzen werden in Mikrosekunden und Durchsätzen in Millionen von Nachrichten pro Sekunde angegeben8230 Trotzdem hat der Handel oft Probleme, wenn die Nachrichtenbelastungsspitzen auftreten. Latenz kann plötzlich auf Sekunden (oder sogar zehn Sekunden) und riesige Mengen an Geld verloren gehen, da Trades verzögert oder scheitern. 3 Die Situation verschlechtert sich aus mehreren Gründen: Im Jahr 2001 wechselten die NYSE und die NASDAQ von der Preisbildung ihrer Aktien in 116. Dollar-Einheiten zu Single-Cent-Einheiten. Diese so genannte quotpenny Pricingquot bedeutet Börsen produzieren mehr Daten und diese Daten müssen über Netzwerke verschoben werden. Sowohl in den USA als auch in der EU zwingen Regulierungsbehörden die Finanzmärkte, im Interesse der Verbraucher offener und aggressiver zu konkurrieren. Beispielsweise erlauben US-amerikanische Börsenaufsichtsbehörden, neue Gesellschaften als Vermittler im Aktienhandelssektor zu handeln, während die EU-Märkte für Finanzinstrumente (MiFID) 4 in den EU - NMS 5. Viele neue und aggressive Unternehmen sind auf dem Markt, vor allem Gebäude oder mit algorithmischen Handelsplattformen. Algorithmischen Handel führt eine große Menge von geringvolumigen Aufträgen im Gegensatz zu kleinen Menge von hohen Volumen Aufträge von traditionellen menschlichen Händlern durchgeführt. So haben wir mehr Datenströme, mehr Teilnehmer, die drängen, neue Geschäftsmodelle zu entwickeln, die darauf angewiesen sind, diese Daten schnell zu ermitteln, zeitweilige Marktanomalien zu erkennen und darauf zu reagieren (mit Trades) vor ihren Mitbewerbern. Ein flexibleres Regulierungsumfeld eröffnet die bisher geschützten Märkte für einen neuen Wettbewerb. Insgesamt sehen wir ein Wettrüsten für Bandbreite und Latenz, in dem bessere Technik direkt in mehr Gewinn umsetzt. 6 Der Meldungsverkehr wird voraussichtlich in naher Zukunft deutlich anwachsen - in den nächsten drei Jahren haben wir bis zu 30 Mal gezählt - und bestehende Systeme können die Kapazität alle 18 Monate verdoppeln. Es gibt viele Versuche, dieses entstehende Problem zu lösen. Die drastischsten Verbesserungen in der Leistung kommen vom Ersetzen des klassischen zentralen Brokers durch eine Peer-to-Peer-Architektur, in der Nachrichten direkt über das Netzwerk ohne zusätzliche Hops fließen können. Nicht alle Messaging-Systeme können ihre Architektur auf diese Weise anpassen. Abgesehen von der Architektur befindet sich der offensichtliche Ort, um Messaging zu optimieren, in dem Quotstackquot, d. h. den Schichten, die das Anwendungsprogramm von dem physikalischen Netzwerk trennen. Die Software selbst ist in den meisten Fällen bereits stark optimiert, so dass Anbieter sich auf andere Optionen verlagern, wie zum Beispiel: Optimierung der Netzwerkarchitektur durch Konnektivitätsanbieter, um bessere Latenzzeiten zu erzielen, einschließlich der verschobenen Nachrichtenkonsumenten (vernetzt) ​​an die Nachrichtenproduzenten 7. 8 . (FIXFAST 10) Bereitstellung von kompletten Hardware-Lösungen (Tervela, Exegy, etc.) Austausch der physischen Transportschicht (Infiniband 11. 10GB Ethernet ) Optimierung der vorhandenen Netzwerkhardware. TCP-Offload-Engines, Intels IOAT-Technologie 12. usw. Ändern des Betriebssystems, um die Nachrichten in Echtzeit zu bearbeiten. Verschiedene Echtzeit-Betriebssysteme wie Novells SLERT 13 Ändern des Betriebssystems für effizientere Messaging-Stacks: Asynchrones IO, SDP, verschiedene Null-Copy-Techniken etc. Mit Multicast zur Verteilung von Aktienkursen auf den Clients LAN Neben diesen Optimierungen, Auf einzelne Aspekte des Messaging - Stacks oder der Architektur, sehen wir auch Versuche, die das Problem insgesamt betrachten: Intels Low Latency Lab 14 (STAC) 15 Verschiedene Messverstärkerüberwachungslösungen (Endace etc.) Hochoptimierte Produkte mit Umfangreiche Hardware-Unterstützung werden sehr teuer. Nur die größten Handelsfirmen können die gesamte Produktpalette leisten und auch für diese Unternehmen bleiben die Kosten weiterhin anhaltend. Für die kleineren Firmen sind viele der Lösungen einfach keine Option. Chancen In diesem Abschnitt betrachten wir die Chancen für neue hochperformante Messaging-Produkte wie die, die wir bauen. High-Performance-Take-out Das erste und offensichtlichste Ziel ist jedes Unternehmen mit High-End-kommerzielle Middleware für Aktienhandel, wo wir ein billigeres Äquivalent zur Verfügung stellen können. Dieser Markt ist kostensensibel und in unserer Erfahrung ist er bereit, Veränderungen und Risiken aufzunehmen, um einen überzeugenden Preis und einen Leistungsvorteil gegenüber seinen Mitbewerbern zu erzielen. Außerdem gibt es viele Firmen, die sich diese Produkte nicht leisten können, würden sie aber nutzen, wenn die Kosten niedriger sind. Zipfs Gesetz (in der Regel für die Sprache, sondern auch für Business Größen) schlägt vor, dass die Zahl der Unternehmen und ihre Größe folgt einem umgekehrten Leistungsverhältnis, so dass ein Produkt zu 20 der Preis der High-Cost-Marktführer sollte einen Markt fünf Mal öffnen Wie groß. (In der Tat ist es wahrscheinlich nicht dieses große, weil kleinere Unternehmen kaufen oder mieten Handelsplattformen anstatt zu versuchen, ihre eigenen zu bauen.) Trading-Plattformen Trading-Plattformen sind Software-Anwendungen, die Handelsunternehmen kaufen können, fertig, anstatt bauen sich mit Messaging-Middleware . Angesichts der Nachfrage nach billiger, schneller Handel, gibt es einen großen Markt für diese Plattformen. Offensichtlich ist eine Firma, die eine Handelsplattform aufbaut, empfindlich für die Kosten der Messaging-Nutzung und diese Unternehmen bieten einen Markt für unsere geplanten Produkte. Investmentbanken Investmentbanken bauen ihre eigenen Handelssysteme und haben (aus unserer begrenzten Erfahrung) die Kontrolle über die eingesetzte Technologie. Normenbasierte Systeme sind hier sehr attraktiv. Die Berechnung ist, dass eine Standard-Technologie ist einfacher zu kontrollieren, und wird von einem größeren Markt von billigeren Experten bedient. Jede AMQP-Lösung hat sofortige Anziehung. Die Kosten sind immer ein Treiber, aber für Unternehmen, die eine signifikante Entwicklung rund um das Messaging zu tun, ist die Verringerung der Nebenkosten (wie die Anzahl und Kosten der hauseigenen Berater) ein wichtiger Aspekt. Es wird deutlich, warum JPMorganChase motiviert war, in den AMQP-Prozess zu investieren und zu investieren, wobei damals sogar erhebliche Risiken eingetreten waren: AMQP ermöglicht sehr hohe Einsparungen bei den IT-Ausgaben, für Messaging-Lizenzen, für die benutzerdefinierte Entwicklung, die operative Steuerung und so weiter. Wir können einen viel niedrigeren Risiko Vorschlag für andere Investmentbanken liefern, aber mit den gleichen Arten von Leistungen. Datenkonsolidierer Die Börsenwelt verbindet viele Börsen (NASDAQ, NYSE, etc.) mit vielen Kunden. Große Klienten bilden unterschiedliche Verbindungen zu jedem Austausch, aber die meisten arbeiten über Datenkonsolidierer, Firmen wie Reuters, die einheitliche Ströme von vielen Quellen zur Verfügung stellen. Heute Konsolidierer laufen hochgestimmte benutzerdefinierte Messaging-Software, ist es nicht standard-basiert, und hat wenig Spielraum für immer billiger und schneller. Es kann schneller, aber nur zu hohen Kosten, die diejenigen Unternehmen, die mit kundenspezifischen Messaging-Bestrafungen bestraft, und gibt einen Vorteil für die Unternehmen mit Standard-basierte Messaging, die die Kosten verbreitet und nutzt weit mehr Arbeit an Leistung bestraft. Es gibt eine definitive Gelegenheit für die Öffnung dieses Marktes und ermöglicht es neuen Firmen, als Datenkonsolidierer zu konkurrieren, indem sie unsere Hochleistungsprodukte verwenden, um Anführungszeichen zu den Kunden zu tragen. Neue US-Vorschriften öffnen diesen Markt zu echtem Wettbewerb. Die Börsen (Börsen, Devisen, Rohstoffe usw.) sind stark von der steigenden Nachfrage nach ihren Dienstleistungen betroffen. Es scheint unvermeidlich, dass Normen an den Kanten langsam in die Mitte eindringen, und wir sollten in der Lage sein, mit Produktangeboten zu folgen. Darüber hinaus entstehen neue Handelstypen (ATSs, MTFs und Dark Pools 16), die nach und nach noch mehr Marktanteile aus den traditionellen Börsen ziehen. Da dieser Trend recht neu ist und immer noch an Dynamik gewinnt, erwarten wir eine steigende Nachfrage nach High-End-Messaging-Systemen auf diesem Markt. Den Wert auf unterschiedliche Märkte bringen Eines der Ziele von MQ ist die Nutzung von Geld, Ressourcen und Erfahrungen, die während des Rüstungsmanagements mit niedrigem Latenzaufkommen im Aktienhandelsgeschäft akkumuliert wurden, um eine kostenlose Highend-Allround-Messaging-Lösung für den Rest der IT-Branche zu liefern. Einige der Bereiche, in denen MQ kann sich als nützlich erweisen. Business-und institutionelle Messaging Senden von Zahlungen, Business-to-Business-Kommunikation, die Weitergabe von Dokumenten innerhalb staatlicher Organisationen etc. ist der primäre Markt, um neben dem Aktienhandel konzentrieren. Der Grund dafür ist, dass dies der Bereich, in dem Messaging traditionell verwendet wird, mit vielen erfahrenen IT-Personal bewusst Messaging und Verwendung für eine lange Zeit. Es sollte auch berücksichtigt werden, dass auch Anwendungen, die nicht verwenden Messaging ordnungsgemäß noch senden Nachrichten auf verschiedene Weise. Betrachten Sie eine Anwendung, die sich an Ort A befindet, schreiben Sie einen Datensatz an den entfernten Datenbankserver und einen anderen an der Stelle B, der den Datensatz liest. Tatsächlich gab es eine Nachricht, die von A nach B gesendet wurde, obwohl der Programmierer sich dessen nicht bewusst war. Auch Inter-Prozess-und Inter-Thread-Kommunikation kann als Messaging. Das Synchronisieren verschiedener Anwendungen durch das Kopieren von Dateien an entfernte Ziele einmal pro Tag kann auch als Messaging betrachtet werden (obwohl es eine spektakulär niedrige Latenz ist). Grundsätzlich braucht jede Anwendung für den Finanz - oder institutionellen Sektor eine Art von Messaging und die Kosten der Implementierung variieren zwischen 10 und 30 Prozent der gesamten Projektkosten, so dass die Verwendung einer bestehenden standardbasierten Middleware-Implementierung eine ziemlich gute Investition zu sein scheint. Obwohl niedrige Latenzzeiten keine zentrale Anforderung in diesem Bereich darstellen, erwarten wir, dass die wachsenden Transaktionsraten (Regelungen wie EUs SEPA 17 und Standardisierungsbemühungen wie TWIST 18) die Finanzinstitute langsam dazu zwingen werden, leistungsstarke Messaging-Lösungen einzuführen, wodurch die derzeitigen kleinen Unternehmen zunehmen Scheibe des Messaging-Marktes, der von leistungsstarken Lösungen angesprochen wird, wird stetig wachsen, bis er schließlich 100 erreicht. Embedded-Systeme Embedded-Systeme haben oft Echtzeit-Anforderungen ähnlich denen im Aktienhandel Geschäft gesehen. Betrachten wir zum Beispiel eine Anlage, die einen kritischen Wert in einem technologischen Prozess misst. Die Daten müssen innerhalb von 1160ms an die Einheit gesendet werden, die den Prozess steuert. Andernfalls wird der gesamte Prozess verworfen. Eingebettete Systeme benötigen normalerweise nicht den Durchsatz, der von Aktienhandelstacks zur Verfügung gestellt wird. Wenn jedoch die Latenzzeit, die Zuverlässigkeit und die deterministischen Lieferzeiten garantiert sind, können sie davon profitieren, obwohl sie nicht die gesamte verfügbare Bandbreitenkapazität nutzen. Multimedia Gleiche Bemerkungen über Echtzeitanforderungen gelten für Multimedia (Streaming von Audio und Video, Telekonferenzen usw.). Im Gegensatz zu eingebetteten Systemen ist die Latenz nicht so entscheidend, sondern die deterministische Lieferzeit und der hohe Durchsatz. In Zukunft können wir herausfinden, dass Lot-of-Small-Nachrichten-Modell von Aktien-Trading-Anwendungen ist nicht kompatibel mit Stream-basierte Multimedia-Ansatz. Jedoch glauben wir nicht, dass dies der Fall ist. Um zu testen, die Hypothese, weve gebaut Proof-of-Konzept Telekonferenz-Anwendung über AMQP und weve gesehen es reibungslos. Grid-Computing Nach fast den gleichen Anforderungen wie Aktienhandel, sind Grid-Systeme natürliche Gebiet zu beschäftigen MQ-Stack. Grids werden in den Finanzwerten 19 und - nicht überraschend - im Aktienhandel selbst verwendet, was eine Lösung für rechenaufwändige Probleme wie Risikomanagement und algorithmisches Handel bietet. Die latenzarme Blase Der Markt für Lösungen mit geringer Latenz ist heute sehr lebendig. Jedoch haben einige das Gefühl, dass der Wert des Marktes überschätzt wird und dass Witterungsverhältnisse mit geringer Latenz in der Folge zu einem Platzen der Blase führen werden, ähnlich dem Dotcom-Crash der frühen 2000er Jahre. Lets untersuchen mögliche Ursachen der Marktzusammenbruch: Es gibt Gesetze der Physik, die untere Grenze auf die Latenz. Insbesondere kann die Lichtgeschwindigkeit nicht überschritten werden, und sobald das Messaging auf diese Grenze trifft, wird es nicht viel Raum für den Wettbewerb geben und das Rennen mit geringer Latenzzeit wird zu seinem Ende kommen. Die Kosten für schnelles Messaging wachsen ständig. Sobald wir den Punkt, wo die Verbesserung der Latenz erfordert Investitionen übertrifft die Gewinne, die es möglicherweise geben kann, wird der Fluss des Geldes in den Markt zu beenden. Unzumutbare Ausgaben für Lösungen mit geringer Latenz können zu einer Hysterie führen, wenn der wachsende Markt mit geringer Latenzzeit schrumpft. Hysterie kann den Markt sogar unter seinen realen Wert sinken lassen. Unsere Ansicht der Probleme oben ist folgend: Geschwindigkeit des Lichtes ist sicher eine letzte Barriere, aber, wie mit Mikroprozessoren gesehen werden kann, werden Barrieren gesehen, wie letztlich ziemlich anfällig sind, immer und immer wieder gekreuzt zu werden. Im Messaging-Geschäft sehen wir beispielsweise aufkommende Proximity-Lösungen (Behandlungsgeschwindigkeit des leichten Problems, indem interdependent-Anwendungen physisch nahe beieinander liegen) oder der Trend zur Optimierung des Software-Teils des Messaging-Stapels, wodurch die Endpunkt-Latenzzeit und nicht die Latenzzeit auf dem Draht reduziert wird . In der Tat, glauben wir nicht, es gibt keine echten undurchdringlichen Barrieren zu stoppen Low-Latenz Rennen zumindest in den nächsten paar Jahren. Auch wenn die Kostensicherheit des Meldungsverkehrs mit geringer Latenz kontinuierlich zunimmt, ist zu berücksichtigen, dass der Technologiepreis - Hardware und Software - gleichzeitig stetig sinkt. Was kostet 100 im vergangenen Jahr, kostet 50 heute. Auch in einem stabilen, nicht expandierenden Markt, wo die Ausgaben für IT konstant bleiben, wird es eine Nachfrage nach neuen Lösungen geben, um mit neuen Technologien Schritt zu halten. Hysterie kann jederzeit und theres keine Weise, es vollständig zu verhindern geschehen. Allerdings, da Aktienhandel Messaging ist in einer Weise eine Welt für sich selbst, erwarten wir Hysterie auf diesen turbulenten kleinen Markt beschränkt werden, die den Rest der Messaging-Markt intakt. So werden die wichtigsten Opfer die Unternehmen, die spezialisierte Aktien-Trading-Lösungen anstatt Allzweck-Messaging bieten. Speziell MQ-Projekt, durch die Nutzung der Ressourcen in Aktienhandel-fokussierten IT-Markt akkumuliert, um Allzweck-Messaging-Lösung entwickeln können überleben Marktzusammenbruch, indem sie auf ihre Präsenz in verschiedenen Sektoren der Messaging-Markt. Fazit Das Hauptaugenmerk der MQ beginnt mit dem Aktienhandel, da dieser Markt eine klar definierte und wachsende Nachfrage nach High-End-Lösungen hat und die Optionen für Kooperationen und Return on Investment reichlich vorhanden sind. Allerdings öffnet der Bau eines kostengünstigen, standardbasierten Messaging-Systems, das mit den Besten der Welt konkurrieren kann, Türen in viele andere Domänen. Kommentare: 0Distributed Messaging mit ZeroMQ Ein verteiltes System ist eine, in der der Ausfall eines Computers, den Sie didn8217t sogar wissen existiert, Ihren eigenen Computer unbrauchbar machen kann. - Leslie Lamport Mit der erhöhten Prävalenz und Zugänglichkeit von Cloud Computing, verteilte Systeme Architektur hat weit mehr monolithische Konstrukte ersetzt. Die Implikation der Nutzung einer Service-orientierten Architektur ist natürlich, dass Sie jetzt mit einer Vielzahl von Schwierigkeiten, die bisher noch nie existiert, wie Fehlertoleranz, Verfügbarkeit und horizontale Skalierung beschäftigen. Eine weitere interessante Schicht der Komplexität ist die Bereitstellung von Konsistenz über Knoten, die selbst ein Problem mit endlosen Forschung umgeben ist. Algorithmen wie Paxos und Raft versuchen, Lösungen für die Verwaltung von replizierten Daten zu liefern, während andere Lösungen bieten schließlich Konsistenz. Das Erstellen skalierbarer, verteilter Systeme ist kein triviales Kunststück, aber es verblasst im Vergleich zu ähnlichen Echtzeitsystemen. Verteilte Architektur ist ein gut verstandenes Problem und die Tatsache ist, dass die meisten Anwendungen eine hohe Toleranz für Latenz haben. Wenige Systeme haben eine nachweisbare Notwendigkeit für Echtzeit-Kommunikation, aber die wenigen, die eine interessante Herausforderung für Entwickler darstellen. In diesem Artikel, erforsche ich die Verwendung von ZeroMQ, um das Problem der verteilten, Echtzeit-Messaging in einer skalierbaren Weise Ansatz, auch unter Berücksichtigung der Begriff der schließlich Konsistenz. Der Intelligent Transport Layer ZeroMQ ist eine leistungsstarke asynchrone Messaging-Bibliothek, die in C. geschrieben wurde. It8217s ist kein dedizierter Message-Broker, sondern ein eingebettetes Parallelitäts-Framework mit Unterstützung für direkte und Fan-Out-Endpunktverbindungen über eine Vielzahl von Transporten. ZeroMQ implementiert eine Vielzahl unterschiedlicher Kommunikationsmuster wie Request-Reply, Pub-Sub und Push-Pull über TCP, PGM (Multicast), In-Process - und Interprozesskanäle. Der überraschende Mangel an UDP-Unterstützung ist mehr oder weniger von Design, weil ZeroMQ konzipiert wurde, um eine garantierte Bereitstellung atomarer Nachrichten zu gewährleisten. Die Bibliothek stellt keine wirkliche Garantie der Lieferung, aber es macht eine beste Anstrengung. Was ZeroMQ garantiert, ist jedoch, dass Sie nie erhalten eine Teilnachricht, und Nachrichten werden in Reihenfolge empfangen werden. Dies ist wichtig, weil die Leistungssteigerungen von UDP8217 wirklich nur in verlustreichen oder verstopften Umgebungen manifestieren. Die umfassende Liste der Messaging-Muster und Transporte allein macht ZeroMQ zu einer attraktiven Wahl für den Aufbau verteilter Anwendungen, zeichnet sich jedoch durch Zuverlässigkeit, Skalierbarkeit und hohen Durchsatz aus. ZeroMQ und verwandte Technologien sind im Hochfrequenzhandel sehr beliebt, wo der Verlust von Finanzdaten oft nicht akzeptabel ist. 1. Im Jahr 2011 führte das CERN eine Studie durch, in der CORBA, Ice, Thrift, ZeroMQ und mehrere andere Protokolle für die Verwendung in den Teilchenbeschleunigern verglichen wurden Und rangiert ZeroMQ der höchste. ZeroMQ nutzt einige Tricks, die es erlauben, TCP-Sockets im Hinblick auf den Durchsatz zu übertreffen, wie intelligente Nachrichten-Batching, Minimierung von Netzwerk-Stack-Traversals und Deaktivieren des Nagle8217s-Algorithmus. Standardmäßig (und wenn möglich) werden Nachrichten auf dem Teilnehmer in die Warteschlange gestellt, wodurch versucht wird, das Problem langsamer Teilnehmer zu vermeiden. Wenn dies jedoch ausreichend ist, verwendet ZeroMQ ein Muster namens 8220Suicidal Snail.8221 Wenn ein Teilnehmer langsam läuft und nicht mit eingehenden Nachrichten mithalten kann, überzeugt ZeroMQ den Abonnenten, sich selbst zu töten. 8220Slow8221 wird durch eine konfigurierbare Hochwassermarke bestimmt. Die Idee hierbei ist, dass es besser ist, schnell auszusteigen und das Problem schnell zu lösen, als es möglich ist, dass stale Daten stromabwärts fließen können. Wieder denken über die Hochfrequenz-Trading-Use-Fall. Eine verteilte, skalierbare und schnelle Messaging-Architektur ZeroMQ macht einen überzeugenden Fall für die Verwendung als Transportschicht. Let8217s erkunden ein wenig tiefer zu sehen, wie es verwendet werden könnte, um ein Messaging-Framework für den Einsatz in einem Echtzeit-System zu bauen. ZeroMQ ist ziemlich intuitiv zu bedienen und bietet eine Fülle von Bindungen für verschiedene Sprachen, so konzentrieren wir uns mehr auf die Architektur und Messaging-Paradigmen als der eigentliche Code. Vor etwa einem Jahr, während ich zum ersten Mal begann ZeroMQ zu untersuchen, baute ich ein Framework, um Echtzeit-Messaging und Dokument Synchronisation mit dem Namen Zinc. Ein 8220Dokument, 8221 in diesem Sinne, ist jedes gut strukturierte und veränderliche Stück Datathink Textdokument, Kalkulationstabelle, Leinwand, etc. Während rein akademisch war das Ziel, den Entwicklern ein Rahmenwerk für den Aufbau reicher, kollaborativer Erfahrungen in einer verteilten Weise . Das Framework hatte zwei Implementierungen, von denen einer durch den nativen ZeroMQ unterstützt wurde, und einen, der von der reinen Java-Implementierung JeroMQ 2 unterstützt wurde. Er war wirklich so konzipiert, dass jede Transportschicht verwendet werden kann. Zink ist nur um einige Kernkonzepte herum strukturiert: Endpunkte, ChannelListener, MessageHandler und Nachrichten. Ein Endpunkt repräsentiert einen einzelnen Knoten in einem Anwendungscluster und bietet Funktionen zum Senden und Empfangen von Nachrichten zu und von anderen Endpunkten. Es verfügt über ausgehende und eingehende Kanäle für die Übertragung von Nachrichten an Peers und empfangen sie jeweils. ChannelListener arbeiten im Wesentlichen als Dämonen, die eingehende Nachrichten abhören, wenn der eingehende Kanal auf einem Endpunkt geöffnet ist. Wenn eine Nachricht empfangen wird, wird sie an einen Threadpool übergeben, der von einem MessageHandler verarbeitet werden soll. Daher werden Nachrichten in der Reihenfolge, in der sie empfangen werden, asynchron verarbeitet, und wie bereits erwähnt, garantiert ZeroMQ die Nachrichtenzustellung in der Reihenfolge. Als beiseite, dies ist, bevor ich begann zu lernen. Was für einen idealen Ersatz für Java machen würde hier als it8217s recht gut geeignet für das Problem :) Nachrichten sind einfach die Daten, die zwischen Endpunkten ausgetauscht werden, von denen aus wir mit Dokumenten und DocumentFragments aufbauen können. Ein Dokument ist die von einer Anwendung definierten strukturierten Daten, während DocumentFragment ein partielles Dokument oder Delta darstellt, das nach Bedarf fein oder grobkörnig sein kann. Zink ist um die publish-subscribe und Push-Pull-Messaging-Muster gebaut. Ein Endpunkt wird als Host eines Clusters fungieren, während die anderen als Clients agieren. Mit dieser Architektur fungiert der Host als Publisher und die Clients als Abonnenten. Wenn ein Host eine Nachricht auslöst, wird er an jeden abonnierenden Client in einer Multicast-ähnlichen Weise ausgeliefert. Umgekehrt handeln Clients auch als 8220push8221 Endpunkte, wobei der Host ein 8220pull8221 Endpunkt ist. Clients können dann Nachrichten in die Host-Message-Warteschlange, aus der der Host zieht, in einer first-in-first-out-Weise. Diese Architektur ermöglicht, dass Nachrichten über den gesamten Clustera-Client übertragen werden, eine Änderung durchführt, die an den Host gesendet wird, der dieses Delta an alle Clients weitergibt. Dies bedeutet, dass der Client, der die Änderung initiiert hat, ein 8220echo8221 Delta empfängt, aber es wird verworfen, indem der Nachrichtenursprung überprüft wird, eine UUID, die einen Endpunkt eindeutig identifiziert. Die Kunden sind dann verantwortlich für die Konservierung der Datenkonsistenz, wenn nötig, vielleicht durch operative Transformation oder durch die Aufrechterhaltung einer einzigen Quelle der Wahrheit, aus denen Kunden können sich versöhnen. Einer der Vorteile dieser Architektur ist, dass sie aufgrund ihrer Kompositivität recht gut skaliert. Konkret können wir unseren Cluster als Baum von Kunden mit beliebiger Breite und Tiefe konstruieren. Natürlich, je mehr wir horizontal oder vertikal skalieren, desto mehr Latenz bringen wir zwischen Randknoten ein. Gekoppelt mit letzter Konsequenz kann dies für manche Anwendungen Probleme verursachen, kann aber für andere akzeptabel sein. Der Nachteil ist, dass dies inhärent führt einen einzigen Punkt des Ausfalls durch das Client-Server-Modell gekennzeichnet. Eine Lösung könnte sein, einen anderen Knoten zu fördern, wenn der Host ausfällt und den Baum ausbalanciert. Wieder einmal war dieser Rahmen überwiegend akademisch und fungierte als ein Weg für mich, den Test-Antrieb ZeroMQ, obwohl es einige andere interessante Anwendungen von ihm gibt. Since the framework supports multicast message delivery via push-pull or publish-subscribe mechanisms, one such use case is autonomous load balancing. Paired with something like ZooKeeper. etcd. or some other service-discovery protocol, clients would be capable of discovering hosts, who act as load balancers. Once a client has discovered a host, it can request to become a part of that hosts cluster. If the host accepts the request, the client can begin to send messages to the host (and, as a result, to the rest of the cluster) and, likewise, receive messages from the host (and the rest of the cluster). This enables clients and hosts to submit work to the cluster such that its processed in an evenly distributed way, and workers can determine whether to pass work on further down the tree or process it themselves. Clients can choose to participate in load-balancing clusters at their own will and when they become available, making them mostly autonomous. Clients could then be quickly spun-up and spun-down using, for example, Docker containers. ZeroMQ is great for achieving reliable, fast, and scalable distributed messaging, but it8217s equally useful for performing parallel computation on a single machine or several locally networked ones by facilitating in - and inter - process communication using the same patterns. It also scales in the sense that it can effortlessly leverage multiple cores on each machine. ZeroMQ is not a replacement for a message broker, but it can work in unison with traditional message-oriented middleware. Combined with Protocol Buffers and other serialization methods, ZeroMQ makes it easy to build extremely high-throughput messaging frameworks. ZeroMQ8217s founder, iMatix, was responsible for moving JPMorgan Chase and the Dow Jones Industrial Average trading platforms to OpenAMQ 8617 In systems where near real-time is sufficient, JeroMQ is adequate and benefits by not requiring any native linking. 8617 Share this:

No comments:

Post a Comment