<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>API 网关 on Tony老师的博客</title><link>https://blog.tanteng.space/tags/api-gateway/</link><description>Recent content in API 网关 on Tony老师的博客</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Mon, 25 Mar 2024 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.tanteng.space/tags/api-gateway/index.xml" rel="self" type="application/rss+xml"/><item><title>多租户 SPA 网关设计：APISIX + Go + EdgeOne + 私有 COS 桶方案</title><link>https://blog.tanteng.space/posts/spa-gateway-apisix-design/</link><pubDate>Mon, 25 Mar 2024 10:00:00 +0800</pubDate><guid>https://blog.tanteng.space/posts/spa-gateway-apisix-design/</guid><description>&lt;p&gt;做多租户 SaaS 时，网关是最容易被低估的环节。一个典型的 SPA 帮助中心场景：每个租户有自己的 subdomain、自己的 SPA 资源、私有的内容数据，访问链路涉及 APISIX 网关、Go 中间件、对象存储、CDN。本文从 &lt;strong&gt;私有 COS 桶&lt;/strong&gt; 这一前提出发，整理一套完整的、可落地的网关设计方案，文末讨论能否改用公有桶简化架构。&lt;/p&gt;</description></item><item><title>gRPC HTTP Transcoding 注解详解</title><link>https://blog.tanteng.space/posts/grpc-http-transcoding-annotation/</link><pubDate>Thu, 15 Sep 2022 10:00:00 +0800</pubDate><guid>https://blog.tanteng.space/posts/grpc-http-transcoding-annotation/</guid><description>&lt;h2 id="背景问题"&gt;背景问题&lt;/h2&gt;
&lt;p&gt;gRPC 以其高效的二进制序列化（Protocol Buffers）和强大的流式通信能力，已成为微服务间通信的主流选择。但在实际项目中，我们常常面临一个尴尬的局面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内部服务&lt;/strong&gt;用 gRPC 通信，高性能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对外开放 API&lt;/strong&gt; 需要提供 HTTP/RESTful 接口，方便前端和其他语言调用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;维护两套服务&lt;/strong&gt;成本太高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有没有一种方式，可以让 &lt;strong&gt;同一个 gRPC 服务同时支持 gRPC 协议和 HTTP/RESTful 调用&lt;/strong&gt;？&lt;/p&gt;
&lt;p&gt;这就是 &lt;strong&gt;gRPC HTTP Transcoding&lt;/strong&gt; 要解决的问题。&lt;/p&gt;</description></item><item><title>API 网关对比：Kong、APISIX、Envoy 的工程抉择</title><link>https://blog.tanteng.space/2021/11/api-gateway-comparison/</link><pubDate>Fri, 12 Nov 2021 14:00:00 +0800</pubDate><guid>https://blog.tanteng.space/2021/11/api-gateway-comparison/</guid><description>&lt;p&gt;2021 年我们要把内部十几个微服务统一接入网关，候选有 Kong、APISIX、Envoy（自建控制平面）。三方各有支持者：Java 团队倾向 Kong（成熟稳定）；基础设施组偏好 APISIX（etcd + 热更新）；架构师则强调 Envoy 是&amp;quot;未来标准&amp;quot;。最终我们选了 APISIX，但过程远没有&amp;quot;选个流行开源&amp;quot;那么简单。&lt;/p&gt;
&lt;p&gt;API 网关不只是&amp;quot;反向代理 + 限流&amp;quot;。它要承载路由、TLS 终结、鉴权、限流、可观测、协议转换 —— 每一项都有工程取舍。本文从数据平面、控制平面、插件体系、运维复杂度四个维度，对比 Kong、APISIX、Envoy 三条技术路线。&lt;/p&gt;</description></item><item><title>读懂一段 APISIX 路由配置：多环境流量染色怎么做</title><link>https://blog.tanteng.space/posts/apisix-route-multienv-routing/</link><pubDate>Mon, 15 Mar 2021 10:00:00 +0800</pubDate><guid>https://blog.tanteng.space/posts/apisix-route-multienv-routing/</guid><description>&lt;p&gt;最近团队内部一次跨环境联调，因为有人忘了切流量染色 cookie，把预发请求打到了生产 —— 事故不大，但引发了一波复盘。这篇文章想把那段承担了&amp;quot;染色分发&amp;quot;职责的 APISIX 路由配置从结构上拆清楚。&lt;/p&gt;
&lt;div class="code-block"&gt;
 &lt;button class="code-copy" type="button" hidden aria-label="Copy code to clipboard"&gt;
 &lt;span class="code-copy-label" aria-hidden="true"&gt;Copy&lt;/span&gt;
 &lt;/button&gt;
 &lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;graph LR
 A[请求] --&amp;gt; B{host 匹配?}
 B --&amp;gt;|*.example.com| C{uri 匹配?}
 C --&amp;gt;|/sapi/*| D{filter_func 染色?}
 D --&amp;gt;|匹配| E[proxy-rewrite 改路径]
 D --&amp;gt;|不匹配| F[走其他路由]
 E --&amp;gt; G[service_id 指向的 Service]
 G --&amp;gt; H[上游节点]&lt;/code&gt;&lt;/pre&gt;
 &lt;/div&gt;</description></item></channel></rss>