Polly(Retry, Circuit Breaker, Timeout, Bulkhead, Fallback)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[クラウド設計パターン]]
--[[HttpClientの類の使い方>HttpClientの類の使い方#e8fa9d8...
* 目次 [#v98ce72f]
#contents
*概要 [#ud2f7581]
-「障害回復力のある一時的な障害処理ポリシー」を実装する。
-スレッドセーフかつ[[Fluent Interface>https://dotnetdevel...
*詳細 [#ce88942b]
以下のようなポリシーを組み合わせて実装できる。
**機能 [#o02265e3]
***Retry [#a3ac1e10]
-時間を空けて再実行する。
-[[Exponential Backoff(指数バックオフ)>#tf2880c4]]を併...
***Circuit Breaker [#v7858b6b]
設定で指定した回数のエラーが連続して発生した場合、Excepti...
***Timeout [#x2c67d83]
指定した時間が経過しても処理が終わらない場合、Exceptionを...
-悲観的タイムアウト
--通常のタイムアウト
--クライアント側なので処理を抜けるだけになる。
-楽観的タイムアウト
--悲観的タイムアウトでは、処理を抜けるだけになるが、
--楽観的タイムアウトでは、CancellationTokenによるキャンセ...
-参考
--Cancellation Token について調べてみる - Qiita~
https://qiita.com/TsuyoshiUshio@github/items/b2d23b37b410...
***Bulkhead Isolation [#hbaec99c]
-並列に実行可能なリクエスト数を制限する。
-コンシューマー・バルクヘッドとも呼ぶ。
-セマフォを使って 同時実行可能数を制限している。
***Fallback [#g1f2b2cf]
エラーが発生した場合に、最終的に返したい値は Fallback を...
***Cache [#l0817d8b]
Cacheを、他の Policy と組み合わせて柔軟に処理に組み込める。
***PolicyWrap [#p7330fec]
上記([[Retry>#a3ac1e10]], [[Circuit Breaker>#v7858b6b]],...
-PolicyWrap · App-vNext/Polly Wiki~
https://github.com/App-vNext/Polly/wiki/PolicyWrap
**見解 [#v08beee2]
***実装例 [#u188674d]
-ラッパーでも良いと思うが、[[DI]]の実装例が多い。
-更に[[クリーン・アーキテクチャ>https://dotnetdevelopment...
***実装箇所 [#e81e1274]
「障害回復力のある一時的な障害処理ポリシー」を実現する際...
-クライアント実装
--所詮、クライアント側実装ではある。
--サーバ実装で担保スべきところもありそうだ。
-サーバ実装~
クライアント実装ダケでは完結しない。
--[[クラウド設計パターンの調整(絞り弁)>クラウド設計パタ...
--Device FlowやCIBAの[[slow_downなど>CIBA(Client Initiate...
--[[API Gateway]]に流量制御してくれる機能があるのでコレを...
***利用シーン [#m0f30387]
-機能的に十分、足りてるんだろうけど、
--結局、書き直す。
--若しくは、ユースケース毎にラッパを作成する。
>ことになる気がする。
-なんとなく、
>この全ポリシーを組み合わす機会が少ない
>ので、ありがたみが少ない(その割に複雑な)気がする。
-ケースバイケース(オーバースペックにならないようにすべき)
--冒頭にも書いた「ユースケース毎にラッパ」に該当する、~
[[HttpClient>HttpClientの類の使い方]]をシングルトンにして...
[[HttpClientFactory>HttpClientの類の使い方#o8484df8]]にし...
--MAXは、クリーン・アーキテクチャ化だが、[[段階>https://d...
--また、Pollyのような、クライアント実装だけではなく、~
サーバ実装で担保スべきところもありそう。
*参考 [#r94a53e4]
-C# と Polly を使って回復力の高いアプリケーションを書く -...
https://blog.shibayan.jp/entry/20190102/1546425897
-Azure Function v2にHttpClientFactory+Pollyを組み込み、Ht...
https://qiita.com/HiroyukiSakoh/items/92d1365db6447bd64550
**NuGet [#z49816fb]
-Polly~
https://www.nuget.org/packages/Polly/
-Polly.Caching.MemoryCache~
https://www.nuget.org/packages/Polly.Caching.MemoryCache/
-Polly.Caching.Memory~
https://www.nuget.org/packages/Polly.Caching.Memory/
-Polly.Caching.Distributed~
https://www.nuget.org/packages/Polly.Caching.Distributed/
**Qiita [#k9a26dea]
-C#でPollyを使ったリトライ処理~
https://qiita.com/sat0tabe/items/e3656e712df4918cfdf1
-C# gRPC Polly でエラー制御を実装する~
https://qiita.com/mxProject/items/c18dafc59d8c186f59bc
**Microsoft Docs [#q6d26afb]
-Polly で指数バックオフを含む HTTP 呼び出しの再試行を実装...
https://docs.microsoft.com/ja-jp/dotnet/architecture/micr...
-Bulkhead pattern - Cloud Design Patterns~
https://docs.microsoft.com/en-us/azure/architecture/patte...
-Cache-Aside pattern - Cloud Design Patterns~
https://docs.microsoft.com/en-us/azure/architecture/patte...
**[[Exponential Backoff(指数バックオフ)]] [#tf2880c4]
----
Tags: [[:.NET開発]], [[:通信技術]], [[:.NET Standard]], [...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[クラウド設計パターン]]
--[[HttpClientの類の使い方>HttpClientの類の使い方#e8fa9d8...
* 目次 [#v98ce72f]
#contents
*概要 [#ud2f7581]
-「障害回復力のある一時的な障害処理ポリシー」を実装する。
-スレッドセーフかつ[[Fluent Interface>https://dotnetdevel...
*詳細 [#ce88942b]
以下のようなポリシーを組み合わせて実装できる。
**機能 [#o02265e3]
***Retry [#a3ac1e10]
-時間を空けて再実行する。
-[[Exponential Backoff(指数バックオフ)>#tf2880c4]]を併...
***Circuit Breaker [#v7858b6b]
設定で指定した回数のエラーが連続して発生した場合、Excepti...
***Timeout [#x2c67d83]
指定した時間が経過しても処理が終わらない場合、Exceptionを...
-悲観的タイムアウト
--通常のタイムアウト
--クライアント側なので処理を抜けるだけになる。
-楽観的タイムアウト
--悲観的タイムアウトでは、処理を抜けるだけになるが、
--楽観的タイムアウトでは、CancellationTokenによるキャンセ...
-参考
--Cancellation Token について調べてみる - Qiita~
https://qiita.com/TsuyoshiUshio@github/items/b2d23b37b410...
***Bulkhead Isolation [#hbaec99c]
-並列に実行可能なリクエスト数を制限する。
-コンシューマー・バルクヘッドとも呼ぶ。
-セマフォを使って 同時実行可能数を制限している。
***Fallback [#g1f2b2cf]
エラーが発生した場合に、最終的に返したい値は Fallback を...
***Cache [#l0817d8b]
Cacheを、他の Policy と組み合わせて柔軟に処理に組み込める。
***PolicyWrap [#p7330fec]
上記([[Retry>#a3ac1e10]], [[Circuit Breaker>#v7858b6b]],...
-PolicyWrap · App-vNext/Polly Wiki~
https://github.com/App-vNext/Polly/wiki/PolicyWrap
**見解 [#v08beee2]
***実装例 [#u188674d]
-ラッパーでも良いと思うが、[[DI]]の実装例が多い。
-更に[[クリーン・アーキテクチャ>https://dotnetdevelopment...
***実装箇所 [#e81e1274]
「障害回復力のある一時的な障害処理ポリシー」を実現する際...
-クライアント実装
--所詮、クライアント側実装ではある。
--サーバ実装で担保スべきところもありそうだ。
-サーバ実装~
クライアント実装ダケでは完結しない。
--[[クラウド設計パターンの調整(絞り弁)>クラウド設計パタ...
--Device FlowやCIBAの[[slow_downなど>CIBA(Client Initiate...
--[[API Gateway]]に流量制御してくれる機能があるのでコレを...
***利用シーン [#m0f30387]
-機能的に十分、足りてるんだろうけど、
--結局、書き直す。
--若しくは、ユースケース毎にラッパを作成する。
>ことになる気がする。
-なんとなく、
>この全ポリシーを組み合わす機会が少ない
>ので、ありがたみが少ない(その割に複雑な)気がする。
-ケースバイケース(オーバースペックにならないようにすべき)
--冒頭にも書いた「ユースケース毎にラッパ」に該当する、~
[[HttpClient>HttpClientの類の使い方]]をシングルトンにして...
[[HttpClientFactory>HttpClientの類の使い方#o8484df8]]にし...
--MAXは、クリーン・アーキテクチャ化だが、[[段階>https://d...
--また、Pollyのような、クライアント実装だけではなく、~
サーバ実装で担保スべきところもありそう。
*参考 [#r94a53e4]
-C# と Polly を使って回復力の高いアプリケーションを書く -...
https://blog.shibayan.jp/entry/20190102/1546425897
-Azure Function v2にHttpClientFactory+Pollyを組み込み、Ht...
https://qiita.com/HiroyukiSakoh/items/92d1365db6447bd64550
**NuGet [#z49816fb]
-Polly~
https://www.nuget.org/packages/Polly/
-Polly.Caching.MemoryCache~
https://www.nuget.org/packages/Polly.Caching.MemoryCache/
-Polly.Caching.Memory~
https://www.nuget.org/packages/Polly.Caching.Memory/
-Polly.Caching.Distributed~
https://www.nuget.org/packages/Polly.Caching.Distributed/
**Qiita [#k9a26dea]
-C#でPollyを使ったリトライ処理~
https://qiita.com/sat0tabe/items/e3656e712df4918cfdf1
-C# gRPC Polly でエラー制御を実装する~
https://qiita.com/mxProject/items/c18dafc59d8c186f59bc
**Microsoft Docs [#q6d26afb]
-Polly で指数バックオフを含む HTTP 呼び出しの再試行を実装...
https://docs.microsoft.com/ja-jp/dotnet/architecture/micr...
-Bulkhead pattern - Cloud Design Patterns~
https://docs.microsoft.com/en-us/azure/architecture/patte...
-Cache-Aside pattern - Cloud Design Patterns~
https://docs.microsoft.com/en-us/azure/architecture/patte...
**[[Exponential Backoff(指数バックオフ)]] [#tf2880c4]
----
Tags: [[:.NET開発]], [[:通信技術]], [[:.NET Standard]], [...
ページ名: