我使用CloudMap在AWS ECS中运行Spring Boot服务。
使用Java 11和Spring Boot 2.2.1.RELEASE
S(1)和S(2)是CPU密集型服务的精确副本,C将调用它们作为服务多个并行请求的一部分。C不受资源限制,所以我不想创建更多的实例。调用是使用com.konghq:unirest-java:jar:3.6.00进行的,而后者又使用httpcomponents:httpclient:jar:4.5.11
下面是一个小图表:
Multiple Parallel Requests ----> C (10.1.12.25) ---------> S(1) (10.1.178.143)
\
\---> S(2) (10.1.118.82)使用Cloudmap作为服务目录,当我使用dig <service-name>时,它在答案中返回两个IP。
;; ANSWER SECTION:
<service-name>. 60 IN A 10.1.178.143
<service-name>. 60 IN A 10.1.118.82因为C只是一个实例,所以S(1)正在接收来自C的100%的请求。这使我认为C不知何故只使用了注册为的IP地址中的一个。
是否可以让C同时使用两个IP地址来调用<service-name>,而不使用负载均衡器?也许在Unirest和/或HttpClient中配置一些东西?
提前谢谢。
附言:这是我的第一个问题,如果没有正确的标签,请多多关照;-)
发布于 2020-08-06 05:48:43
您可以将Route53与这些ip地址一起使用,并选择循环调度策略。无论如何,如果请求是并行运行的,并且您不希望不使任何特定实例过载,则长期运行时需要负载均衡器。
https://stackoverflow.com/questions/63273949
复制相似问题