将 hazelcast-jet 部署到多个 ec2 实例的最佳方法是什么?
在每台机器上下载并解压 Hazelcast Jet 发行版:
$ wget https://download.hazelcast.com/jet/hazelcast-jet-3.1.zip
$ unzip hazelcast-jet-3.1.zip
$ cd hazelcast-jet-3.1
进入lib
解压后的发行版目录并下载hazelcast-aws
模块:
$ cd lib
$ wget https://repo1.maven.org/maven2/com/hazelcast/hazelcast-aws/2.4/hazelcast-aws-2.4.jar
编辑bin/common.sh
以将模块添加到类路径。文件末尾有一行
CLASSPATH="$JET_HOME/lib/hazelcast-jet-3.1.jar:$CLASSPATH"
您可以复制此行并替换-jet-3.1
为-aws-2.4
.
编辑config/hazelcast.xml
以启用 AWS 集群发现。详情在这里。在此步骤中,您必须处理 IAM 角色、EC2 安全组、区域等。还有 AWS 部署的最佳实践指南。
使用 启动集群jet-start.sh
。
如何配置客户端以便它知道在哪里提交任务?
一种直接的方法是指定运行 Jet 的机器的公共 IP,例如:
ClientConfig clientConfig = new ClientConfig();
clientConfig.getGroupConfig().setName("jet");
clientConfig.addAddress("54.224.63.209", "34.239.139.244");
但是,根据您的 AWS 设置,这些可能不稳定,因此您也可以配置以发现它们。这是解释here。
如何从数千个来源中提取数据?源推送数据而不是被拉取。
我认为您最好的选择是将数据放入 Hazelcast 地图,并使用mapJournal
源从中获取更新事件。