Rest 在升级期间滚动流连接
我正在开发一个使用Amazon Kinesis的应用程序,我想知道的一件事是,如何在升级过程中滚动应用程序而不丢失流上的数据。我听说过蓝色/绿色部署之类的事情,但我想知道升级数据流服务的最佳实践是什么,这样您就不会从流中丢失数据Rest 在升级期间滚动流连接,rest,http,data-stream,Rest,Http,Data Stream,我正在开发一个使用Amazon Kinesis的应用程序,我想知道的一件事是,如何在升级过程中滚动应用程序而不丢失流上的数据。我听说过蓝色/绿色部署之类的事情,但我想知道升级数据流服务的最佳实践是什么,这样您就不会从流中丢失数据 例如,我的应用程序有一个HTTP端点,作为一系列POST操作接收数据。如果我想用更新的版本替换服务,我如何管理到我的端点的现有应用程序流?一种常见的方法是使用带有虚拟IP的软件负载平衡器LB;在正常操作期间,此LB后面将至少有两个HTTP摄取端点。在升级过程中,每个端点
例如,我的应用程序有一个HTTP端点,作为一系列POST操作接收数据。如果我想用更新的版本替换服务,我如何管理到我的端点的现有应用程序流?一种常见的方法是使用带有虚拟IP的软件负载平衡器LB;在正常操作期间,此LB后面将至少有两个HTTP摄取端点。在升级过程中,每个端点都会被宣布出来并依次升级。LB确保没有流量转发到已宣布的out端点 端点本身可以位于单独的VM、Docker容器或物理节点上 当然,流需要是有限的;TCP套接字/HTTP流由其中一个端点拥有。但是,只要流可以正常停止,假设端点A拥有当前摄取,以下流就可以工作: 告诉端点A不要接受新流。LB只会将所有新流重定向到端点B。 优雅地停止端点A上的现有流。 升级A。 宣布回归。 冲洗并重复端点B。 作为一个辅助点,如果您需要任何合理的正常运行时间和可靠性保证,您将需要两个具有负载平衡或主/从设置的端点 有更多的定制方法允许在同一端点上进行热代码交换,但它们更为定制,并且依赖于特定的内部设计,例如网络和IPC连接的处理堆栈之间的单独进程