VonmoTrade-Experiment. Teil 1: Austausch und moderne Technologie


Die Artikelserie beleuchtet den Versuch, ein reaktives System von einer Person mit minimalem Budget und in kürzester Zeit zu erstellen.


Ziele des Experiments:


  • Ein tieferes Verständnis des Fachgebiets und verbesserte technische Kompetenz
  • Ermittlung der Stärken und Schwächen des Einsatzes von funktionalen Sprachen und Open Source-Projekten bei der Entwicklung von Handelssystemen
    Dieser Artikel stellt den motivierenden Teil des Projekts und die Zerlegung der Aufgabe vor.

Ich hatte vor, das Experiment im Frühjahr 2019 zu starten, aber die Umstände haben die Fristen verschoben. Deshalb entschuldige ich mich bei den wenigen Abonnenten, die auf Artikel zu diesem Thema gewartet haben.


Wie bin ich zu so einem Leben gekommen?


Als ich merkte, dass ich die Routine von Arbeitsprojekten satt hatte, wollte ich etwas Ungewöhnliches machen. Ich habe mir verschiedene Themen und Richtungen überlegt, deren Umsetzung für mich eine Herausforderung war. Die Hauptanforderungen für das Projekt wurden formuliert:


  • Ein Wissensgebiet, das mich interessiert;
  • Verteilte und leicht zugängliche Art der Anwendung;
  • Hohe Informationskapazität und große Mengen gespeicherter Daten, die für datenintensive Anwendungen charakteristisch sind;
  • Machen Sie das Beste aus Open Source-Projekten.

Da es bereits einige Erfahrungen mit der Entwicklung von Objektdatenlagern gab, entstand die Idee, ein Thema zu entwickeln und eine neue Implementierung eines S3-kompatiblen Speichers mit redundanter Codierung und schnellen Hash-Funktionen zu schreiben. Aber ich wollte etwas interessanteres. Aus Sicht des Entwicklers sind Finanzsysteme neugierig auf ihre Arbeit im Fast-Echtzeit-Modus, eine große Anzahl von Aktualisierungen und die Menge der gespeicherten Daten. Deshalb habe ich mich entschlossen, das Austauschsystem einzuführen.


Über den Austausch


Im weiteren Sinne ist die Börse (lat. Bursa - Wallet) ein Markt, auf dem Verkäufer und Käufer Transaktionen abwickeln. Je nachdem, was ein gehandelter Vermögenswert (Instrument) ist, werden die Besonderheiten der Börse bestimmt:


  • Ware, einschließlich der Arbeitsbörse
  • stock
  • Währung
  • Futures

In der Vergangenheit waren Börsen tatsächlich der Ort, an dem sich Käufer, Verkäufer und Makler (Vermittler) zum festgelegten Zeitpunkt versammelten, über den Transaktionen getätigt wurden.
Die Hauptfunktionen des Austauschs umfassen:


  • Organisation des Börsenhandels:
    • Definition der Handelsregeln gemäß geltendem Recht
    • Produktstandards setzen
    • Material und Besetzung
  • Informationsaktivität. Bereitstellung von Informationen zu Instrumentenpreisen, Märkten und Unternehmen;
  • Entwicklung von Musterverträgen;
  • Beilegung von Streitigkeiten (Schiedsverfahren);
  • Gewisse Garantien für die Ausführung von Transaktionen.

Moderne Börsen sind organisierte Handelsplätze, die nach bestimmten Regeln arbeiten und Angebot und Nachfrage bündeln. Die Wirtschaftlichkeit der Börse ist auch sehr klar: Je mehr Transaktionen an der Börse getätigt werden, desto höher ist die Belohnung der Börse für die erbrachten Dienstleistungen.


Damit die allgemeinen Merkmale der Lösung verständlich sind, ist es jetzt erforderlich, den Arbeitsaufwand so zu begrenzen, dass die Umsetzung der Idee innerhalb einer angemessenen Zeitspanne erfolgen kann.


MVP


Aus den begrenzten Ressourcen folgt die eingeschränkte Funktionalität des Prototyps. Entscheidende und grundlegende Dinge müssen jedoch vollständig umgesetzt werden.


Problemzerlegung und Auswahl der Architektur


Auf der technischen Seite handelt es sich bei der Vermittlungsstelle um ein Warteschlangensystem, in dem die Teilnehmer einen Strom von Anrufaufträgen generieren und das System nach zuvor bekannten Regeln Aktionen auf diese ausführt.


Bestellungen sollten mit der geringsten Zeit erledigt werden. Der Austausch muss fehlertolerant und gut zugänglich sein.


