通过从第三方源读取自定义路由



我是nginx的新手,我想知道它是否可以帮助我解决我们遇到的一个用例。

我有n个节点,它们从具有相同组id的kafka主题中读取数据,这意味着每个节点都有不相交的数据,通过某个键进行分区。

Nginx无法先验地知道哪个节点有对应于哪个键的数据。但是我们可以建立一个API或者有一个redis实例,它可以告诉我们给定键的节点。

是否有一种方法nginx可以合并这种类型的第三方信息路由请求?

我也欢迎任何答案,即使它不涉及nginx。

Nginx无法先验地知道哪个节点有对应于哪个键的数据

Nginx不需要知道。你需要在Kafka Streams RPC层中使用交互式查询来实现。(Spring- kafka有一个InteractiveQueryService接口,顺便说一句,可以从Spring Web中使用)。

如果你想为KStreams的HTTP/RPC端点提供一个单一的地址,那么这将是一个标准的Nginxupstream定义的反向代理,它将路由到任何的后端服务器,它们反过来与自己通信以获取必要的键/值,并将响应返回给客户端。

我不知道Kafka如何分区

你可以看看源代码,发现它使用了murmur2散列,这在Lua中可用,也可以在Nginx中使用。

但是,同样,这是一个你应该避免的兔子洞。


其他选项,使用Kafka Connect转储数据到Redis(或任何你想要的数据库)。然后编写一个非常类似的HTTP API服务,然后(可选)指向Nginx。

相关内容

  • 没有找到相关文章

最新更新