server_migration

server_migration サンプル

概要

Diarkis サーバはサーバクラスタとして構成されており、スケールインなどで接続中のサーバが停止した場合、別のサーバへ接続しなおすサーバマイグレーションが発生することがあります。 サーバマイグレーションを実現するにあたりクライアント側でも対応実装を行う必要があるため、本サンプルではどのような実装が必要となるか説明します。 マイグレーションに関する詳細についてはこちらのページを参照してください。

ローカル環境でサーバーを起動する

サンプルで使用するサーバーを起動するためのチュートリアルを実施して、ローカル環境で Diarkis サーバーを起動します。 本サンプルではマイグレーションを発生させるため、サンプル実行中に UDP サーバの起動と停止を行う必要があります。 チュートリアルの手順を参考にサンプルコードのコメントに従って UDP サーバのプロセスを操作してください。

Diarkis サーバをローカルで起動する

サンプルの引数

サンプルの起動時には以下の3つのパラメータを指定してください。

引数
説明

serverAddr

Diarkis サーバのエンドポイントを指定してください

UID

接続するユーザーの ID を任意の文字列で指定してください

clientKey

クライアントキーを任意の文字列で指定してください

起動例:

server_migration.exe 192.168.1.123:7000 1111 AAAA

起動方法

本サンプルは単体で実行することができ、起動すると指定された Diarkis サーバに接続し、マイグレーションが発生するまで待機します。 マイグレーションを発生させるには Diarkis サーバを起動している PC で移動先として新たに UDP サーバを起動したのちに、接続中の UDP サーバを停止します。

サンプルコード説明

UDP サーバのマイグレーション対応実装

DiarkisUdpBase クラスの仮想関数をオーバーライドしてマイグレーション対応コードを実装します。

以下の実装がマイグレーション対応に関連するコードとなります。DiarkisUdpBase::OnOffline でサーバが停止することを検出し、アプリの都合に合わせて DiarkisUdpBase::SendMigrate を実行します。 DiarkisUdpBase::SendMigrate 実行後、Diarkis ランタイムが自動的に接続中のサーバからの切断と新しいサーバへの再接続処理を実行します。 この再接続処理の中で DiarkisUdpBase::OnConnectDiarkisUdpBase::OnDisconnect が発火し、再接続の完了を検出することができます。

Room のマイグレーション対応実装

Room を使用している場合、マイグレーションを行うには Room 専用の対応実装を行う必要があります。 DiarkisRoomBase クラスの仮想関数をオーバーライドしてマイグレーション対応コードを実装します。

以下の実装が Room のマイグレーション対応に関連するコードとなります。構造としては UDP サーバのマイグレーション対応実装と同様になっていますが使用するコールバックが異なります。

マイグレーションを発生させる手順

ローカルで Diarkis サーバを立ち上げている場合、UDP サーバが複数プロセス起動している状態で、クライアントが接続中の UDP サーバを停止させることでマイグレーションを発生させることができます。 サンプル起動時には 1 つだけ UDP サーバを起動しておくとクライアントの接続先サーバプロセスが固定されるため、クライアント接続後に新たに UDP サーバのプロセスを起動した際に、どのプロセスを停止すればよいかが判別しやすくなります。

最終更新

役に立ちましたか?