Wir unterteilen das Projekt in die Bereiche Service und Public. Mit dem Serviceteil können Sie die Komponenten der Plattform und den Handelsprozess der Börse verwalten. Der öffentliche Teil umfasst Kundeninteraktionsschnittstellen: Web-API, Handels-API, Benachrichtigungssubsystem. Beide Teile werden auf einer verteilten Anwendungsplattform basieren, die für die Skalierbarkeit und Zuverlässigkeit des gesamten Systems verantwortlich ist.


Da unser Budget begrenzt ist, werden wir nur bewährte Open-Source-Lösungen für die Organisation der Datenspeicherung verwenden. Für heiße Systemdaten gilt Tarantool und für kaltes PostgreSQL.


Wir werden die geplante Zusammensetzung des Systems darstellen (das Bild ist anklickbar):


Man hat das Gefühl, dass Architektur und Design sich nicht von herkömmlichen Systemen unterscheiden. Wo ist die Herausforderung? Berücksichtigen Sie bei der Beantwortung den Vorgang des Erstellens von Aufträgen und des Abschlusses von Geschäften für den Geldumtausch.


Auftragserstellung


  1. Überprüfen Sie die Berechtigung
  2. Stellen Sie sicher, dass der Benutzer derzeit über genügend Guthaben verfügt, um eine Bestellung zu erstellen.
  3. Auftrag anlegen
  4. Benachrichtigen Sie den Benutzer über eine erfolgreiche Erstellung oder einen Fehler

Abschlussgeschäft


  1. Finde eine Paarbestellung
  2. Überprüfen Sie die Angemessenheit der Mittel in den Bilanzen der Parteien, um die Transaktion abzuschließen
  3. Fixe Transaktion: Überweisung zwischen Konten + Überweisung der Umtauschprovision auf das Umtauschprovisionskonto.
  4. Speichern Sie die Historie der ausgeführten Aufträge.
  5. Aktualisieren Sie die Informationsdaten: Rohhandelsdaten und aggregierte Daten für Diagramme.
  6. Benachrichtigen Sie alle Interessenten über die Transaktion.

Schwierigkeiten treten auf, wenn wir von einem Monolithen, der auf demselben Computer ausgeführt wird, zu einem verteilten fehlertoleranten System wechseln, das auf einem Cluster bereitgestellt wird. Ich lege die minimale Systemleistung für jeden Markt auf 5-7.000 abgeschlossene Transaktionen pro Sekunde. Dies führt zu zusätzlichen Einschränkungen für die Architektur und die Arbeit mit Daten.


Nach dem KISS-Prinzip sollte jede Anwendung nur die Funktionen ausführen, die für die Verarbeitung der darin implementierten Entität erforderlich sind: Markt, Konto, Autorisierung usw.


VTrade basiert auf den Prinzipien der horizontalen Skalierung. Jede Anwendung kann im Plural ausgeführt werden. Dies ermöglicht es Ihnen, Fehlertoleranz und das erforderliche Leistungsniveau zu erreichen.


Technologischer Stack


Um die Entropie nicht zu multiplizieren, beschränken wir die verwendeten Sprachen und Technologien.
Für den Server enthält dieses Set Folgendes:


  1. Erlang Meiner Meinung nach die ideale Sprache zum Bauen von Infrastrukturdingen.
  2. Rust. Großartig für Systemprobleme und Optimierungsprobleme.
  3. PostgreSQL Als Hauptgrundlage für die langfristige Datenspeicherung
  4. Tarantool. Als heißer Datenspeicher (nur für die Zeit von MVP)
  5. Clickhouse. Zur Analyse von Protokollen und umfassenden Analysefunktionen.
  6. Linux Das System muss moderne Distributionen unterstützen.

Die Client-Software wird mithilfe des Vue-Frameworks unter Verwendung von Vuex implementiert.


Da das Projekt zunächst eine große Anzahl von Komponenten umfasst, werden wir eine große Anzahl eigenschaftsbasierter Tests und Integrationstests schreiben, um die Qualität der endgültigen Lösung zu gewährleisten.


Über Pläne


In naher Zukunft werde ich die Grundlagen der Theorie analysieren und mich mit der Praxis in folgenden Bereichen befassen:


  • Optionsscheine. Typen, Verarbeitungsmerkmale. Aspekte der Speicherung von Handelsinformationen.
  • Optionsscheinheft. Visuelle Darstellung des Marktes.
  • Gebotsverlauf Drucke, Grafiken, persönliche Geschichte.

Wie sie sagen ... Bei Interesse, wie Abonnement)

Source: https://habr.com/ru/post/de481016/


All Articles