我目前正在开发一个用于生成验证码的系统。该系统对用户进行身份验证,向他们发送一个验证码,并将其存储在本地,然后在稍后的某个时间点从用户那里接收验证码,在此之后,验证码将被使用并从系统中删除
最初的建议是使用SQL数据库创建这个系统,但是这个用例只是让Kafka尖叫,而且由于这些代码的持续时间非常短(它们在30秒内过期,这意味着它们几乎必须立即使用),所以只有让生产者和消费者创建和消费保存这些代码的事件才有意义。
然而,问题是必须记录所有事件,即在代码使用/过期时,必须在审计日志中写入一些内容。此外,还必须记录任何使用无效代码的尝试。拥有一个成熟的数据库,然后使用它来在其中包含一个AUDIT_LOG表,这似乎是一种浪费。
因为我们使用的是Sping Boot 所以我们希望使用一些可以轻松连接的即插即用解决方案。我看到有人建议使用Kafka本身来存储审计日志,但是我们需要长期的持久性,Kafka似乎并不适合这样做。也有人建议使用无SQL的DB,我看到一些有前途的仅附加解决方案。
你们这里有什么值得推荐的吗?
2条答案
按热度按时间rdrgkggo1#
根据它的home page Kafka是为
数据管道、流分析、数据集成和任务关键型应用程序
但是你说过你的应用程序的一个重要功能是结构化数据的持久存储,所以如果Kafka本身不提倡这个目的,那么Kafka是否适合这个目的是非常值得怀疑的。
还要记住,您的应用程序可能不仅仅是用例。也许在某些时候需要报告功能。那么,您可能更好地利用可能很多人已经知道或使用过的报告产品,而不是在Kafka之上重新发明所有这些(尽管流分析是Kafka的一个用例,但它可能比例如SQL报告工具更少为人所知)。
sc4hvdpw2#
最初的建议是使用SQL数据库创建此系统
两个都用?Kafka Connect可以从Kafka主题写入JDBC数据库。这样,您就不需要在Java代码中编写JDBC客户端,并且非Java客户端也可以将数据发送到相同的Kafka主题,因为协议是通用TCP,而不是特定于您的数据库。
如果SQL数据库不起作用,您仍然可以在不同的系统上使用相同的Kafka主题(Elasticsearch非常适合日志分析,HDFS或S3对于较大的数据集也是如此)。既然您提到了“离线”系统,那么MinIO是一个自托管的S3兼容选项。