Go + Pulsar WebSocket APIの利用事例 #pulsarjp

160 Views

August 06, 18

スライド概要

Apache Pulsar Meetup Japan #2 発表資料
https://japan-pulsar-user-group.connpass.com/event/94276/

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

公開 Go + Pulsar WebSocket APIの 利用事例 2018年8月6日 スマートデバイス本部 大城卓 Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved .

2.

自己紹介 公開 大城 卓(オオシロ タカシ) 2 • 2012新卒入社 • プラットフォーム開発本部(2012-2016) 社内PF開発 C++ PHP • スマートデバイス開発本部(2016-) サーバサイド開発 C++ PHP Go Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved .

3.

目次 • スマートデバイス本部について • システム概要・構成 • ハマったところ • Pulsarを使ってみて 3 Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved . 公開

4.

スマートデバイス本部について • 将来の事業に大きな貢献をもたらすタネを 見つける • スマホアプリの次を模索 https://mythings.yahoo.co.jp/ 4 Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved . 公開

5.

システム概要 WebAPI • • • • 5 クライアントのデータをDBに 蓄積したい トラフィックは小さい レスポンスは速くしたい コード流用のため、 Apache + PHPで構築 Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved . 公開

6.

公開 システム構成 リクエスト WebSocket WebAPI WebSocket Pulsar (Broker) OpenStack Apache PHP 6 Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved . MySQL Consumer Cloud Foundry Go言語

7.

公開 ハマったところ Consumerが返したAckをBrokerが受け取ってくれない → LB(ロードバランサ)のセッション維持時間が2分だった → LBのセッション情報が2分で消え、パケットが破棄 されていた Message LB Pulsar (Broker) 7 Ack Consumer Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved .

8.
[beta]
定期的なPing送信
https://tools.ietf.org/html/rfc6455#section-5.5.2
// Ping
go func() {
ticker := time.NewTicker(time.Minute)
defer ticker.Stop()

for {
select {
case <-ticker.C:
conn.WriteMessage(websocket.PingMessage, []byte{})

定期的にPing送信する
Goroutine

}
}

}()

// Consume
go func() {
for {
m := msg{}
conn.ReadJSON(&m)

conn.WriteJSON(res{MessageID: m.ID}) // Ack
// DB登録処理

Messageを受け取り、DBに
書き込むGoroutine

}

8

}()

Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved .

公開

9.

Pulsarを使ってみて • WebSocket APIで言語を選ばず使える • 各言語のWebSocket実装を参考にできる • Athenz認証の学習コストが高い • 運用はこれからです 9 Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved . 公開

10.

公開 おわり Cop yrig ht © 2 0 1 8 Yahoo Jap an Corp oration. All Rig hts Reserved .