Question

Pour un moteur de trading de haute performance, il correspond / gère une commande à la fois, devrait-il enregistrer la commande et d'autres informations critiques à DB avant de passer à la suivante?

ou puis-je utiliser un fil séparé pour enregistrer à db asynchrone?

Si de manière asynchrone, je peux utiliser Zeromq pour envoyer un MSG contenant les informations critiques au serveur DB, cependant, si cela se bloque, les informations de commande sont perdues.

Au lieu de cela si j'utilise un rabbbitmq, qui persiste le message au disque, est-ce suffisamment sûr?

Était-ce utile?

La solution

Votre question ouvre une boîte pandorre entière pleine de problèmes et de questions très importants.

zeromq est utilisé dans cette industrie, car il s'agit d'un smart, de Devillish Fast & a à la fois une impression de pieds minimalistique et des frais de vue bas, néanmoins la solution que vous posez sur n'est pas basé sur une seule couche de technologie ou sur une réponse triviale oui / non.

Quelle que soit la promesse de l'industrie informatique - que ce soit pour SSD, SSD avancé, 3D-SSD et des innovations similaires, la responsabilité principale est sur votre faisabilité de l'architecture de système de bout en bout, pas sur un élément de technologie. Supposons que tout élément puisse échouer et échouera. Il n'y a pas de "EHM, Houston, nous avons un problème" Appelez sur les marchés, moins dans HFT.

