1"use strict";(self.webpackChunkarmeria_site=self.webpackChunkarmeria_site||[]).push([["3785"],{24542(e,r,i){i.r(r),i.d(r,{assets:()=>d,contentTitle:()=>s,default:()=>o,frontMatter:()=>l,metadata:()=>n,toc:()=>a});var n=i(75614),t=i(74848),c=i(28453);let l={authors:["shinjonghun"],other_languages:{en:"/blog/2016/08/04/applying-circuitbreaker-to-channel-gateway",ko:"/blog/ko/2016/08/04/applying-circuitbreaker-to-channel-gateway"}},s="\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u3078\u306ECircuitBreaker\u306E\u9069\u7528",d={authorsImageUrls:[void 0]},a=[{value:"\u306F\u3058\u3081\u306B",id:"\u306F\u3058\u3081\u306B",level:2},{value:"\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306BCircuitBreaker\u3092\u9069\u7528\u3059\u308B",id:"\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306Bcircuitbreaker\u3092\u9069\u7528\u3059\u308B",level:2},{value:"CircuitBreaker\u306E\u30A2\u30CE\u30C6\u30FC\u30B7\u30E7\u30F3\u306E\u4F7F\u7528",id:"circuitbreaker\u306E\u30A2\u30CE\u30C6\u30FC\u30B7\u30E7\u30F3\u306E\u4F7F\u7528",level:2},{value:"CircuitBreaker\u306B\u304A\u3051\u308Bproceed()\u306E\u5B9F\u88C5",id:"circuitbreaker\u306B\u304A\u3051\u308Bproceed\u306E\u5B9F\u88C5",level:2},{value:"CircuitBreaker\u306E\u8A2D\u5B9A\u5909\u66F4\u30E1\u30BD\u30C3\u30C9",id:"circuitbreaker\u306E\u8A2D\u5B9A\u5909\u66F4\u30E1\u30BD\u30C3\u30C9",level:2},{value:"\u307E\u3068\u3081",id:"\u307E\u3068\u3081",level:2},{value:"\u4F5C\u6210\u8005\u306E\u7D39\u4ECB",id:"\u4F5C\u6210\u8005\u306E\u7D39\u4ECB",level:2}];function u(e){let r={a:"a",code:"code",em:"em",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,c.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.h2,{id:"\u306F\u3058\u3081\u306B",children:"\u306F\u3058\u3081\u306B"}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"/blog/ja/2016/07/14/circuit-breakers-for-distributed-services",children:"Circuit Breaker\u306E\u7D39\u4ECB\u8A18\u4E8B"}),"\u3092\u5148\u306B\u8AAD\u3080\u3053\u3068\u3092\u63A8\u5968\u3057\u307E\u3059\u3002"]}),"\n",(0,t.jsx)(r.h2,{id:"\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306Bcircuitbreaker\u3092\u9069\u7528\u3059\u308B",children:"\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306BCircuitBreaker\u3092\u9069\u7528\u3059\u308B"}),"\n",(0,t.jsx)(r.p,{children:"\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u30B5\u30FC\u30D0\u306F\u3001LINE\u306E\u591A\u69D8\u306A\u30B5\u30FC\u30D0\u306E\u6A5F\u80FD\u3092CP(Contents Provider)\u306B\u63D0\u4F9B\u3059\u308B\u5F79\u5272\u3092\u62C5\u3063\u3066\u3044\u307E\u3059\u3002\u305D\u306E\u305F\u3081\u3001\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u30B5\u30FC\u30D0\u306F\u63A5\u7D9A\u3055\u308C\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306B\u5927\u304D\u304F\u5F71\u97FF\u3055\u308C\u307E\u3059\u3002\u306A\u304A\u3001\u305D\u3046\u3057\u305F\u5F71\u97FF\u306F\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u30B5\u30FC\u30D0\u5168\u4F53\u306B\u5BB9\u6613\u306B\u62E1\u6563\u3057\u307E\u3059\u3002"}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.img,{src:i(17342).A+"",width:"870",height:"328"})}),"\n","\n",(0,t.jsx)(r.p,{children:"\u3053\u306E\u554F\u984C\u306E\u89E3\u6C7A\u306B\u60A9\u3093\u3067\u3044\u305F\u3068\u3053\u308D\u3001CircuitBreaker\u306B\u95A2\u3059\u308B\u5185\u5BB9\u3092\u805E\u304D\u307E\u3057\u305F\u3002\u7279\u5B9A\u306E\u30B5\u30FC\u30D0\u306B\u969C\u5BB3\u304C\u767A\u751F\u3057\u305F\u5834\u5408\u3001CircuitBreaker\u304C\u305D\u308C\u3092\u691C\u77E5\u3057\u3066\u305D\u306E\u30B5\u30FC\u30D0\u306B\u6295\u3052\u3089\u308C\u308B\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u906E\u65AD\u3059\u308C\u3070\u3001\u554F\u984C\u3092\u5341\u5206\u89E3\u6C7A\u3067\u304D\u308B\u3068\u601D\u3044\u307E\u3057\u305F\u3002\u305D\u306E\u305F\u3081\u3001\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306BCircuitBreaker\u3092\u9069\u7528\u3059\u308B\u3053\u3068\u3092\u6C7A\u3081\u307E\u3057\u305F\u3002"}),"\n",(0,t.jsxs)(r.p,{children:["\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u7528\u306ECircuitBreaker\u3092\u76F4\u63A5\u5B9F\u88C5\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3057\u305F\u304C\u3001",(0,t.jsx)(r.a,{href:"http://line.github.io/armeria/",children:"Armeria"}),"\u306B\u3059\u3067\u306B\u898B\u4E8B\u306ACircuit Breaker\u304C\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u3057\u305F\u3002Armeria\u306ECircuitBreaker\u306F\u3001\u69D8\u3005\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u30CB\u30FC\u30BA\u306B\u5408\u308F\u305B\u3066\u8A2D\u5B9A\u3057\u3001",(0,t.jsx)(r.code,{children:"CircuitBreakerBuilder"}),"\u3067\u5B9F\u88C5\u3055\u308C\u305FCircuitBreaker\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u5F97\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3088\u3063\u3066\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306B\u5408\u308F\u305B\u3066\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u3063\u3066\u3044\u308B\u306E\u3067\u3001\u7C21\u5358\u306B\u9069\u7528\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3057\u305F\u3002"]}),"\n",(0,t.jsx)(r.h2,{id:"circuitbreaker\u306E\u30A2\u30CE\u30C6\u30FC\u30B7\u30E7\u30F3\u306E\u4F7F\u7528",children:"CircuitBreaker\u306E\u30A2\u30CE\u30C6\u30FC\u30B7\u30E7\u30F3\u306E\u4F7F\u7528"}
1),"\n",(0,t.jsxs)(r.p,{children:["talk-channel-gateway\u30BD\u30FC\u30B9\u30B3\u30FC\u30C9\u306B\u304A\u3044\u3066CircuitBreaker\u306F\u3001",(0,t.jsx)(r.code,{children:"@CircuitBreakable"}),"\u30A2\u30CE\u30C6\u30FC\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u9069\u7528\u3067\u304D\u307E\u3059\u3002"]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{children:"@CircuitBreakable(CircuitBreakerGroup.HBASE_CLIENT_USER_SETTINGS)\npublic ChannelSettings findBy(String mid) {\n ...\n}\n"})}),"\n",(0,t.jsxs)(r.p,{children:["\u4E0A\u8A18\u306E\u3088\u3046\u306B\u9069\u7528\u3057\u305F\u5834\u5408\u3001",(0,t.jsx)(r.code,{children:"findBy()"}),"\u30E1\u30BD\u30C3\u30C9\u304C\u547C\u3073\u51FA\u3055\u308C\u308B\u5EA6\u306B\u6210\u529F/\u5931\u6557\u3092\u76E3\u8996\u3057\u3001\u305D\u306E\u7D50\u679C\u306B\u3088\u3063\u3066CircuitBreaker\u304C\u958B\u9589\u3057\u307E\u3059\u3002HBASE_CLIENT_USER_SETTINGS\u306FCircuitBreaker\u3067\u675F\u306D\u308B\u30B0\u30EB\u30FC\u30D7\u3092\u6307\u5B9A\u3059\u308B\u3082\u306E\u3067\u3001\u5404\u30E1\u30BD\u30C3\u30C9\u306E\u5931\u6557\u7387\u3092\u8A08\u7B97\u3059\u308B\u969B\u3082\u30B0\u30EB\u30FC\u30D7\u5168\u4F53\u306E\u547C\u3073\u51FA\u3057\u56DE\u6570\u306B\u5BFE\u3059\u308B\u5931\u6557\u56DE\u6570\u3067\u8A08\u7B97\u3057\u3001CircuitBreaker\u306E\u958B\u9589\u6642\u3082\u4E00\u7DD2\u306B\u958B\u9589\u3057\u307E\u3059\u3002"]}),"\n",(0,t.jsxs)(r.p,{children:["CircuitBreaker\u306E\u8A2D\u5B9A\u306F\u3001",(0,t.jsx)(r.code,{children:"CircuitBreakerGroup"}),"\u3068\u3044\u3046enum\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u6B21\u306E\u3088\u3046\u306B\u8A2D\u5B9A\u3067\u304D\u307E\u3059\u3002"]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{children:"public enum CircuitBreakerGroup implements ExceptionFilter {\n SAMPLE_DEFAULT {\n },\n SAMPLE_API {\n @Override\n protected ExceptionFilter exceptionFilter() {\n return cause -> !(cause instanceof AuthenticationException\n || cause instanceof ApiPermissionException\n || cause instanceof ImproperRequestException);\n }\n },\n HBASE_CLIENT_CHANNEL_MATRIX {\n },\n HBASE_CLIENT_USER_SETTINGS {\n };\n\n protected ExceptionFilter exceptionFilter() {\n return cause -> true;\n }\n\n public CircuitBreaker circuitBreaker(CircuitBreakerListener listener) {\n return new `CircuitBreakerBuilder`(name()).exceptionFilter(exceptionFilter())\n .listener(listener)\n .build();\n }\n\n @Override\n public boolean shouldDealWith(Throwable throwable) throws Exception {\n return exceptionFilter().shouldDealWith(throwable);\n }\n}\n"})}),"\n",(0,t.jsxs)(r.p,{children:["\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u3067\u306F",(0,t.jsx)(r.code,{children:"ExceptionFilter"}),"\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3057\u3066\u4F7F\u7528\u3057\u307E\u3057\u305F\u3002\u305D\u308C\u4EE5\u5916\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u3001Armeria\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3057\u307E\u3057\u305F\u3002\u3082\u3057\u3001\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u5909\u66F4\u3057\u3066\u4F7F\u3044\u305F\u3044\u5834\u5408\u306F\u3001",(0,t.jsx)(r.code,{children:"circuitBreaker()"}),"\u30E1\u30BD\u30C3\u30C9\u3092\u4FEE\u6B63\u3057\u3066\u4F7F\u7528\u3067\u304D\u308B\u3067\u3057\u3087\u3046\u3002"]}),"\n",(0,t.jsxs)(r.p,{children:["Armeria\u3067\u306F\u3001\u3069\u3093\u306A\u3082\u306E\u3067\u3042\u3063\u3066\u3082Exception\u304C\u767A\u751F\u3057\u305F\u5834\u5408\u306F\u57FA\u672C\u7684\u306B\u5931\u6557\u3068\u307F\u306A\u3059\u3088\u3046\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u3057\u304B\u3057\u3001\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u3067\u306F\u3001\u6A29\u9650\u304C\u306A\u3044\u5834\u5408\u306A\u3069\u3092Exception\u3068\u3057\u3066\u51E6\u7406\u3057\u3066\u8FD4\u3059\u306E\u3067\u3001\u305D\u308C\u3092\u533A\u5206\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3057\u305F\u3002\u305D\u306E\u305F\u3081\u3001",(0,t.jsx)(r.code,{children:"ExceptionFilter"}),"\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3057\u3066\u4F7F\u7528\u3057\u307E\u3057\u305F\u3002\u305D\u3057\u3066\u3001CircuitBreaker\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u5909\u308F\u308B\u5EA6\u306B\u30ED\u30B0\u3092\u84C4\u7A4D\u3067\u304D\u308B\u3088\u3046\u306B\u3001\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306E\u305F\u3081\u306EListener\u3082\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002"]}),"\n",(0,t.jsx)(r.p,{children:"\u30A2\u30CE\u30C6\u30FC\u30B7\u30E7\u30F3\u306B\u9069\u7528\u3059\u308B\u30B0\u30EB\u30FC\u30D7\u306Fenum\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u6307\u5B9A\u3067\u304D\u3001enum\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u5B9F\u88C5\u90E8\u306B\u304A\u3044\u3066\u30B0\u30EB\u30FC\u30D7\u3054\u3068\u306B\u8A2D\u5B9A\u3092\u5909\u3048\u3089\u308C\u308B\u3088\u3046\u306B\u3057\u307E\u3057\u305F\u3002"}),"\n",(0,t.jsx)(r.h2,{id:"circuitbreaker\u306B\u304A\u3051\u308Bproceed\u306E\u5B9F\u88C5",children:"CircuitBreaker\u306B\u304A\u3051\u308Bproceed()\u306E\u5B9F\u88C5"}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.a,{href:"https://en.wikipedia.org/wiki/AspectJ",children:"Aspect"})," \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E",(0,t.jsx)(r.code,{children:"proceed()"}),"\u30B3\u30FC\u30C9\u306F\u4EE5\u4E0B\u306E\u3068\u304A\u308A\u3067\u3059\u3002"]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{children:"public class CircuitBreakerAspect implements Ordered {\n\n private final Map<CircuitBreakerGroup, CircuitBreaker>\n circuitBreakers = new EnumMap<>(CircuitBreakerGroup.class);\n\n @PostConstruct\n public void initialize() {\n\n final CircuitBreakerListener listener = new\n CircuitBreakerListenerImpl(circuitBreakerLogger);\n for (CircuitBreakerGroup group : CircuitBreakerGroup.values()) {\n circuitBreakers.put(group, group.circuitBreaker(listener));\n }\n }\n\n public Object proceed(final ProceedingJoinPoint pjp, final CircuitBreakable\n circuitBreakable) throws Throwable {\n\n final CircuitBreakerGroup group = cir
1cuitBreakable.value();\n final CircuitBreaker circuitBreaker = circuitBreakers.get(group);\n\n if (circuitBreaker.canRequest()) {\n final Object result;\n\n try {\n result = pjp.proceed();\n } catch (Throwable e) {\n if (group.shouldDealWith(e)) {\n circuitBreaker.onFailure(e);\n } else {\n circuitBreaker.onSuccess();\n }\n throw e;\n }\n\n circuitBreaker.onSuccess();\n return result;\n } else {\n throw CircuitBreakerException.circuitBroken();\n }\n }\n}\n"})}),"\n",(0,t.jsxs)(r.p,{children:["\u30B3\u30FC\u30C9\u306F\u6BD4\u8F03\u7684\u306B\u7C21\u5358\u3067\u3059\u3002",(0,t.jsx)(r.code,{children:"CircuitBreaker.canRequest()"}),"\u306B\u3088\u3063\u3066CircuitBreaker\u304C\u958B\u653E\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306F\u3001Exception\u3092\u767A\u751F\u3055\u305B\u307E\u3059\u3002\u305D\u3046\u3067\u306A\u3044\u5834\u5408\u306F\u3001\u30E1\u30BD\u30C3\u30C9\u3092\u6B63\u5E38\u306B\u547C\u3073\u51FA\u3057\u307E\u3059\u3002\u547C\u3073\u51FA\u3057\u305F\u7D50\u679CException\u304C\u767A\u751F\u3057\u3001\u305D\u306EException\u3092\u5931\u6557\u3068\u3057\u3066\u51E6\u7406\u3059\u3079\u304D\u5834\u5408\u306F\u3001CircuitBreaker\u306B\u5931\u6557\u3057\u305F\u3068\u77E5\u3089\u305B\u307E\u3059\u3002\u305D\u3046\u3067\u306A\u3044\u5834\u5408\u306F\u3001CircuitBreaker\u306B\u6210\u529F\u3057\u305F\u3068\u77E5\u3089\u305B\u308B\u3060\u3051\u3067\u6E08\u307F\u307E\u3059\u3002"]}),"\n",(0,t.jsx)(r.p,{children:"\u3061\u306A\u307F\u306B\u3001\u5B9F\u969B\u306B\u9069\u7528\u3057\u305F\u30B3\u30FC\u30C9\u306B\u306FCircuitBreaker\u304C\u6B63\u3057\u304F\u9069\u7528\u3055\u308C\u305F\u304B\u3069\u3046\u304B\u3092\u78BA\u8A8D\u3059\u308B\u305F\u3081\u306BIMON Logger\u203B\u6CE8\u3068\u95A2\u9023\u3059\u308B\u30B3\u30FC\u30C9\u304C\u5165\u3063\u3066\u3044\u307E\u3059\u3002\u3057\u304B\u3057\u3001\u3053\u3053\u3067\u306FCircuitBreaker\u90E8\u5206\u306B\u96C6\u4E2D\u3067\u304D\u308B\u3088\u3046\u306B\u7701\u7565\u3057\u307E\u3057\u305F\u3002"}),"\n",(0,t.jsx)(r.p,{children:"\u203B\u6CE8\uFF1AIMON\u306F\u3001\u793E\u5185\u306E\u591A\u69D8\u306A\u30B5\u30FC\u30D3\u30B9\u3092\u30E2\u30CB\u30BF\u30EA\u30F3\u30B0\u3059\u308B\u305F\u3081\u306E\u30B7\u30B9\u30C6\u30E0\u3067\u3059\u3002IMON Logger\u306F\u3001\u5BFE\u8C61\u30B5\u30FC\u30D3\u30B9\u306E\u7D71\u8A08\u6307\u6A19\u3068\u30ED\u30B0\u3092\u53D6\u308A\u307E\u3068\u3081\u3066IMON\u306B\u9001\u308B\u6A5F\u80FD\u3092\u679C\u305F\u3057\u3066\u3044\u307E\u3059\u3002"}),"\n",(0,t.jsx)(r.h2,{id:"circuitbreaker\u306E\u8A2D\u5B9A\u5909\u66F4\u30E1\u30BD\u30C3\u30C9",children:"CircuitBreaker\u306E\u8A2D\u5B9A\u5909\u66F4\u30E1\u30BD\u30C3\u30C9"}),"\n",(0,t.jsxs)(r.p,{children:["CircuitBreaker\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u4F5C\u3063\u3066\u304F\u308C\u308B",(0,t.jsx)(r.code,{children:"CircuitBreakerBuilder"}),"\u306F\u3001CircuitBreaker\u306E\u8A2D\u5B9A\u3092\u5909\u66F4\u3067\u304D\u308B\u69D8\u3005\u306A\u30E1\u30BD\u30C3\u30C9\u3092\u63D0\u4F9B\u3057\u3066\u3044\u307E\u3059\u3002\u306A\u308B\u3079\u304F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u8A2D\u5B9A\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u63A8\u5968\u3057\u307E\u3059\u304C\u3001CircuitBreaker\u306E\u8A2D\u5B9A\u306B\u3064\u3044\u3066\u3001\u3082\u3063\u3068\u5206\u304B\u308A\u3084\u3059\u304F\u8AAC\u660E\u3057\u3066\u304A\u304D\u305F\u3044\u3068\u601D\u3044\u307E\u3059\u3002"]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Method"}),(0,t.jsx)(r.th,{children:"Parameter"}),(0,t.jsx)(r.th,{children:"Default"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"failureRateThreshold"}),(0,t.jsx)(r.td,{children:"double"}),(0,t.jsx)(r.td,{children:"0.8"}),(0,t.jsxs)(r.td,{children:["CircuitBreaker\u306E\u958B\u9589\u3092\u5224\u65AD\u3059\u308B\u969B\u306B\u4F7F\u7528\u3059\u308B\u305F\u3081\u306E\u5931\u6557\u7387\u3067\u3059\u3002",(0,t.jsx)(r.code,{children:"counterSlidingWindow"}),"\u671F\u9593\u4E2D\u306E\u5931\u6557\u7387\u304C\u3053\u306E\u5024\u3092\u4E0A\u56DE\u308B\u5834\u5408\u306FCircuitBreaker\u304C\u958B\u653E\u3055\u308C\u307E\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3059\u308B\u5834\u5408\u300180%\u4EE5\u4E0A\u5931\u6557\u3059\u308B\u3068CircuitBreaker\u304C\u958B\u653E\u3055\u308C\u307E\u3059\u3002\u3064\u307E\u308A\u3001\u6210\u529F\u7387\u304C20%\u672A\u6E80\u306A\u3089CircuitBreaker\u304C\u958B\u653E\u3055\u308C\u308B\u308F\u3051\u3067\u3059\u3002"]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"minimumRequestThreshold"}),(0,t.jsx)(r.td,{children:"long"}),(0,t.jsx)(r.td,{children:"10"}),(0,t.jsxs)(r.td,{children:["CircuitBreaker\u3092\u958B\u9589\u3092\u5224\u65AD\u3059\u308B\u305F\u3081\u306E\u6700\u4F4E\u547C\u3073\u51FA\u3057\u56DE\u6570\u3067\u3059\u3002",(0,t.jsx)(r.code,{children:"counterSlidingWindow"}),"\u671F\u9593\u4E2D\u306E\u547C\u3073\u51FA\u3057\u56DE\u6570\u304C\u3053\u306E\u5024\u3092\u4E0B\u56DE\u308B\u5834\u5408\u306F CircuitBreaker\u306E\u958B\u9589\u3092\u5224\u65AD\u3057\u307E\u305B\u3093\u3002"]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"circuitOpenWindow"}),(0,t.jsx)(r.td,{children:"Duration"}),(0,t.jsx)(r.td,{children:"10 seconds"}),(0,t.jsxs)(r.td,{children:["CircuitBreaker\u304COpen\u72B6\u614B\u306B\u306A\u3063\u3066\u304B\u3089Half-Open\u72B6\u614B\u306B\u5909\u308F\u308B\u307E\u3067\u306E\u6642\u9593\u3067\u3059\u3002CircuitBreaker\u306E\u958B\u653E\u5F8C\u306F\u3001",(0,t.jsx)(r.code,{children:"circuitOpenWindow"}),"\u671F\u9593\u3060\u3051\u306E\u6642\u9593\u304C\u904E\u304E\u3066\u304B\u3089Half-Open\u72B6\u614B\u306B\u5909\u308F\u308A\u3001\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u30C6\u30B9\u30C8\u3057\u307E\u3059\u3002"]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"circuitOpenWindowMillis"}),(0,t.jsx)(r.td,{children:"long"}),(0,t.jsx)(r.td,{children:"10000"}),(0,t.jsx)(r.td,{})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"trialRequestInterval"}),(0,t.jsx)(r.td,{children:"Duration"}),(0,t.jsx)(r.td,{children:"3 seconds"}),(0,t.jsxs)(r.td,{children:["Half-Open\u72B6\u614B\u3067\u6295\u3052\u305F\u30EA\u30AF\u30A8\u30B9\u30C8\u304CClosed\u5FDC\u7B54\u3092\u8FD4\u3055\u306A\u304B\u3063\u305F\u5834\u5408\u3001\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u30EA\u30C8\u30E9\u30A4\u3059\u308B\u305F\u3081\u306E\u5F85\u3061\u6642\u9593\u3067\u3059\u3002",(0,t.jsx)(r.code,{children:"trialRequestInterval"}),"\u6642\u9593\u4EE5\u5185\u306B\u5FDC\u7B54\u304C\u8FD4\u3063\u3066\u304D\u305F\u5834\u5408\u306F\u3001\u305D\u306E\u7D50\u679C\u306B\u3088\u3063\u3066Closed\u307E\u305F\u306FOpe
1n\u72B6\u614B\u306B\u5909\u308F\u308A\u307E\u3059\u3002\u3082\u3057\u3001Open\u72B6\u614B\u306B\u306A\u3063\u305F\u5834\u5408\u306F\u3001\u518D\u5EA6",(0,t.jsx)(r.code,{children:"circuitOpenWindow"}),"\u671F\u9593\u3060\u3051\u5F85\u6A5F\u3057\u3066\u304B\u3089\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u30C6\u30B9\u30C8\u3057\u307E\u3059\u3002\u3057\u304B\u3057\u3001\u6295\u3052\u305F\u30EA\u30AF\u30A8\u30B9\u30C8\u304C",(0,t.jsx)(r.code,{children:"trialRequestInterval"}),"\u671F\u9593\u4E2D\u306B\u4F55\u3082\u5FDC\u7B54\u3082\u8FD4\u3055\u306A\u304B\u3063\u305F\u5834\u5408\u3001\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u30EA\u30C8\u30E9\u30A4\u3057\u307E\u3059\u3002"]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"trialRequestIntervalMillis"}),(0,t.jsx)(r.td,{children:"long"}),(0,t.jsx)(r.td,{children:"3000"}),(0,t.jsx)(r.td,{})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"counterSlidingWindow"}),(0,t.jsx)(r.td,{children:"Duration"}),(0,t.jsx)(r.td,{children:"20 seconds"}),(0,t.jsxs)(r.td,{children:["CircuitBreaker\u306E\u958B\u9589\u3092\u5224\u65AD\u3059\u308B\u969B\u3001\u6700\u8FD1\u306E",(0,t.jsx)(r.code,{children:"counterSlidingWindow"}),"\u671F\u9593\u5206\u306E\u8A18\u9332\u3092\u3082\u3063\u3066\u5224\u65AD\u3057\u307E\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3059\u308C\u3070\u3001\u3053\u305320\u79D2\u9593\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u7D50\u679C\u3060\u3051\u3067\u5224\u65AD\u3059\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002"]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"counterSlidingWindowMillis"}),(0,t.jsx)(r.td,{children:"long"}),(0,t.jsx)(r.td,{children:"20000"}),(0,t.jsx)(r.td,{})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"counterUpdateInterval"}),(0,t.jsx)(r.td,{children:"Duration"}),(0,t.jsx)(r.td,{children:"1 second"}),(0,t.jsxs)(r.td,{children:["CircuitBreaker\u3067\u306F\u3001\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u7D50\u679C\u3092",(0,t.jsx)(r.code,{children:"SlidingWindowCounter"}),"\u306B\u3088\u3063\u3066\u4FDD\u7BA1\u3057\u3066\u3044\u307E\u3059\u304C\u3001\u3053\u3053\u3067\u4FDD\u7BA1\u3059\u308B\u5358\u4F4D\u3068\u306A\u308B\u6642\u9593\u3092\u610F\u5473\u3057\u307E\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3059\u308B\u3068\u30011\u79D2\u5358\u4F4D\u3067\u8A18\u9332\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u4F8B\u3048\u3070\u3001\u3053\u305320\u79D2\u524D=\u6210\u529F20\u56DE\u3001\u5931\u65570\u56DE / \u3053\u305319\u79D2\u524D=\u6210\u529F25\u56DE\u3001\u5931\u65571\u56DE / \u2026 / \u3053\u30531\u79D2\u524D=\u6210\u529F21\u56DE\u3001\u5931\u65570\u56DE\u306A\u3069\u306E\u8A18\u9332\u3092\u4FDD\u6301\u3057\u307E\u3059\u3002\u3053\u306E1\u79D2\u5358\u4F4D\u306E\u8A18\u9332\u3067",(0,t.jsx)(r.code,{children:"counterSlidingWindow"}),"\u671F\u9593\u5206\u3092\u8A08\u7B97\u3057\u3001\u5931\u6557\u7387\u3092\u51FA\u3057\u307E\u3059\u3002"]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"counterUpdateIntervalMillis"}),(0,t.jsx)(r.td,{children:"long"}),(0,t.jsx)(r.td,{children:"1000"}),(0,t.jsx)(r.td,{})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"exceptionFilter"}),(0,t.jsx)(r.td,{children:"ExceptionFilter"}),(0,t.jsx)(r.td,{children:"\u3059\u3079\u3066\u306EException\u3092\u5931\u6557\u3068\u3057\u3066\u307F\u306A\u3059"}),(0,t.jsx)(r.td,{children:"Exception\u304C\u767A\u751F\u3057\u305F\u5834\u5408\u3001\u305D\u306EException\u3092\u5931\u6557\u3068\u3057\u3066\u307F\u306A\u3059\u304B\u3069\u3046\u304B\u3092\u8FD4\u3059\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3059\u308C\u3070\u3001\u3059\u3079\u3066\u306EException\u3092\u5931\u6557\u3068\u307F\u306A\u3057\u307E\u3059\u3002"})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"listener"}),(0,t.jsx)(r.td,{children:"CircuitBreakerListener"}),(0,t.jsx)(r.td,{}),(0,t.jsxs)(r.td,{children:["CircuitBreaker\u306EState\u304C\u5909\u308F\u3063\u305F\u5834\u5408\u3001",(0,t.jsx)(r.code,{children:"counterUpdateInterval"}),"\u306E\u6642\u9593\u304C\u904E\u304E\u305F\u5834\u5408\u3001CircuitBreaker\u304C\u958B\u653E\u3055\u308C\u3066\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u30EA\u30B8\u30A7\u30AF\u30C8\u3055\u308C\u305F\u5834\u5408\u306B\u5BFE\u3059\u308B\u30A4\u30D9\u30F3\u30C8\u3092\u53D7\u4FE1\u3067\u304D\u308BListener\u3067\u3059\u3002"]})]})]})]}),"\n",(0,t.jsx)(r.h2,{id:"\u307E\u3068\u3081",children:"\u307E\u3068\u3081"}),"\n",(0,t.jsx)(r.p,{children:"\u3053\u308C\u307E\u3067\u306F\u3001\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u306E\u4E00\u90E8\u3067\u969C\u5BB3\u304C\u767A\u751F\u3059\u308B\u3068\u3001\u5BFE\u5FDC\u3059\u308B\u524D\u306B\u3059\u3067\u306B\u5927\u304D\u306A\u88AB\u5BB3\u304C\u51FA\u3066\u3044\u307E\u3057\u305F\u3002\u4E00\u90E8\u3067\u767A\u751F\u3057\u305F\u969C\u5BB3\u304CThread Full\u73FE\u8C61\u3092\u307E\u306D\u304D\u3001\u7D50\u5C40\u306F\u30B5\u30FC\u30D3\u30B9\u5168\u4F53\u306B\u5F71\u97FF\u3092\u4E0E\u3048\u305F\u305F\u3081\u3067\u3059\u3002\u3057\u304B\u3057\u3001\u3053\u308C\u304B\u3089\u306FCircuitBreaker\u304C\u305D\u306E\u3088\u3046\u306A\u90E8\u5206\u3092\u906E\u65AD\u3057\u3066\u304F\u308C\u308B\u306E\u3067\u3001\u3088\u308A\u4F59\u88D5\u3092\u6301\u3063\u3066\u5BFE\u5FDC\u3067\u304D\u308B\u3088\u3046\u306B\u306A\u308B\u3067\u3057\u3087\u3046\u3002"}),"\n",(0,t.jsx)(r.p,{children:"\u6700\u5F8C\u306B\u3001\u4E0A\u8FF0\u306E\u8A2D\u5B9A\u3092\u5229\u7528\u3057\u3066CircuitBreaker\u306E\u52D5\u4F5C\u65B9\u6CD5\u3092\u8AAC\u660E\u3057\u307E\u3059\u3002"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["CircuitBreaker\u306E\u521D\u671F\u72B6\u614B\u306F",(0,t.jsx)(r.em,{children:"Closed"}),"\u3067\u3059\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.em,{children:"Closed"})," : \u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u9042\u884C\u3057\u305F\u5F8C\u3001",(0,t.jsx)(r.code,{children:"ExceptionFilter"}),"\u306B\u3088\u3063\u3066\u6B21\u306E\u3088\u3046\u306B\u52D5\u4F5C\u3057\u307E\u3059\u3002","\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["\u7D50\u679C\u304C\u6210\u529F\u306A\u3089\u3001\u6210\u529F\u3057\u305F\u3068\u3044\u3046\u8A18\u9332\u3092\u6B8B\u3057\u3001",(0,t.jsx)(r.em,{children:"Closed"}),"\u72B6\u614B\u306B\u5909\u308F\u308A\u307E\u3059\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:["\u7D50\u679C\u304C\u5931\u6557\u306A\u3089\u3001",(0,t.jsx)(r.code,{children:"counterSlidingWindow"}),"\u671F\u9593\u5206\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u7D50\u679C\u3092\u78BA\u8A8D\u3057\u3066","\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["minimumRequestThreshold\u6570\u3088\u308A\u591A\u304F\u3001\u5931\u6557\u7387\u304CfailureRateThreshold\u4EE5\u4E0A\u3067\u3042\u308C\u3070\u3001",(0,t.jsx)(r.em,{children:"Open"}),"\u72B6\u614B\u306B\u5909\u308F\u308A\u307E\u3059\u3002"]}),"\n",(0,t.jsx)(r.li,{children:"\u305D\u3046\u3067\u306A\u3044\u5834\u5408\u306F\u3001Closed\u72B6\u614B\u304C\u7DAD\u6301\u3055\u308C\u307E\u3059\u3002"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.em,{children:"Open"})," : ",(0,t.jsx)(r.code,{children:"circuitOpenWindow"}),"\u671F\u9593\u304C\u904E\u304E\u308C\u3070\u3001",(0,t.jsx)(r.em,{children:"Half-Open"}),"\u72B6\u614B\u306B\u5909\u308F\u308A\u307E\u3059\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.em,{children:"Half-Open"})," : \u6700\u521D\u306B\u5165\u3063\u3066\u304F\u308B\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u9042\u884C\u3057\u305F\u5F8C\u3001",(0,t.jsx)(r.code,{children:"ExceptionFilter"}),"\u306B\u3088\u3063\u3066\u6B21\u306E\u3088\u3046\u306B\u52D5\u4F5C\u3057\u307E\u3059\u3002","\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:["\u7D50\u679C\u304C\u6210\u529F\u306A\u3089\u3001",(0,t.jsx)(r.em,{children:"Closed"}),"\u72B6\u614B\u306B\u5909\u308F\u308A\u307E\u3059\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:["\u7D50\u679C\u304C\u6210\u529F\u306A\u3089\u3001",(0,t.jsx)(r.em,{children:"Open"}),"\u72B6\u614B\u306B\u5909\u308F\u308A\u307E\u3059\u3002"]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.code,{children:"trialRequestInterval"}),"\u306E\u6642\u9593\u4EE5\u5185\u306B\u5FDC\u7B54\u304C\u306A\u3051\u308C\u3070\u3001",(0,t.jsx)(r.em,{children:"Half-Open"}),"\u72B6\u614B\u3067\u305D\u306E\u6B21\u306B\u5165\u3063\u3066\u304F\u308B\u6700\u521D\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u7D50\u679C\u306B\u3088\u3063\u3066\u5206\u5C90\u51E6\u7406\u3057\u307E\u3059\u3002"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(r.h2,{id:"\u4F5C\u6210\u8005\u306E\u7D39\u4ECB",children:"\u4F5C\u6210\u8005\u306E\u7D39\u4ECB"}),"\n",(0,t.jsx)(r.p,{children:"Shin Jong Hun\uFF1A\u9762\u5012\u306A\u3053\u3068\u304C\u5927\u5ACC\u3044\u3067\u3001\u9762\u5012\u3092\u6E1B\u3089\u3059\u305F\u3081\u306B\u60A9\u307F\u7D9A\u3051\u3066\u3044\u307E\u3059\u3002\u3053\u308C\u304C\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u304C\u597D\u304D\u306B\u306A\u3063\u305F\u7406\u7531\u306A\u306E\u3067\u3059\u304C\u3001\u306A\u3093\u3060\u304B\u3084\u308B\u3053\u3068\u304C\u5897\u3048\u305F\u6C17\u304C\u3059\u308B\u306E\u306F\u81EA\u5206\u3060\u3051\u3067\u3057\u3087\u3046\u304B\u306D\uFF1F"})]})}function o(e={}){let{wrapper:r}={...(0,c.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},17342(e,r,i){i.d(r,{A:()=>n});let n=i.p+"assets/images/applying-circuitbreaker-to-channel-gateway-1-537a3aa178c1835906c7a42d541dac55.png"},28453(e,r,i){i.d(r,{R:()=>l,x:()=>s});var n=i(96540);let t={},c=n.createContext(t);function l(e){let r=n.useContext(c);return n.useMemo(function(){return"function"==typeof e?e(r):{...r,...e}},[r,e])}function s(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(c.Provider,{value:r},e.children)}},75614(e){e.exports=JSON.parse('{"permalink":"/blog/ja/2016/08/04/applying-circuitbreaker-to-channel-gateway","editUrl":"https://github.com/line/armeria/edit/main/site/src/content/blog/ja/2016-08-04-applying-circuitbreaker-to-channel-gateway.mdx","source":"@site/src/content/blog/ja/2016-08-04-applying-circuitbreaker-to-channel-gateway.mdx","title":"\u30C1\u30E3\u30CD\u30EB\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u3078\u306ECircuitBreaker\u306E\u9069\u7528","description":"\u306F\u3058\u3081\u306B","date":"2016-08-04T00:00:00.000Z","tags":[],"readingTime":8.48,"hasTruncateMarker":true,"authors":[{"name":"Shin Jong Hun","title":"\u9762\u5012\u306A\u3053\u3068\u304C\u5927\u5ACC\u3044\u3067\u3001\u9762\u5012\u3092\u6E1B\u3089\u3059\u305F\u3081\u306B\u60A9\u307F\u7D9A\u3051\u3066\u3044\u307E\u3059\u3002\u3053\u308C\u304C\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u304C\u597D\u304D\u306B\u306A\u3063\u305F\u7406\u7531\u306A\u306E\u3067\u3059\u304C\u3001\u306A\u3093\u3060\u304B\u3084\u308B\u3053\u3068\u304C\u5897\u3048\u305F\u6C17\u304C\u3059\u308B\u306E\u306F\u81EA\u5206\u3060\u3051\u3067\u3057\u3087\u3046\u304B","imageURL":"/img/author-shinjonghun.png","key":"shinjonghun","page":null}],"frontMatter":{"authors":["shinjonghun"],"other_languages":{"en":"/blog/2016/08/04/applying-circuitbreaker-to-channel-gateway","ko":"/blog/ko/2016/08/04/applying-circuitbreaker-to-channel-gateway"}},"unlisted":false,"prevItem":{"title":"RxJava 2\u3068Armeria\u3067\u30DE\u30A4\u30AF\u30ED\u30B5\u30FC\u30D3\u30B9\u3092\u975E\u540C\u671F\u5316\u3057\u3066\u307F\u305F","permalink":"/blog/ja/2017/12/01/asynchronous-micro-service-in-rxjava-2-armeria"},"nextItem":{"title":"\u5206\u6563\u30B5\u30FC\u30D3\u30B9\u74B0\u5883\u3078\u306ECircuit Breaker\u306E\u9069\u7528","permalink":"/blog/ja/2016/07/14/circuit-breakers-for-distributed-services"}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.