4. About Diarkis
Diarkis は マルチプレイオンラインゲームやそのほか
リアルタイムな通信を必要とするアプリケーション
を作るための Go 製の Realtime Engine です。
Diarkis の 動作環境としては kuberentes 環境を推奨して
います。
Diarkis はサーバー同士でも通信し、クラスタを構成し、
耐障害製、運用製等を担保しています。
Diarkis とは
Cloud Load
Balancing
Client
Devices
Diarkis Server Cluster
MARS
Pod
Application
Server
WebSocket
Pod
WebSocket
Pod
WebSocket
Pod
TCP
Pod
TCP
Pod
TCP
Pod
UDP/RUDP
Pod
UDP/RUDP
Pod
UDP/RUDP
Pod
HTTP
Pod
HTTP
Pod
HTTP
Pod
UDP/RUDP
TCP
WebSocket
凡
例
Diarkis 内のメッシュネットワーク
Diarkis 外のネットワーク
Diarkis Architecture
13. Diarkis はミドルウェアである一方でサーバーコード
を記述可能
- Diarkis は 拡張可能なミドルウェア
- ライブラリ形式で配布している
- go でコードを記述することができる
- 様々なイベントに対してコールバックを記
述
- Diarkis 自体はライセンス方式 + go なのでどう
実現しているのか
- import したいが、ソースは見えない
- go でバイナリパッケージを提供する術が
現在ない
- 実現したいこと
- ユーザーにコードは隠蔽
- 自由にビルド可能
- 補完機能等は使えるように
技術者目線での Diarkis の強み ①
Client
Devices
Diarkis Server Cluster
MARS
Pod
WebSocket
Pod
WebSocket
Pod
WebSocket
Pod
TCP
Pod
TCP
Pod
TCP
Pod
UDP/RUDP
Pod
UDP/RUDP
Pod
UDP/RUDP
Pod
UDP/RUDP
TCP
WebSocket
ライセンス型のソフトウェ
ア だとするならば、
サーバー側は変更不能
通常 SDK などでカスタマイズ
可能な範囲はクライアント側
のみだが…
19. Diarkis + Kubernetes
- Custom Resource Definition 不使用
- Deployment, Statefulset 等標準的なもの
- ライブデプロイは実現
- クラスタの BlackBox 化を防止
- イメージの単純化
- alpine や ubuntu に単純にビルドした
バイナリを Copy するだけ
- go の恩恵
- デプロイの単純化
- kubectl apply だけで deploy が可能
- ユーザーは切断されない
- 結果としてクラスタの version up 等も気軽に行
えるようになっています
技術者目線での Diarkis の強み ②
Diarkis Server Cluster
MARS
Pod
WebSocket
Pod
WebSocket
Pod
WebSocket
Pod
TCP
Pod
TCP
Pod
TCP
Pod
UDP/RUDP
Pod
UDP/RUDP
Pod
UDP/RUDP
Pod
Diarkis を構成するすべてのプロセス
が SIGTERM を受けたときにユーザー
影響を及ぼさない設計
kuberentes cluster version up 時には
stateful なプロセスを含めてクラスタ内の
すべてのプロセスの再起動が必要となる…