Étapes suivantes

  1. soyez exigent des exigences quantitatives et mesurables exactes
  2. Conception contre les exigences (pas les opinions, quelle que soit la visibilité marketing qui peuvent avoir)
  3. Test à la fois contre les seuils de performance pic et durables
  4. Ne faites pas de compromis dans les tests de mesures de récupération des catastrophes d'entreprise (enchaînés les plus graves de surprises)
  5. être méthodique et persistant, les compromis sont plutôt chers (sinon fatals)
  6. Si vous prenez seulement les 4 dernières décennies d'utilisation du calcul de haute performance sur les marchés financiers, il a été satisfait aux principales pierres angulaires pour obtenir à la fois la haute performance et la défaillance. Le long de ce chemin, il a également été observé que des concepts et des effets dévastateurs de la conception médiocre et du manque de pratiques d'isolation des erreurs - prennent juste le crash de HFT Knights HFT (bien, les heures d'injection de HFT à l'injection de HFT. Vue de la $ IZE $ Un "cratère d'impact" dans Thi $ Indu Essayez peut avoir, si la CRA $ H arrive $ to matériellement $ e.

    Moteur de négoce haute performance

    Supposons que vous indiquez votre système à la fois des enveloppes de portée et de performance:

    [SCOPE]------------------------------------------------------------
    Forex Majors instruments   { EURUSD, GBPUSD, <list-all-that-applicable> }
    Forex Exotic instruments   { <list-all-that-applicable> }
    Precious Metals            { XAUUSD, XAGUSD, <list-all-that-applicable> }
    Commodities                { <list-all-that-applicable> }
    US-stocks                  { AAPL, GOOG, XOM, <list-all-that-applicable> }
    Euro-stocks                { <list-all-that-applicable> }
    *-stocks                   { <list-all-that-applicable> }
    US-indices                 { <list-all-that-applicable> }
    Euro-indices               { FTSE, CAC, DAX, AMS, <list-all-that-applicable> }
    *-indices                  { <list-all-that-applicable> }
    Futures                    { <list-all-that-applicable> }
    Options                    { <list-all-that-applicable> }
    Binary Options             { <list-all-that-applicable> }
    Options on Futures         { <list-all-that-applicable> }
    Options on Indices         { <list-all-that-applicable> }
    BT*-based instruments      { <list-all-that-applicable> }
    

    Dans une structure similaire, Etat pour les évaluations de conception Les contraintes de performance des opérations en temps réel, avec des valeurs maintenues et pics dans [MSEC]

    [PERFORMANCE]------------------------------------------------------
    System requirement for a number of Market Events per msec per segment
    System requirement for a number of PriceFeed Quotes per msec per segment
    System requirement for a number of OrderProcessing Events per msec per segment
    

    Cela vous donne les premiers métriques élémentaires et élémentaires pour contraindre votre conception de votre système en temps réel. i.e. Quelles limites de la latence et de la latence que vous devez concevoir et donc quels outils et quelles mesures vous avez du temps dans [USEC] à incorporer à n'importe quelle étape du pipeline afin de garantir toujours la stabilité en temps réel et les seuils de robustesse.

    Commandez la correspondance / la manipulation d'une à la fois?

    Ce n'est pas une question. Ceci est une externalité donnée.

    [ ordre ] correspondant est typiquement donné par le corps de réglementation du marché (si ce n'est pas concevé pour une piscine sombre et autre quasi-marché non public (s)) afin en ce qui concerne le principe du marché équitable. La manipulation des commandes est sous-ordonnée à vos tâches de contrôle de la réglementation et de la vérification. Ces deux ne sont pas un champ pour une volonté gratuite de la conception du système.

    Devrait-il enregistrer?

    L'ordre [ commande ] et d'autres informations critiques à dB avant de passer à la suivante ou que je puis-je utiliser un fil séparé pour enregistrer à db asynchrone? .. est répondu davantage par les exigences du système des organes d'audit / de surveillance que de l'avis du Comité technique.

    Si cela se bloque?

    Si la conception de votre architecture système permet, il peut se bloquer. Ensuite, vous avez besoin de mesures de ré-instabilité post-crash

    Si la conception de votre architecture système nécessite de développer un système qui ne se bloque pas, cela deviendra un problème vide. Application en ligne-miroir + ombrage à chaud avec n + 1, (n + 1) +1 ou (n + m) +1 modèles de redondance sont réalisables, de sorte que les collisions individuelles soient correctement isolées.

    est-il suffisant?

    dépend de la planification de votre entreprise de reprise des catastrophes et de vos mesures de continuité des activités. Le test est inévitable.

    N'oubliez pas le célèbre doigt de Nobelist Dick Feynman pointant au milieu des plans de plante Nuke ...

Autres conseils

Il y a trop de côtés sur cette question, mais voici quelques éléments à considérer ...

Quelle est la probabilité d'accidents et des conséquences de la perte de données "critiques" en cas d'accident? C'est vraiment une question d'entreprise (par opposition à la technologie). Dans de nombreux cas, le coût-bénéfice appuie l'idée qu'il est correct de perdre des données et de payer le prix de la traiter à chaque fois que cela se produit. Au début, il était courant que les courtiers garantissent «l'exécution de l'ordre en X ou votre coût de transaction», mais même la mesure même. Si vous vous êtes plaint, ils ont simplement publié un remboursement.

Une fois que vous savez quelles données doivent être absolument persistées, un système de haute performance devra trouver le moyen le plus rapide de le faire. Il y a beaucoup de nuances ici aussi? Quel degré de "sécurité" avez-vous besoin?

  • mémoire en cours? (Les données disparaissent si le processus se bloque)
  • Mémoire hors processus (les données disparaissent si le processus "persist" se bloque également)?
  • tampon de disque OS, mais toujours pas disque (les données disparaissent si le système d'exploitation se bloque également)?
  • Disque physique (les données disparaissent si le disque lui-même, ou un serveur entier, "disparaît")?

Personne ne peut vous dire ce que fait chaque entreprise HFT à cet égard (elles sont trop secrètes). Dans les banques, les courtiers, etc., il est courant de persister les données à un disque rapide dans le format le plus simple et le plus rapide possible (par exemple, les messages corrigés seraient simplement largués dans des fichiers binaires tels que reçus) avant le traitement du prochain message (dans De nombreux cas sans égard à la question de savoir si les données sont physiquement écrites sur le disque ou toujours dans un tampon OS). Cela vous donne un esprit en cas de crash de l'application. Un traitement ultérieur sera alors fait de manière asynchrone (comme écrire dans une base de données afin que les données puissent être interrogées facilement ou vérifier les limites de risque, etc.).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top