SlideShare a Scribd company logo
天下一InfluxDB勉強会
goraft & InfluxDB @nobu_k
1
誰?
❖ 久保田展行(@nobu_k)!
❖ CTO at Preferred Infrastructure America, Inc.!
❖ PFI(ピーFI)のアメリカ支部!
❖ (Relational) Database, Search Engine, Distributed Systems!
❖ C++, Go!
❖ MessagePack for C/C++メンテナ!
❖ beatmania IIDX DP皆伝
2
Raft?
❖ 非常にわかりやすいコンセンサスプロトコル(アルゴリズム)!
❖ 一般的に難しいものが多かった(Paxosとか)!
❖ 今日は小難しいアルゴリズムの話はなし!!
❖ 参考!
❖ 公式:http://raftconsensus.github.io/!
❖ 分かりやすい資料:http://thesecretlivesofdata.com/raft/!
❖ 自分のスライド(///):http://www.slideshare.net/pfi/raft-36155398
3
Raftが提供するもの
❖ 協調して合意を取る枠組み!
❖ リーダー選出!
❖ (ログ)レプリケーション!
❖ State machine replication!
❖ 異常系はある程度Raftが面倒を見る!
❖ 合意を取って何をするかは

アプリケーションにお任せ
Raft cluster
全ノードが同じ状態を維持
同じ状態を冗長化して可用性UP
R
R R
R R
4
Leader
Follower
ZooKeeper?
?
5
ZooKeeper
ZAB
Storage
Rich features
ZK cluster
Application clusters
Storm
❖ File system like KVS!
❖ ephemeral nodes
❖ KVSの操作!
❖ watch!
❖ ACL!
❖ etc
❖ ZooKeeper Atomic Broadcast!
❖ コンセンサスプロトコル !
❖ 理論的証明はなし
6
Raft
ZAB
Storage
Rich features
Raft
DIY
DIY
Consensus protocol
❖ Raftはただのプロトコル!!
❖ 一番難しい部分をカバー!
❖ 疎結合なので夢は広がる!
❖ 好きなストレージ!
❖ 好きな通信手段!
❖ 好きなAPI
7
goraft
❖ https://github.com/goraft/raft!
❖ Goで書かれたRaftのライブラリ!
❖ goraftの使用例!
❖ Raftd:goraftを使ったサンプル、学習用にどうぞ!
❖ etcd!
❖ InfluxDB!
❖ 他にもたくさん!
8
InfluxDB での goraft
9
InfluxDBがRaftで管理する情報
❖ Raftに入っている情報!
❖ InfluxDBのクラスタに含まれるサーバ!
❖ 作成済みのデータベース!
❖ ユーザの情報!
❖ シャードの情報!
❖ 作成済み(実行中?)のContinuous query!
❖ これらをRaftで管理することで安全に冗長化、耐障害性を持たせる
参考:https://speakerdeck.com/pauldix/the-internals-of-influxdb?slide=50
10
goraft関連のパッケージ
❖ api/http!
❖ HTTPサーバ!
❖ coordinator!
❖ 分散関連の処理を担当!
❖ Raft関係もここ!
❖ cluster!
❖ InfluxDBクラスタの情報、shard情報
11
データベース作成の例
api/http coordinator
cluster
POST /db
CreateDatabaseCommand
raft
CreateDatabase
Apply
CreateDatabase
ClusterConfiguration
DatabaseReplicationFactors
①
②
③
④
ブロードキャスト完了後、!
コミット時にApplyを呼び出す
12
時系列データは?
❖ 時系列データもRaftで冗長化してはダメなのか?!
❖ ダメ!
❖ Raftのプロトコルは安全だがオーバーヘッドが大きい!
❖ InfluxDBが想定するワークロードには合わない!
❖ InfluxDBでは時系列データは自分で管理している
13
Raftの観点から見た
InfluxDBの注意点
14
問題1: 全ノードがRaftのノードとして動く
I
I
II
II
II
R
R
R
R
R
R
R
R
❖ 頻繁な1対全の通信!
❖ Heartbeat: 数10ms単位!
❖ 合意コスト増
“CPU and networking resources can
quickly be bottlenecked under stress
in a large cluster.”
“It is unlikely that 4 nodes will
simultaneously fail so clusters larger
than 9 nodes are not common.”
15
妄想: 将来の構成
I
I I
I I
R
R
R
or
I
I I
I I
部分的にRaftノードとして機能
Raftを別クラスタで運用
タイムアウトがシビアなので!
こっちの方が良さそう。
R
R R
16
問題2: ReadにRaftを使ってない
❖ RaftではLeaderとFollowerでコミットのタイミングが違う!
❖ Followerが持っている情報を読んではいけない!
❖ Leaderが持っている情報も、本当は直接読んじゃダメ!
❖ 自分の書いた値を読めないことがある!
❖ 読み込みもRaftのコマンドとして実行することで解決
R
R
R
この状態でLeaderが切り替わった瞬間に!
直readが発生すると、元々コミット済みだった!
情報を読めない。レアだが、実際に起こると!
非常に原因を特定しづらい。殺人事件に発展!
することもあるため注意が必要だ。
未コミットコミット済み 17
問題3: 処理の冪等性
❖ Raftのログレプリケーションの仕組みは冪等!
❖ しかし、アプリケーションレベルでの冪等性は考慮されない!
❖ 例:!
❖ クライアントが100円送金するリクエストを投げる!
❖ コミット前にクライアントがタイムアウト!
❖ 実際は処理は継続しており、送金リクエストはコミットされる!
❖ しかしクライアントはその事実を知らないのでリトライ!
❖ 結果として200円送金されてしまう!
❖ Raftは内容が同一のリクエストが2つ来たと解釈する
18
InfluxDBで問題になるか
❖ そもそもInfluxDBのコマンドは冪等か?!
❖ コマンドが冪等であればそもそも問題ない!
❖ 冪等なもの:DB作成とか!
❖ 冪等じゃないもの:CreateContinuousQuery!
❖ 同じものが複数個作られちゃう!
❖ InfluxDBのユーザがタイムアウト時にリトライするとまずい
19
どう保証するか?
❖ 論文ではTCPのようにIDを振るアプローチを紹介!
❖ リトライと冪等性のデザインパターン by frsyuki!
❖ http://frsyuki.hatenablog.com/entry/
2014/06/09/164559!
❖ http://frsyuki.hatenablog.com/entry/
2014/06/12/123856
20
その他: goraftのメンバシップ管理が不完全
❖ Raft公式サイトのgoraftの項目にて・・・!
❖ Membership Changes: partial?!
❖ Raft的にはJoint Consensusを使うことになってる!
❖ 課題!
❖ ログ同期完了のタイミングを把握するのが難しい!
❖ 特に複数台のノードをまとめて追加・削除するときに大変!
❖ InfluxDBがRaftで管理している情報は小さいのでたぶん大丈夫
21
まとめ
❖ Raft!
❖ コンセンサスプロトコル!
❖ goraft!
❖ Raftのライブラリ!
❖ ZooKeeperのようにフルスタックな機能は提供しない!
❖ InfluxDB!
❖ 主にクラスタ情報の管理にgoraftを使用
22

More Related Content

Similar to Goraft and InfluxDB

20210510 software design
20210510 software design20210510 software design
20210510 software design
Ayachika Kitazaki
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
Masahito Zembutsu
 
Linuxベースのシングルボード色々
Linuxベースのシングルボード色々Linuxベースのシングルボード色々
Linuxベースのシングルボード色々
Toshihisa Tanaka
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
Yoshiki Shibukawa
 
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
侑弥 濱田
 
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
Yoshifumi Yamaguchi
 
FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介
Recruit Technologies
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
Tomoya Kabe
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
 
4th tokushimaapp
4th tokushimaapp4th tokushimaapp
4th tokushimaapp
健一 辰濱
 
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナーWacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Caru Shi
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
 

Similar to Goraft and InfluxDB (12)

20210510 software design
20210510 software design20210510 software design
20210510 software design
 
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
 
Linuxベースのシングルボード色々
Linuxベースのシングルボード色々Linuxベースのシングルボード色々
Linuxベースのシングルボード色々
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
 
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
美乳とPHP7 on Docker - てきとうなさいと。べぇたばん
 
20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri20130824 Lightweight Language "Go" @LL matsuri
20130824 Lightweight Language "Go" @LL matsuri
 
FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介FluentdやNorikraを使った データ集約基盤への取り組み紹介
FluentdやNorikraを使った データ集約基盤への取り組み紹介
 
DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -DeNAインフラの今とこれから - 今編 -
DeNAインフラの今とこれから - 今編 -
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
4th tokushimaapp
4th tokushimaapp4th tokushimaapp
4th tokushimaapp
 
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナーWacode 忙しいバイオインフォマティシャンのための時短ワンライナー
Wacode 忙しいバイオインフォマティシャンのための時短ワンライナー
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
 

More from nobu_k

Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
nobu_k
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索
nobu_k
 
4th PFI System reading
4th PFI System reading4th PFI System reading
4th PFI System reading
nobu_k
 
Transactional Information Systems入門
Transactional Information Systems入門Transactional Information Systems入門
Transactional Information Systems入門
nobu_k
 
Riak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang ClientRiak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang Clientnobu_k
 
Suffix Array@Solr勉強会
Suffix Array@Solr勉強会Suffix Array@Solr勉強会
Suffix Array@Solr勉強会
nobu_k
 
第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング
nobu_k
 

More from nobu_k (8)

Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索
 
4th PFI System reading
4th PFI System reading4th PFI System reading
4th PFI System reading
 
Transactional Information Systems入門
Transactional Information Systems入門Transactional Information Systems入門
Transactional Information Systems入門
 
Riak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang ClientRiak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang Client
 
Paxos
PaxosPaxos
Paxos
 
Suffix Array@Solr勉強会
Suffix Array@Solr勉強会Suffix Array@Solr勉強会
Suffix Array@Solr勉強会
 
第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング
 

Recently uploaded

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 

Recently uploaded (10)

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 

Goraft and InfluxDB