【さーきっとぶれーかー】
サーキットブレーカー とは?
💡 障害の連鎖を防ぐ「電気ブレーカーのような安全装置」
📌 このページのポイント
サーキットブレーカーって何のためにあるの?
マイクロサービスで「Aが遅いBを呼び続けて→Aも詰まって→Aを呼んでいるCも詰まって」という連鎖障害が起きることがある。サーキットブレーカーは障害中のBへのリクエストを自動で遮断するから、Aが巻き込まれずに済むんだよ。
遮断するって、エラーを返すってこと?
そう。Bが障害中のとき、Bにリクエストを送ってタイムアウトを待つ代わりに、即座に「サービス利用不可」エラーを返す。待ち時間がゼロになるから、Aの処理が詰まらなくて済むんだ。
ずっと遮断したままだと復旧したBにアクセスできないよね?
そこがブレーカーの賢いところで、Closed(通常)→Open(遮断)→Half-Open(試験)という3つの状態を持つんだ。遮断後しばらくしたら「Half-Open」状態でごく少量のリクエストを通してみて、成功したらClosedに戻す。失敗したらまたOpenに戻るんだよ。
サーキットブレーカーの「エラー率の閾値」ってどう決めるの?低すぎると正常なエラーで遮断されそうだし、高すぎると障害に気づくのが遅れそう。
まとめ:ざっくりこれだけ覚えればOK!
「サーキットブレーカー」って出てきたら「障害中のサービスへの通信を自動遮断して連鎖障害を防ぐ仕組みのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Circuit Breaker」 = 電気回路の「遮断器(ブレーカー)」
💬 家の電気ブレーカーと同じ発想。過電流が流れたら自動で回路を遮断して火事を防ぐ、という仕組みをソフトウェアに応用したよ