我有一个用java编写的restapi,希望通过使用kafka避免对数据库或其他外部服务的任何额外查询。因此,如果客户机应用程序向/some/service发送请求,我将检查是否有名为“/some/service”的主题,以及该主题中是否已经有一个日志,该日志对应于该服务在过去24小时内对当前用户的前一个响应,否则我只需执行该服务并将要返回的值存储在该主题中。
Kafka的这种用法正确吗?而且,我知道kafka很快,但是有没有一种方法可以在不检查每个日志的情况下确定存储在某个主题中的所有响应中哪些属于当前用户?
1条答案
按热度按时间fd3cxomn1#
这不是Kafka的用例,Kafka是基于流的平台。
场景:-如果我们在请求主题中以json值的形式发送请求元数据和数据,因为主题名称不能有正斜杠,则处理它并将其与元数据一起放回响应主题中,以将其Map到等待的请求。这符合Kafka的条件。
但是你的情况有点不同,你想用kafka作为24小时的缓存,我觉得最好用redis这样的分布式缓存。
缺点:-kafka中的数据将在一天内增加,因此每个请求都必须滚动主题中的所有kafka消息,以便在24小时内验证上一个请求,这是一个巨大的性能缺点。