Skip to content
Yannick PÉROUX edited this page Aug 11, 2013 · 3 revisions

Les différents composants d'Onitu (drivers, referee…) doivent communiquer entre eux via des envois de messages , qui passent par ZeroMQ.

Ces messages sont très importants, car ils peuvent contenir de grosses quantités de données, notamment une partie d'un fichier.

Afin d'optimiser la réactivité et l'empreinte mémoire d'Onitu, ces messages doivent être choisi avec précaution. Étant donné que changer de protocole nécessite très peu de changement dans le code, des benchmarks devraient être réalisables simplement.

== Existant Pour le Proof of Concept, les messages seront envoyé en JSON, via les methodes send_json et recv_json de PyZMQ.

== Liste des protocoles potentiels Il existe de nombreuses manières de sérialiser un message. Il nous faut donc les identifier afin de choisir la plus pratique.

=== Protocoles peu adaptés

  • À l'arrache -> Créer un protocole très bête. Demande un peu de travail, n'est pas forcément optimum. Des gens plus intelligents ont déjà fait des protocoles mieux.
  • JSON -> Très facile, et flexible, supportée nativement par PyZMQ. Les messages ne sont pas du tout optimum, mais le temps de sérialisation/dé-sérialisation est assez court.
  • pickle -> Natif python, peut entraîner de grosses failles de sécurité. À éviter.
  • Protobuf -> Messages optimisés, temps acceptables (mais pas optimum…), mais dépendance assez lourde. Pas de support de Python 3. À éviter.

=== Protocoles intéressants

  • MessagePack -> Semble très intéressant. Du JSON, mais avec des messages beaucoup plus optimisés.
  • Blosc -> Un système ultra-rapide, sensé être plus rapide qu'un memcpy. Très intéressant, à regarder.
  • JSON + compression -> Peut-être la meilleure solution, il faudrait faire des benchs.
Clone this wiki locally