我有一个 Android 应用程序,该应用程序的后端部署在 Google AppEngine 中。
我正在寻找类似于谷歌云中的 API 网关的东西,它可以根据客户端版本(例如通过 header 传递?)将应用程序路由到特定的后端版本,而无需在应用程序中明确指定目标后端版本(这总是需要应用程序发布)。
例如在客户端实现:
https://my-app.appspot.com ( header :X-MyApp-Appversion:14)
API网关:
对于 1 到 5 之间的 X-MyApp-AppVersion -> https://v1-dot-my-app.appspot.com
对于 6 到 11 之间的 X-MyApp-AppVersion -> https://v2-dot-my-app.appspot.com
对于大于 11 的 X-MyApp-AppVersion -> https://v3-dot-my-app.appspot.com
已经尝试过的解决方案:
每次我们在后端部署新版本时,直接在应用中定位版本将需要应用更新。
覆盖现有后端版本将意味着后端停机,我尝试过一次并丢失了 >100 个请求。
使用 dispatch.yaml,您只能针对特定服务,而不是服务的版本。
负载均衡器和流量导向器似乎更复杂,并不真正适合此目的。
最佳答案
据我了解,目前没有可用的方法根据请求 header 将请求重定向到特定的 App Engine 版本。
解决此问题的方法是创建一个应用引擎服务,其中包含一些逻辑,可以根据请求 header 将请求转发到当前服务的所需版本。
另一种解决方法是为较新版本的应用部署新服务。
https://stackoverflow.com/questions/61386181/