<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Istio on 架构视界</title>
    <link>https://blog-architectview.pages.dev/tags/istio/</link>
    <description>Recent content in Istio on 架构视界</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>© 2026 架构视界 Architect View</copyright>
    <lastBuildDate>Sun, 17 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog-architectview.pages.dev/tags/istio/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>微服务治理演进：从 Netflix OSS 到 Service Mesh</title>
      <link>https://blog-architectview.pages.dev/posts/microservices-netflix-to-service-mesh/</link>
      <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
      <guid>https://blog-architectview.pages.dev/posts/microservices-netflix-to-service-mesh/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;微服务架构的流行带来了一个悖论：系统被拆分成更小的单元以降低复杂度，但服务之间的通信却创造了一个更复杂的分布式系统。如何治理这个「服务间的混沌」，是过去十年基础架构领域最重要的课题之一。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;第一阶段蛮荒时代2014-之前&#34;&gt;第一阶段：蛮荒时代（2014 之前）&lt;/h2&gt;&#xA;&lt;p&gt;在微服务概念刚刚兴起的时候，服务治理几乎等于「手写一切」：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;服务 A 调用服务 B：&#xA;&#xA;1. 自己实现服务发现（查 ZooKeeper / Nginx upstream）&#xA;2. 自己实现负载均衡（轮询 / 随机）&#xA;3. 自己实现重试（try-catch + 循环）&#xA;4. 自己实现超时（设置 HTTP timeout）&#xA;5. 自己实现熔断（状态机 + 计数器）&#xA;&#xA;每一个服务的开发者都要重复实现这些逻辑，而且不同团队的实现质量参差不齐&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个阶段的核心问题是：&lt;strong&gt;治理逻辑和业务逻辑耦合在应用代码中&lt;/strong&gt;。每一次修改治理策略（比如调整超时时间），都需要修改业务代码、重新编译、重新部署。&lt;/p&gt;&#xA;&lt;h2 id=&#34;第二阶段sdk-时代2014-2017&#34;&gt;第二阶段：SDK 时代（2014-2017）&lt;/h2&gt;&#xA;&lt;p&gt;Netflix 开源了一整套微服务治理工具（Netflix OSS），标志着微服务治理进入 SDK 时代：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Netflix OSS 全家桶：&#xA;&#xA;Eureka    → 服务注册与发现&#xA;Ribbon    → 客户端负载均衡&#xA;Hystrix   → 熔断器&#xA;Feign     → 声明式 HTTP 客户端&#xA;Zuul      → API 网关&#xA;Archaius  → 动态配置&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Spring Cloud 在此基础上做了封装，让 Java 开发者可以用注解的方式快速接入：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@FeignClient&lt;/span&gt;(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;user-service&amp;#34;&lt;/span&gt;, fallback &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; UserServiceFallback.&lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UserServiceClient&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;@GetMapping&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/users/{id}&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    User &lt;span style=&#34;color:#a6e22e&#34;&gt;getUser&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;@PathVariable&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;) Long id);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@Component&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UserServiceFallback&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;implements&lt;/span&gt; UserServiceClient {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;@Override&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; User &lt;span style=&#34;color:#a6e22e&#34;&gt;getUser&lt;/span&gt;(Long id) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; User.&lt;span style=&#34;color:#a6e22e&#34;&gt;defaultUser&lt;/span&gt;();  &lt;span style=&#34;color:#75715e&#34;&gt;// 熔断降级&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;sdk-模式的问题&#34;&gt;SDK 模式的问题&lt;/h3&gt;&#xA;&lt;p&gt;Netflix OSS 解决了「重复造轮子」的问题，但它引入了新的痛点：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
