Summary
Bokor est un logiciel libre (GPL v3) développé par la SCOP Bearstech en partenariat avec la société de distribution de films Cinego. Bokor est un framework permettant la distribution de fichiers sur un parc hétérogène de machines. L'architecture est hybride, un maître coordonne un ensemble d'esclaves qui vont partager des fichiers en point à point, avec le protocole BitTorrent.
Description
Bokor est un logiciel libre (GPL v3) développé par la SCOP Bearstech en partenariat avec la société de distribution de films Cinego. Bokor est un framework permettant la distribution de fichiers sur un parc hétérogène de machines. L'architecture est hybride, un maître coordonne un ensemble d'esclaves qui vont partager des fichiers en point à point, avec le protocole BitTorrent. Pour le distributeur, la bande passante est optimisée, et la résiliance du système maitrisée. La participation autoritaire aux échanges BitTorrent garantie des latences optimisées. Il est en production avec aujourd'hui 400 cinémas connectés, 10 super seeders en datacenter et 400 films, bandes-annonces et courts-métrages partagés.
Bokor utilise Rtorrent (avec des corrections pour Cygwin) et OpenTracker (avec quelques patchs), pour la partie BitTorrent. Pour la partie coordination, Python est utilisé, essentiellement pour des appels de fonctions dynamiques. Nous allons vous présenter la partie "Appel de procédure distante" (RPC en VO) de Bokor. Le système de RPC de Bokor a dû être conçu de manière extensible, la liste des fonctionnalités requises n'étant pas connue à l'avance. Nous avons choisi une approche minimaliste, pour ne pas avoir de soucis de portabilité, et pour limiter au maximum la consommation en CPU et bande-passante, qui seront utilisés par les très gourmands échanges BitTorrent.
L'utilisation des bibliothèques tiers a été réduite au maximum, seul py-curl a survécu, préférant l'approche "fourni avec des piles" de Python. Par contre, l'introspection de python a été poussée dans ces derniers retranchements : décorateurs de classes, de fonctions, modifications à chaud de classes, d'objets, méthodes abstraites...