我有一个用例,我必须收集用户事件并将其存储在 Kafka 中。在移动应用程序和网站中直接使用 Kafka 客户端直接向 Kafka 生成消息而不是中间层是否有效。Kafka 是为处理数百万并发连接而设计的吗?
从技术上讲,你可以做到。人们不这样做的主要原因,特别是对于移动应用程序,是因为它很难保持产品的长期发展,控制其安全性甚至规模。
在过去的几年里,Kafka Clients API 发生了巨大的变化(最好的情况是,它仍然是一个变化)。它还包括授权和身份验证机制,但您可以用这些机制做什么没有多少自由。Kafka 不是建立在标准化的协议和技术无关的规范上,比如 JMS,后者可以被认为更灵活一些。
此外,与大多数现有技术一样,在主要版本之间,不保证兼容性。您可能需要长时间保留多个服务器版本,因为某些移动客户端仍然过时并且与特定客户端版本耦合,而该客户端版本本身与特定服务器版本耦合。
另一方面,出于同样的原因,您也可能需要长时间处理旧版本的消息模式,只是为了让老客户满意。
这就是 HTTP ,更具体地说,API 网关模式出现的时候。
HTTP API 更容易节流、执行速率限制、应用自定义安全策略、自定义身份验证/授权策略等。它们基于在整个 Internet 上使用的标准协议。
当您计划使用后端平台进行一些合作伙伴集成时,使用 HTTP 也有优势。因为他们可以在不改变技术堆栈的情况下轻松完成。
通过不将 Kafka 暴露给外部客户端,您可以稍后在不影响客户端的情况下更改底层技术堆栈。老实说,虽然 Kafka 是一项出色的技术,但在互联网通信方面很难与 HTTP 竞争。Kafka 实际上提供了一个REST 代理,一个基于 HTTP 的客户端,可能被认为用于此类事情。
归档时间: |
|
查看次数: |
736 次 |
最近记录: |