Lotouは、Golangで実装されたゲームサーバーの軽量フレームワークです。メッセージの交換を抽象化することにより、ノード間の通信を利用して、マルチノードとマルチサービスを簡単に達成できるようにします。
Lotouは、Cloudwuが書いたSkynetのフレームワークに触発されています。このフレームワーク内で、すべてのサービスはメッセージングによって互いに通信します。サービスによって提供される機能は、API呼び出しによって公開されません。現在のバージョンでは、モジュールコアはメッセージをルーティングする責任があり、すべてのサービスには、受け取って送信するための独自のメッセージChanがあります。
コアはサービス間の通信を供給します。すべてのサービスはcoreに登録され、Core.sendによって他のサービスにメッセージを送信します。
binary 、サーバーとクライアント間の通信のためにデータをバイナリストリームにエンコードします。このエンコーディング条約の使用は、JSONマーシャリングの使用法に匹敵します。
GOB(Golang自身のLIBのGOBではありません)GOBエンコーディングは、ノードのコミュニケーションを維持することを目的としています。サービスの通信はトランスノードである可能性があるため、バイナリストリームへのエンコードメッセージが必要です。ノード内のメッセージの切り替えは、パフォーマンスを向上させるためにエンコードする必要はありません。
Golangのすべてのプリミティブタイプをエンコードできます。送信者とレシーバーが同じ署名に準拠している限り、パラメーターの任意の組み合わせは簡単にサポートされます
自己定義された構造体もサポートできますが、構造体はAdvancedで登録する必要があります。異なるノードが同じ構造体を使用する必要がある場合、それらの構造体の登録は、固定された一意のシーケンスで登録する必要があります。
現在、スライスとマップのエンコードパフォーマンスはあまり良くありません。 []interface{}のタイプをエンコードするために、その各要素は個別にエンコードされます。より具体的には、各要素のタイプ情報がすべてマーシャルされています。したがって、特定の特定のタイプの要素がある場合、タイプ情報は冗長になります。
GOBのマーシャリング(LOTOU)は、反射によって達成されます。
ログのモジュールは、デバッグとエラー情報を印刷するためのものです。現在、ログは同期モードです。ファイルする必要があるログが多すぎる場合、メインロジックをブロックする可能性があります。 (いつか非同期モードに変更される場合があります)
ネットワークは、TCPのノード間のルートを実装します。 serverとclientの役割は、それらが呼ばれるものとして機能します。ハートビートはまだ実装されていません。 client 、メッセージを最初に送信したときにserverへの接続を確立します。
マルチノードサーバーはTopoloyに基づいています。 LOTOUには2つのタイプのノードがあり、異なるタイプのノードが同じネットワークに刻まれています。特定のネットワーク内には、マスターノードとサーバースレーブノードが1つしかありません。サービスは、あらゆるタイプのノードで実行でき、ローカルサービスとグローバルサービスの2種類のサービスがあります。ローカルサービスは、名前で互いに知られている同じノード内のサービスです。グローバルサービスは、異なるノードによって実行されるものであり、マスターに登録されることにより、すべてのノードのすべてのサービスにさらされます。
ロットの開発に興味がある場合は、お気軽にご連絡ください
QQ 157621271
wechat id daijun_1234。
QQグループも利用可能362112175。( Lotouで確認メッセージを入力)
Twitter @sydnash1
アドバイスとオタクは常に歓迎されます。
サービスを発見するためにetcdを使用します。
natsノードメッセージ拡張器として使用します。