我将在每天超过十亿次请求的高流量环境中使用kafka。每个请求都将与kafka集群建立连接以发送消息。因此,每秒都会有如此多的连接。这可能会导致套接字超时等问题。 生产者正在进行所有非持久性连接。因此在这种情况下可能存在套接字超时或端口耗尽问题。
大多数生态系统都在php中,所以我必须使用php库来实现kafka。现在如何有效地使用kafka生产者来缓解这种连接争用?
我想到了一个可以传递消息的守护进程,它会将这些消息批量发送到kafka集群。另外一方面是连接数量有限。缺点是这种服务的响应延迟会妨碍应用程序。此外,我必须使用一些中间存储来保存消息。
现在我知道有很多极高容量的应用程序/站点使用kafka来直接传输消息。你们中的任何一个人都可以指导我如何解决这些问题吗?在这种情况下持久连接可以帮助吗?在如此高容量的环境中使用kafka-producer的php库本身是个坏主意吗?
答案 0 :(得分:2)
我们正在使用kafka java库,我们在服务器启动时连接到kafka。目前,我们每天向卡夫卡发送大约5亿条消息,从未发生任何问题。
创建Producer时,它基本上会创建多个连接...每个分区一个。因此,只要您使用分区,就可以将每条消息直接发送到kafka,而无需将它们缓存在一边并批量发送。
答案 1 :(得分:2)
我们也使用kafka java库,我们像@apatel那样说,我认为在你的情况下你可以试着用你的php应用程序为你的服务器提供一些sidecar,sidecar将在开始时创建Producer而Kafka java驱动程序将管理多个连接。这是一篇关于Netflix的边车应用Netflix Prana
的有趣文章