在确定在这种情况下可以使用哪些框架时需要帮助。我正在探索Zookeeper,但不确定如何解决此用户酶。
背景:
- 说有连接到流源(KAFKA或ActiveMQ等(的应用到文件。
- 该应用程序被部署为4个实例。
- 每个实例都会创建一个文件,该文件存储了它上次处理的消息 小时。示例-FileName是Servername_8.00,用于从8-9处理的消息
- 要求是在每个实例在该窗口中创建一个文件,并且仅发送一个合并文件,该文件列出了所有4个文件名和记录数。
我要寻找的是:
1.如何确保应用程序实例知道其他实例是否也创建了文件,并且是否创建了每个实例,则只能传输文件 2.无论是发送什么实例,合并的文件都应知道传输的内容。
我可以用什么框架来解决此问题?
您绝对可以使用Zookeeper。我也将使用Apache策展人(注意:我是策展人的主要作者(。
所有实例都共享文件服务器吗?即每个实例可以查看所有创建的文件吗?如果是这样,您可以使用Zookeeper/Curator提名领导者,并且只有领导者完成所有工作。您可以在此处查看样本领导者选举代码:https://github.com/apache/curator/tree/master/curator-curator-examples/src/main/java/leader
如果实例不共享文件服务器,则仍然可以使用Zookeeper协调共享文件的写作。您将再次提名一个领导者,该领导者暴露了所有实例可以写入的API,并且领导者创建了共享文件。
您还可能会发现策展人屏障食谱有用:http://curator.apache.org/curator-recipes/double-barrier.html和http://curator.apache.org/curatare.org/curator.org/curator-recipes/barrier-barrier.html.html
如果您想要更详细的设计,则必须提供更多的用例。