gpt4 book ai didi

java - AWS 上的架构 : Running a distributed algorithm on dynamic nodes

转载 作者:行者123 更新时间:2023-11-29 04:36:05 25 4
gpt4 key购买 nike

enter image description here

如图所示,我正在做的宠物项目有以下两个组件。

a) “RestAPI 层”(一组微服务)

b) “可扩展并行算法”组件。

我计划在 AWS 上运行它。我意识到我可以使用 ElasticBeanTalk 来部署我的 RestAPI 模块。(带有嵌入式 tomcat 的 Spring Boot JAR)

我正在考虑如何构建“可扩展并行算法”组件。以下是关于此的一些设计细节:

  • 这由几个节点组成,它们共享存储在S3.
  • 每个节点对一 block S3 数据执行“算法”。一个节点作为主节点,其余节点将部分结果发送到这个节点。(尴尬的并行,主从范式)。主节点被 RestAPI 层调用。
  • “节点”是一个 Spring Boot 应用程序,它通过 HTTP 与其他节点通信。
  • “节点”的数量是动态的,这意味着我应该能够根据 S3 不断增加的数据大小手动添加新节点。
  • Redis 上有一个“节点注册表”​​,其中包含所有节点的 IP。每个节点注册自己,并使用列表中的 IP注册表相互通信。

我的问题:

1) 我应该使用 EC2 来部署“节点”还是我也可以使用 ElasticBeanStalk 来部署这些节点。我知道使用 EC2 我可以根据 S3 数据的大小来管理节点数量,但是是否可以用 ElasticBeanStalk 做这个?

2)我可以使用

Inet4Address.getLocalHost().getHostAddress() 

获取每个节点的IP? EC2实例有多个IP吗?此 IP 应允许 RestAPI 层与“主”节点通信。

3) 我应该使用什么组件将我的 RestAPI 层暴露给外部世界?但我不想公开我的“节点”。

更新:我不能使用 MapReduce,因为节点有状态。即,在初始化期间,每个节点从 S3 读取其数据 block 并在内存中创建“vector 空间”。这是一个耗时的过程,因此这就是为什么它应该存储在内存中。此外,该系统需要近实时响应,不能使用像 MR 这样的“批处理”系统。

最佳答案

1) 我会研究 CloudFormation 以帮助您自动化和编排可扩展并行算法。阅读此常见问题解答

https://aws.amazon.com/cloudformation/faqs/

2) 关于问题 #2,EC2 实例可以有私有(private) IP 和公共(public) IP,具体取决于您如何配置它们。您可以从实例中查询 AWS EC2 元数据服务以获取如下信息:

curl http://169.254.169.254/latest/meta-data/public-ipv4

curl http://169.254.169.254/latest/meta-data/local-ipv4

EC2 实例元数据的完整引用:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

3) 检查 API 网关服务,它可能是您正在寻找的:

https://aws.amazon.com/api-gateway/faqs/

关于java - AWS 上的架构 : Running a distributed algorithm on dynamic nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41454876/

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