2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
水戸部章生氏:今までの話を振り返ると、Two Phase CommitはTSOを取得したり、リージョンの位置を把握したり、prewriteしたり、非常に何回もやり取りをするんだなと思いました。このような処理を改善すべく、2021年4月16日に新しいバージョンが出ました。TiDB 5.0では、これらの処理の高速化もサポートしています。
(スライドを指して)1つ目は非同期commitです。今までのcommitは、TSOは取得できますが、commitをするとprewriteをして、prewriteが終わるとまたcommit用のTSOを取得して、commit primaryを行ったらSuccessを返して、そのあとsecondaryのcommitが走るような流れでした。TiDB 5.0については、今回は紹介する時間がありません(笑)。
commit TSをどのようなロジックで設定しているか、別の機会で紹介できればと思います。prewriteをして確定すると、このデータはもう大丈夫ということで、commit処理を非同期で実施するので、ステップが1つ減ることになります。
そのほか、同じリージョンにだけデータを書き込む場合には、1PC、1Phase Commitで書き込む仕組みになっています。こちらは単純に、prewriteなしで1Phase Commitを行う仕組みによって、高速化を図っています。
また、TiDBはデフォルトでは悲観ロックになっています。もちろん他社のデータベースにはデフォルトでは悲観ロックになっているようなものもあるので、それらと合わせる意味もあります。また、先ほど話したとおり、CASやprewriteなどで実際にデータを書き込んだものの、ロックを取られていて元に戻さなければならない時には高負荷になってしまうので、先にロックを取得するような仕組みも使っています。
悲観ロックは、速くするためにいくつか技術的なことを行っています。1つは、メモリ上に2 Phase lockを置くこと。さらに、TiKVのnodeにコーディネーターの役割を持たせて、2PCブロックを回避することです。
(スライドを指して)簡単な図ですが、一番上にコーディネーターの動きがあります。下は、パーティシペーターです。最初にロックを取ったところでそれぞれのパーティシペーターが連絡をして、しっかり取り終わったあとにまた連絡を取り合うような流れで、回数を減らす動きをしています。
TiDBのロードマップも共有したいと思っています。TiDBはだいたい1年に1回くらいメジャーバージョンが上がっているので、たぶんこのTiDB 6.0も2022年には出るのではないかなと思っていますが(笑)。日々改善しているようなプロダクトです。
TiDB 6.0では、MySQL 8.0のCompatibilityを取る予定です。また、Cross-region deployment。複数のリージョンをまたいでやっていますが、TiDB 6.0では大阪のアクセスは大阪だけ、東京のアクセスは東京だけといった処理ができるようなデプロイメントもやろうとしています。
ほかにPoint-in-Time-Recoveryです。PiTRやDistributed bulk data importingのような機能も鋭意開発している状況です。(スライドを指して)一応ロードマップを示しますが、計画が変わる可能性もあるので、現状の共有として見ておいてもらえたらと思います。
最後におまけとして、AWS上での東京・大阪+ソウルの分散配置を少し試してみました。NewSQLなので先ほど話した地球規模まではいけませんでしたが、アジア規模でやってみました(笑)。
私たちのTiDBはAWSでインスタンスを生成して、デプロイが非常に簡単になっています。tiupコマンドで作ったyamlを読み込むと、すぐにインスタンスが作成されて稼働できるという2ステップで作っています。
今回のストアの配置は、大阪リージョンにTiKVと呼ばれるRaftのデータ置き場を3つ、東京リージョンに3つ、ソウルリージョンに1つとなっています。3つのコピーなので、それぞれのデータがしっかり分散されるような仕組みで置いています。
(スライドを指して)東京側に負荷をかけるインスタンスを生成して、この負荷だけを行ってみました。実際やってみると、少しレイテンシーが高くなっています。95パーセントタイルで89ミリセクです。99.9パーセントタイルでは252ミリセクになっていますが、今回はソウルリージョンにもリーダーを配置してしまっています。
今回は東京・大阪間だけでしっかりできるというコンセンサスのためなので、偶数でTiKVを置くとコンセンサスでは過半数が取れないため、ソウルリージョンにだけ1台置いて、そこにはリーダーを置かず、アクセスをしないようにしようと思いました(笑)。しかし、間違ってリーダーも配置してしまったので、89ミリセクと少し高めになっています。
東京・大阪だけでリーダーを配置すると40ミリや30ミリセクくらいになるので、サービスでもけっこう使えるのではないかと思えるくらいのレイテンシーだと思っています。
そして、実際に大阪に落としました。特に大阪がどうというわけではありませんが、たまたま大阪のリージョンの画面を開いていたので(笑)。
実際にリージョンを落としてみたいと思いますが、それはできないので、強制的にインスタンスを落としてみました。その結果、私たちのTiDBのRaftはリーダーのポイントが20秒で移動するようになっています。決して20秒間トランザクションを止めるわけではなく、20秒待機するようなかたちです。
(スライドを指して)上の図がCPUです。下の3つは大阪にあったTiKVノードが落ちているので、右側がなくなっています。一気にCPUが下がって、残りが上がってくる。下の図はTiKVの中にあるリーダーです。リーダーの配置がどうなるか。100個くらいあったリーダーがインスタンスを停止したことによりすべて落ちて、20秒後にほかのリージョンに移動しました。リーダーが移動したことによって、サービスはそのまま継続できます。
トランザクションはエラーなく稼働しているので、TPCC上ではまったくエラーのない状態でした。このようにNewSQLを使うと、新しいデータの置き方もできるのではないかと思っています。
私から、TiDBがどのような製品か、どのようなトランザクション処理ができるのかを簡単に紹介しました。そして、次のパートも私から始まります(笑)。ここからはPingCAP社として、私たちの製品を少し紹介して売り込もうと思っています。
私たちPingCAPは、製品やプロジェクトを複数持っています。(スライドを指して)こちらは、横軸にサービス型とサブスクリプション型、縦軸にそれぞれのプロダクトと分けて示しています。
左上がNewSQLで、「TiDB Cloud」というクラウド型データベース、フルマネージドサービスを提供しています。今はAWSとGCPの2つはフルマネージドサービスとして提供し、Azureは年内の提供を予定しています。他社のフルマネージドと同じくエンドポイント、つまり、お客さまに渡しても基本的なインフラ部分は私たちが管理する渡し方になります。
また、今紹介したTiDB Cloudの中に入っているTiDB分散型データベースも、通常のプロダクト、製品として出しています。もちろんオープンソースなので、お客さんがダウンロードして使うことも可能です。
NewSQLの中のKey-Valueストアのキーコンポーネント、ACIDサポートをしている「TiKV」と呼ばれるKey-Valueストアも製品として出しています。こちらはCNCFに寄贈しているプロジェクトですが、すでにGraduated Projectという成熟したプロダクトとして認定を受けています。スターも27,000くらい獲得した、非常に勢いのあるKVSだと思っています。
また、CNCFに参画しているので、Kubernetesをはじめ、Podが落ちたとしてもしっかりサービスを継続できます。ネットワークのスピリットを切る、CPUの負荷が上がってくる、メモリ使い切ったなどのシミュレートをするためのカオスエンジニアリングツールも出しています。「Chaos Mesh」と呼ばれるものですが、こちらも使用が可能です。
また、Chaos MeshとTiDB連携してTiPocketと呼ばれるものを作り、相互に連携しています。TiDBのリリースや何かしら不具合があった時のチェックにも、カオスエンジニアリングを使ってTiDBの品質を担保する取り組みを行っています。
さらに、TiDBエコシステムとして、移行・バックアップ・モニタリングツールも非常に充実しています。アップストリーム、ダウンストリームでBinlogを読み込んでTiDBに使わせるほか、Grafanaなどで監視し、TiDB OperatorをKubernetesタイアップでデプロイしています。
そのほか、インターフェイスとしてはSpark SQLもサポートしているので、ぜひお願いします。
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05