「TECH x GAME COLLEGE #21」 2019/06/05 登壇資料
https://techxgamecollege.connpass.com/event/130420/
【Laravelを用いたゲームサーバーのチューニング】
主にDB周りの話題で、
・速度を出す
・水平分散をする
という観点で
Laravelをゲームサーバーで用いた際にチューニングしてきたことを紹介します。
「TECH x GAME COLLEGE #21」 2019/06/05 登壇資料
https://techxgamecollege.connpass.com/event/130420/
【Laravelを用いたゲームサーバーのチューニング】
主にDB周りの話題で、
・速度を出す
・水平分散をする
という観点で
Laravelをゲームサーバーで用いた際にチューニングしてきたことを紹介します。
talked by CI/CD Conference 2021 by CloudNative Days https://event.cloudnativedays.jp/cicd2021
re-upload: https://speakerdeck.com/whywaita/cyberagent-oss-cicd-myshoes-cicd2021
talked by CI/CD Conference 2021 by CloudNative Days https://event.cloudnativedays.jp/cicd2021
re-upload: https://speakerdeck.com/whywaita/cyberagent-oss-cicd-myshoes-cicd2021
8. Channelの作成
• Channel
• 論理的な作業単位
• トピックの購読
• トピックの購読解除
• クライアント側からのメソッド呼び出し
• 主にメッセージ送信に関する処理
class AttendanceChannel <
ApplicationCable::Channel
def subscribed
stream_from
"attendance:message"
end
def speak(data)
AttendanceChannel.broadcast_to(
'message', data
);
end
def unsubscribed
end
end
9. Channelの作成
• subscribed
• クライアントからChannelに接続した際
に呼び出されるメソッド
• クライアント側に購読するトピックの情
報を通知する処理を書く
class AttendanceChannel <
ApplicationCable::Channel
def subscribed
stream_from
"attendance:message"
end
def speak(data)
AttendanceChannel.broadcast_to(
'message', data
);
end
def unsubscribed
end
end
10. Channelの作成
• stream_from
• ストリームの提供
• 送信側: ストリーム名を指定してブロード
キャスト
• 受信側: ストリーム名を指定して購読
class AttendanceChannel <
ApplicationCable::Channel
def subscribed
stream_from
"attendance:message"
end
def speak(data)
AttendanceChannel.broadcast_to(
'message', data
);
end
def unsubscribed
end
end
11. Channelの作成
• Channel.broadcast_to
• ストリームを指定してメッセージ送信
• ストリーム名は<チャンネル名>:<名前>
• この場合、’attendance:message’に送信
される
• 要はこのチャンネルに接続した人全員に
メッセージを送る
class AttendanceChannel <
ApplicationCable::Channel
def subscribed
stream_from
"attendance:message"
end
def speak(data)
AttendanceChannel.broadcast_to(
'message', data
);
end
def unsubscribed
end
end
12. 購読側
• npmでactioncableをインストール
• node.js向けにActionCableのクライアン
トライブラリが提供されている
• これを利用することで、Railsから独立し
てクライアント側を実装できる
$ yarn add actioncable
yarn add v1.12.3
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ actioncable@5.2.2
info All dependencies
└─ actioncable@5.2.2
Done in 0.23s.