我要在每天超过十亿个请求的高流量环境中使用Kafka。每个请求都会连接到kafka集群来发送消息。所以每一秒都会有如此多的连接在持续进行。这可能会导致套接字超时等问题。生产者正在建立所有非持久性连接。因此在这种情况下,可能会出现套接字超时或端口耗尽问题。
大多数生态系统是在php,所以我必须使用php库的Kafka。现在,如何有效地使用kafka producer来缓解这种连接争用?
我想到了一个守护进程,它可以提供消息,然后将这些消息批量发送到kafka集群。好的一面是连接的数量有限。缺点是,这种服务的响应延迟会妨碍应用程序。我还必须使用一些中间存储器来保存消息。
现在我知道有很多非常高容量的应用程序/站点使用kafka直接流式传输消息。你们谁能指导我如何解决这些问题?在这种情况下,持久连接有帮助吗?在如此高容量的环境中使用kafka producer的php库本身是个坏主意吗?
2条答案
按热度按时间d7v8vwbk1#
我们也使用kafka java库,就像@apatel说的那样,我认为在你的情况下,你可以尝试用php应用程序为你的服务器提供一些sidecar,sidecar将在开始时创建producer,kafka java驱动程序将管理多个连接。下面是一些关于netflix的sidecar应用程序netflix prana的有趣文章
dgjrabp22#
我们使用的是kafka java库,在服务器启动时连接到kafka。目前,我们每天向Kafka发送约5亿条信息,从来没有任何问题。
创建producer时,它基本上会创建多个连接。。。每个分区一个。因此,只要使用分区,就可以将每条消息直接发送到kafka,而不必缓存它们并成批发送。