如何设置Apache Kafka使用者以通过互联网获取数据?

时间:2016-08-28 07:52:20

标签: apache-kafka kafka-consumer-api kafka-producer-api

我已经在英国的网络中的两个不同的服务器上配置了2个Kafka,在印度配置了另一个,我的情况非常简单,英国是出版商,印度是消费者,但没有一个可以得到任何数据。

我检查了防火墙,没有端口阻塞/无论如何。我也用redis pubsub测试了我的场景,但它起作用了但我在Kafka上并不成功。

我应该如何设置我的Kafkas呢?或者是否有可能与卡夫卡这样做?

2 个答案:

答案 0 :(得分:2)

当您想要从多个数据中心进行交互时,不建议使用Kafka。 Kafka旨在为您提供高吞吐量,因为您在同一数据中心生产和使用网络延迟最小的数据中心。

为什么?

一旦您在不同的数据中心拥有消费者,延迟就会影响Kafka与消费者(群组重新平衡/偏移提交/心跳)的协调以及生产者在不同的数据中心中为每条消息获取确认的延迟发送将是相当大的,减慢了您生成消息的速度。

因此,理论上,如果您的网络可靠,您可以很好地进行设置。

现在如果你想让Kafka经纪人在数据中心之间分配,那将会更加昂贵。所有的代理间通信都将被有效地延迟,从而在复制品,网络呼叫(通过互联网),经纪人心跳超时等方面造成滞后,理论上也是可行的。

在这些场景的实践中,最好为每个DC使用本地Kafka群集,它们使用本地托管的应用程序生成/使用消息,并Mirrormaker在数据中心之间聚合消息。

答案 1 :(得分:1)

找到解决方案:

在Apache Kafka的配置中,添加以下行:

$query = "select idci, nameci, nameco, idco
        from city 
        JOIN country on country.idco=city.country_idco 
        ";
if($stmt = $mysqli->prepare($query))
{
$stmt-> bind_param('i', $idci);
                    ^---one parameter to bind, but absolutely NO ? in the query.