Lotou est un cadre léger pour le serveur de jeux implémenté à Golang. Il utilise la communication entre les nœuds en abstraction d'échanges de messages afin que les multi-nodes et les multi-services puissent être facilement réalisés.
Lotou est inspiré par le framework Skynet écrit par CloudWu. Dans ce cadre, tous les services se communiquent mutuellement par messagerie. Les fonctions fournies par les services ne sont pas exposées par l'appel d'API. Dans la version actuelle, Module Core est responsable des messages de routage, et chaque service a son propre message Chan pour la réception et l'envoi.
Core fournit la communication entre les services. Tous les services sont enregistrés sur core et envoient un message à d'autres par Core.send.
binary code pour les données dans le flux binaire pour la communication entre les serveurs et les clients. L'utilisation de cette convention d'encodage est un peu comme l'utilisation de JSON Marshalling.
Gob (pas Gob dans la propre lib de Golang) Gob Encoding vise à maintenir la communication des nœuds. La communication des services peut être des nodes trans, de sorte que les messages de codage dans le flux binaire sont nécessaires. Le commutateur de messages dans les nœuds n'a pas besoin d'être codé pour de meilleures performances.
Tous les types primitifs de Golang peuvent être codés. Toute combinaison de paramètres est facilement prise en charge tant que l'expéditeur et le récepteur sont conformes à la même signature
La structure auto-définie peut également être prise en charge, mais la structure doit être enregistrée en avancé. Si différents nœuds doivent utiliser la même structure, l'enregistrement de ces structures doit être enregistré dans une séquence fixe et unique.
À l'heure actuelle, les performances d'encodage pour Slice et Map ne sont pas si bonnes. Afin de coder le type de []interface{} , dont chaque éléments sont codés séparément. Pour être plus précis, les informations de type pour chaque éléments sont toutes rassemblées. Donc, s'il y a des éléments d'un certain type de même type, les informations de type sont rassemblées de manière redondante.
Le marshalling de Gob (Lotou) est réalisé par Reflect.
Le module du journal concerne l'impression des informations de débogage et d'erreur. Actuellement, le journal est en mode synchronisé, si nous avons trop de journaux qui ont besoin de wirte pour fichier, il peut bloquer la logique principale. (il peut être changé en mode asynchronisé un jour)
Le réseau implémente les routes entre les nœuds dans TCP. Les rôles du server et client fonctionnent comme ils sont appelés. Le battement de cœur n'est pas encore mis en œuvre. client établit une connexion à son server lors de la première fois d'envoi de message.
Les serveurs multi-nœuds sont basés sur Topoloy. Il existe deux types de nœuds dans LOTOU et différents types de nœuds sont encastrés dans le même réseau. Dans un certain réseau, il n'y a qu'un seul nœud maître et des nœuds d'esclaves serveur. Les services peuvent être exécutés dans n'importe quel type de nœud et il existe deux types de services: le service local et le service mondial. Les services locaux sont ceux du même nœud connues par leur nom. Les services mondiaux sont des nœuds différents et ils sont exposés à tous les services de tous les nœuds en étant inscrits à Master.
Si vous êtes intéressé à développer Lotou, n'hésitez pas à me contacter via
QQ 157621271
WeChat Id Daijun_1234.
Le groupe QQ est également disponible 362112175. (Message de vérification de remplissage avec Lotou )
twitter @ sydnash1
Les conseils et les geeks sont toujours les bienvenus.
Utiliser etcd comme service découverte.
Utilisez nats comme message de noeud diliver.