设计k8s应用程序,从外部源获取数据并发送到同一目的地



我有一个从第三方数据源获取数据的应用程序,它会自动将数据发送到我的应用程序,我不能过滤它,我只能接收所有。当数据到达时,我的应用程序将把这些数据传输到一个rocketmq主题。

现在我必须使这个应用程序的容器和部署它在k8s的部署与3个副本。但是这些pod都将获得相同的数据并发送到相同的rocketmq主题。

我如何使这个应用程序水平可扩展而不发送重复的msg到相同的rocketmq主题?

现在我必须使这个应用程序成为一个容器,并将其部署在k8s部署3个副本。但是这些pod都将获得相同的数据并发送到相同的rocketmq主题。

没有请求。我的应用程序连接到服务器,它将通过TCP发送数据到应用程序。每个Pod都将连接到该服务器。

如果你想对多个实例这样做,它们需要以某种方式协调。

Leader Election模式是一种运行多个实例的方式,但只有一个可以是活动的(例如,当你从同一个队列中读取时)。这是一个需要协调的模式——一次只有一个实例是活动的。因此,此模式仅在更高可用性时使用副本。

如果你想让所有的副本都能正常工作,可以使用分片或分区之类的技术。这也是Kafka(类似于队列)使并发工作的方式。从队列。

也有其他方法可以解决这个问题,例如实现某种形式的锁来协调-但是Kafka中的分区或分片可能是最"云原生"的;解决方案。

最新更新