罗泽轩,API7.ai 技术专家/技术工程师,Apache APISIX PMC 成员。
Apache APISIX 现有基于 HTTP 的 etcd 操作的局限性
etcd 在 2.x 版本的时候,对外暴露的是 HTTP 1 (以下简称 HTTP)的接口。etcd 升级到 3.x 版本后,其对外 API 的协议从普通的 HTTP 切换到了 gRPC。为了兼顾那些不能使用 gRPC 的特殊群体,etcd 通过 gRPC-gateway 的方式代理 HTTP 请求,以 gRPC 形式去访问新的 gRPC API。
APISIX 开始用 etcd 的时候,用的是 etcd v2 的 API。从 2020 年的 APISIX 2.0 版本起,我们把要求的 etcd 版本升级到 3.x。etcd 对 HTTP 的兼容帮了我们很大的忙,这样就不用花很大心思去重新实现操作 etcd 的方式了,只需调整下新的一组 API 的调用方式和响应处理。然而在实践过程中,我们也发现了跟 etcd 的 HTTP API 相关的一些问题。事实上,拥有 gRPC-gateway 并不意味着能够完美支持 HTTP 访问,这里还是有些细微的差别。
我把过去几年来在 etcd 上遇到的相关问题列了一下:
- 在某些情况下,etcd 默认没有启用 gRPC-gateway。由于维护者的疏忽,在某些平台上,etcd 在配置时没有默认启用 gRPC-gateway,所以我们不得不在文档中添加一个注释,以检查 etcd 当前是否启用了 gRPC-gateway。具体可参考 https://git
APISIX 从 HTTP 到 gRPC 操作 etcd 的迁移

Apache APISIX 在升级 etcd 到 3.x 后面临基于 HTTP 操作的局限性,包括默认未启用 gRPC-gateway、响应大小限制等。为解决问题,APISIX 决策迁移到 gRPC,克服了 lua-protobuf 的 bug、调整行为以匹配 HTTP、切换到长连接。迁移后,连接数显著减少,解决了 mTLS 等问题,提高了效率和稳定性。API7.ai 作为 APISIX 的主要支持者,持续推动其发展。
最低0.47元/天 解锁文章
9912

被折叠的 条评论
为什么被折叠?



