{"id":18150,"date":"2024-04-16T13:16:55","date_gmt":"2024-04-16T07:46:55","guid":{"rendered":"https:\/\/blog.opstree.com\/?p=18150"},"modified":"2026-01-03T13:31:07","modified_gmt":"2026-01-03T08:01:07","slug":"istio-circuit-breaker-when-failure-is-a-better-option","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2024\/04\/16\/istio-circuit-breaker-when-failure-is-a-better-option\/","title":{"rendered":"Istio Circuit Breaker &#8211; When Failure is a Better Option"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">What is a Circuit Breaker?<\/h2>\r\n\r\n\r\n\r\n<p>We often hear that electronic devices may cease to function due to a circuit break. Essentially, a circuit breaker is an electronic switch designed to safeguard an electronic circuit from damage caused by overcurrent, overload, or short circuit. Its primary function is to interrupt the flow of current after detecting a fault through protective measures.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">What is a Circuit Breaker in Microservices Architecture?<\/h2>\r\n\r\n\r\n\r\n<p>As we discussed, the concept of a circuit breaker in terms of electronic devices. Similarly, we need to implement a circuit breaker in microservices architecture. The question arises: why do we need a circuit breaker in microservices architecture and how can we implement it? Let&#8217;s illustrate with an example.<\/p>\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"alignright size-large is-resized\"><img decoding=\"async\" class=\"wp-image-18154\" style=\"width: 630px; height: auto;\" src=\"https:\/\/blog.opstree.com\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-07-at-9.44.13\u202fAM-1024x489.png\" alt=\"\" \/><\/figure><\/div>\r\n\r\n\r\n<p>In the above diagram, we can observe several microservices and their dependencies on each other. Service A depends on service B, and service B depends on services F and E. Service F relies on a third-party application over which we have no control.<\/p>\r\n\r\n\r\n\r\n<p><!--more--><\/p>\r\n\r\n\r\n\r\n<p>Let&#8217;s consider that service A provides the following features:<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li>Current account balance<\/li>\r\n\r\n\r\n\r\n<li>Credit card details\u00a0<\/li>\r\n\r\n\r\n\r\n<li>Investment details\u00a0<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>Normally, the third-party application has an average response time of 1 second. However, for example purposes, let&#8217;s assume that its response time increases to 5 seconds due to issues on their end. Consequently, the requests from service F to the third-party application increase from 1 second to 5 seconds. This slowdown affects service B, causing it to hold requests in wait for a response. As a result, service A also experiences delays as it waits for service B to respond. Ultimately, this cascading impact affects other features of service A, when ideally, only the credit card feature should have been impacted because service B handles the feature for credit card details.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Let\u2019s Implement the Circuit breaker<\/h2>\r\n\r\n\r\n\r\n<p>To address such scenarios, we can implement circuit breakers. Essentially, we can adhere to the following two principles:<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li>Remote communication should fail quickly in the event of an issue, rather than consuming resources while waiting for a response that may never arrive.<\/li>\r\n\r\n\r\n\r\n<li>If a dependency consistently fails, it is better to halt further requests until the dependency has recovered.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-18157\" src=\"https:\/\/blog.opstree.com\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-07-at-9.47.30\u202fAM-1024x486.png\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p>Now, suppose we have a deadline timeout. In the event of any issue at the end of the third-party application, such as an increase in response time from 1 second to 5 seconds, our deadline timeout will trigger the connection to fail quickly. Consequently, only the feature of service A that is dependent on the third-party application will be affected. This ensures that there is no resource utilisation while waiting for a response from the third-party app, thereby preventing any adverse effects on other features of service A.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">How to Achieve Circuit Breaker With Istio?<\/h2>\r\n\r\n\r\n\r\n<p>Istio is a service mesh that integrates essential network services into the infrastructure, providing features such as service discovery and policy enforcement to regulate communication among services within the mesh.<\/p>\r\n\r\n\r\n\r\n<p>One of the advantages of Istio is its ability to handle failures by implementing circuit breakers. Networks are inherently unreliable, and Istio&#8217;s circuit breaker feature helps mitigate the cascading effects of failures.<\/p>\r\n\r\n\r\n\r\n<p>Let&#8217;s consider an example within my organization where we&#8217;ve implemented Istio&#8217;s circuit breaker. Our microservices interact with several third-party applications external to our organization. Since we lack control over these third-party applications, any outages they experience directly impact our microservices. When these external applications encounter issues, our dependent microservices face delays or fail to receive responses, resulting in a buildup of requests on our pods. This situation leads to a cascading impact on our entire application.<\/p>\r\n\r\n\r\n\r\n<p>To address this issue, we sought to implement Istio&#8217;s circuit breaker feature. However, upon reviewing Istio&#8217;s documentation and related blogs, we discovered that they typically recommend tripping the circuit breaker for the entire domain, which isn&#8217;t suitable for our scenario. In this blog, we&#8217;ll explain how we implemented API-based circuit breakers to address our specific needs.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Istio Circuit Breaker Components<\/h2>\r\n\r\n\r\n\r\n<ul>\r\n<li>ServiceEntry\u00a0<\/li>\r\n\r\n\r\n\r\n<li>Virtual Service\u00a0<\/li>\r\n\r\n\r\n\r\n<li>Destination Rule<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Walkthrough With a Sample Application<\/h2>\r\n\r\n\r\n\r\n<p>Let&#8217;s suppose we have two source applications (our microservices) and a destination application (a third-party application) with the following APIs.<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li>\/dest\/200<\/li>\r\n\r\n\r\n\r\n<li>\/dest\/500<\/li>\r\n\r\n\r\n\r\n<li>\/dest\/504<\/li>\r\n\r\n\r\n\r\n<li>\/dest\/502<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>Similarly, the source application has corresponding APIs to interact with the destination application APIs.<\/p>\r\n\r\n\r\n\r\n<p>For our demonstration, we will continuously call the \/src\/200 API. Meanwhile, we will begin calling the \/src\/500 APIs to trigger the circuit breaker specifically for the \/src\/500 endpoint.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-18161\" src=\"https:\/\/blog.opstree.com\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-07-at-9.50.30\u202fAM.png\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p>As we can see we are continuously hitting the source API 200 and getting response 200 back.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-18166\" src=\"https:\/\/blog.opstree.com\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-07-at-9.52.55\u202fAM.png\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p>Here, we observe that we are making requests to the \/src\/500 endpoint, and we are receiving 500 responses in return. Once the number of consecutive failures surpasses the maximum threshold set by Istio&#8217;s circuit breaker, it activates, injecting 503 status codes and halting further calls to the destination application for a specified duration.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-18165\" src=\"https:\/\/blog.opstree.com\/wp-content\/uploads\/2024\/04\/Screenshot-2024-04-07-at-9.52.23\u202fAM.png\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p><br \/>Here, we can observe in the Istio proxy log that Istio has injected the <strong><em>&#8220;<a href=\"https:\/\/www.envoyproxy.io\/docs\/envoy\/latest\/configuration\/observability\/access_log\/usage\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">UH &#8211; No Healthy Upstream<\/a>&#8220;<\/em><\/strong> flag, in addition to the 503 error, because the Istio circuit breaker has been triggered due to breaching the threshold of consecutive errors.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>[2022-04-18T01:48:28.608Z] \"GET \/dest\/500 HTTP\/1.1\" 503 UH \"-\" \"-\" 0 19 0 - \"-\" \"Go-http-client\/1.1\" \"4b6f0a59-e4bc-9200-a1d7-f875c2f063bc\" \"dest-app.dsdev.\" \"-\" - - 54.182.0.45:80 10.0.31.122:33336 - dest-500\r\n<\/code><\/pre>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-18195\" src=\"https:\/\/blog.opstree.com\/wp-content\/uploads\/2024\/04\/image-1024x674.png\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p>Here, we are making parallel calls to the source APIs, both the \/src\/200 and \/src\/500 endpoints. In the second part of the screenshot, we observe responses with the 500 status code. Once the circuit breaker is triggered, Istio injects 503 response codes, indicating service unavailable, and ceases further requests to the destination application.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>apiVersion: networking.istio.io\/v1alpha3\r\nkind: ServiceEntry\r\nmetadata:\r\n name: dest-app\r\n namespace: default\r\nspec:\r\n hosts:\r\n - dest-app.dsdev.xyx.com\r\n ports:\r\n   - number: 80\r\n     name: http-port\r\n     protocol: HTTP\r\n   - number: 443\r\n     name: https-port\r\n     protocol: HTTPS\r\n resolution: DNS\r\n location: MESH_EXTERNAL<\/code><\/pre>\r\n\r\n\r\n\r\n<p>In the snippet of code above, we are declaring the ServiceEntry for the domain of the destination application. For additional details about ServiceEntry, you can refer to the documentation. <a href=\"https:\/\/istio.io\/latest\/docs\/reference\/config\/networking\/service-entry\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">here<\/a>.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>apiVersion: networking.istio.io\/v1alpha3\r\nkind: VirtualService\r\nmetadata:\r\n name: dest-app\r\n namespace: default\r\nspec:\r\n hosts:\r\n   - dest-app.dsdev.xyx.com\r\n http:\r\n - name: \"dest-200\"\r\n   match:\r\n   - uri:\r\n       prefix: \/dest\/200\r\n     port: 80\r\n   route:\r\n   - destination:\r\n       host: dest-app.dsdev.xyx.com\r\n       port:\r\n         number: 443\r\n       subset: health200\r\n - name: \"dest-500\"\r\n   match:\r\n   - uri:\r\n       prefix: \/dest\/500\r\n     port: 80\r\n   route:\r\n   - destination:\r\n       host: dest-app.dsdev.xyx.com\r\n       port:\r\n         number: 443\r\n       subset: error500<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>apiVersion: networking.istio.io\/v1alpha3\r\nkind: DestinationRule\r\nmetadata:\r\n name: dest-app\r\n namespace: default\r\nspec:\r\n host: dest-app.dsdev.xyx.com\r\n subsets:\r\n - name: health200\r\n   trafficPolicy:\r\n     tls:\r\n       mode: SIMPLE\r\n       sni: dest-app.dsdev.xyx.com\r\n     outlierDetection:\r\n       baseEjectionTime: 20s\r\n       consecutiveErrors: 200\r\n       interval: 20s\r\n       maxEjectionPercent: 100\r\n - name: error500\r\n   trafficPolicy:\r\n     loadBalancer:\r\n         simple: ROUND_ROBIN\r\n     connectionPool:\r\n       tcp:\r\n         maxConnections: 1\r\n         connectTimeout: 1000ms\r\n     tls:\r\n       mode: SIMPLE\r\n       sni: dest-app.dsdev.xyx.com\r\n     outlierDetection:\r\n       baseEjectionTime: 1m\r\n       consecutiveGatewayErrors: 3\r\n       interval: 20s\r\n       maxEjectionPercent: 100<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\r\n\r\n\r\n\r\n<p>When summarizing this blog, we observe that sometimes failure can serve as a viable option to manage during disasters, ensuring the continuous operation of your application even if certain features are not functioning as expected. With the assistance of Istio, it offers a convenient way to implement this without necessitating any changes to the code base.<\/p>\r\n\r\n\r\n\r\n<p>Let us know in the comment section if you have any questions or feedback.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Before you\u00a0go:<\/h3>\r\n\r\n\r\n\r\n<p>Clap if you liked it \ud83d\udc4f, comment and share this article to reach more community \ud83e\uddde.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<p><strong>OpsTree is an End-to-End <a href=\"https:\/\/opstree.com\/services\/\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Solution<\/a> Provider.<\/strong><\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\r\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=CI%2FCD+with+GitHub+Actions+-+Concepts\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\r\n\r\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\r\n","protected":false},"excerpt":{"rendered":"<p>What is a Circuit Breaker? We often hear that electronic devices may cease to function due to a circuit break. Essentially, a circuit breaker is an electronic switch designed to safeguard an electronic circuit from damage caused by overcurrent, overload, or short circuit. Its primary function is to interrupt the flow of current after detecting &hellip; <a href=\"https:\/\/opstree.com\/blog\/2024\/04\/16\/istio-circuit-breaker-when-failure-is-a-better-option\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Istio Circuit Breaker &#8211; When Failure is a Better Option&#8221;<\/span><\/a><\/p>\n","protected":false},"author":173854666,"featured_media":18264,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[768739332,48006724,768739333],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2024\/04\/Istio-Circuit-Breaker-.png","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-4IK","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/18150"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/173854666"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=18150"}],"version-history":[{"count":4,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/18150\/revisions"}],"predecessor-version":[{"id":30268,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/18150\/revisions\/30268"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/18264"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=18150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=18150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=18150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}