gpt4 book ai didi

java - 具有多个具有内部调用的微服务的蓝绿部署

转载 作者:行者123 更新时间:2023-12-02 11:16:45 24 4
gpt4 key购买 nike

我有 8 个 Spring Boot 微服务,它们在内部相互调用。其他微服务的调用dns,在每个服务的application.properties文件中定义。

假设微服务A由A -> a.mydns.com 和 B-> b.mydns.com 等表示

所以基本上每个微服务都由一个 ELB 和两个 HA 代理(分布 分布在两个可用区)和 4 个应用服务器(分布在两个可用区)。

目前,我正在创建新的绿色服务器(仅限应用程序服务器)并从 HA 代理级别切换实时流量。在这种情况下,新版本的微服务在测试的同时,也暴露给了现场客户。

理想情况下,方法应该是为每个微服务创建整个服务器结构,包括 ELB 和 HA 代理,对吗?

但是我怎么会面临使用测试 dns 进行测试的挑战呢?我可以将 ELB 映射到测试 dns。 但是硬编码在 application.properties 文件中的外部微服务 dns 怎么样?

在这种情况下我应该采取什么方法?

最佳答案

我建议对您的微服务进行 Docker 化(使用 spring-boot 即可轻松实现),然后将 ECS(弹性容器服务)和 ELB(弹性负载均衡器)与应用程序负载均衡器结合使用。 (可以是内部的,也可以是面向互联网的)。

当您部署新版本时,ECS 和 ELB 将利用您的微服务 /health 端点。

然后,您可以在 spring-boot 中实现更复杂的 HealthIndicator ,以确定应用程序是否健康(并因此准备好接收传入请求)。只有当新应用程序运行良好时,它才会投入使用,而旧应用程序则会进入 hibernate 状态。

然后在测试环境上测试您的所有业务逻辑,并且由于 Docker,您在所有环境上运行完全相同的镜像,您不需要运行(任何)测试部署到生产时。 (因为它已经过测试,如果它启动了,那么就可以开始了)。

关于java - 具有多个具有内部调用的微服务的蓝绿部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com