Kafka的真正定位并不是消息系统
极客时间编辑部
讲述:杜力大小:1.18M时长:02:35
近日,Confluent 联合创始人兼 CEO 杰伊·克雷普斯(Jay Kreps)在其官方博客上发表了一篇博文,文中他指出 Kafka 的终极目标是要让流式处理成为现代企业的主流开发范式,并表示 Kafka 可以用于像数据库那样进行持久存储,而非只是消息系统。
很多用户都在问他们是否可以把 Kafka 作为长期的数据存储来使用。很显然,如果把数据保留策略设置为“永久”或者启用主题的日志压缩功能,那么数据就可以被永久保存下来。但其实大部分用户真正想知道的是,这样做是不是很疯狂。
杰伊的回答也直截了当。他说人们一直都在这么做,甚至有的用户已经在生产环境的 Kafka 集群中保存了超过 1TB 的数据。在 Kafka 里存储数据并不是什么疯狂的事,因为 Kafka 本来就是设计用来存储数据的,在 Kafka 中,数据经过校验后被持久化在磁盘上,并通过复制副本提升容错能力。
那么人们为什么会对使用 Kafka 来存储数据心存疑问呢?因为很多用户其实是把 Kafka 当成了消息队列系统。而消息队列有一些不成文的规则,比如“不要在消息队列里保存消息”等。
杰伊解释道,传统的消息系统在设计上存在很多不足。从根本上讲,任何一个异步消息系统都会保存消息,只是时间很短,有时候只有几秒钟,直到消息被消费为止。假设有一个服务向消息队列发送消息,并希望有一种机制可以保证其他服务能够收到,那么消息就需要保存在某个地方,直到其他服务读取它。如果消息系统不擅长存储消息,也就谈不上给消息“排队”了。
当然有些用户可能会觉得自己不需要长时间保留消息。但不管怎样,如果消息系统持续地处理负载,总会有一些未被消费的消息需要保存下来。而一旦消息系统发生崩溃,并且没有有效的容错存储机制时,这些数据就会丢失。消息存储是消息系统的基础,但人们总是忽略这一点。
实际上,Kafka 并非传统意义上的消息队列,它与 RabbitMQ 等消息系统并不一样。它更像是一个分布式的文件系统或数据库。简单来说,它们有三个关键区别:
Kafka 持久化日志,这些日志可以被重复读取和无限期保留;
Kafka 是一个分布式系统,它以集群的方式运行,可以灵活伸缩,在内部通过复制数据提升容错能力和高可用性;
Kafka 支持实时的流式处理。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- GeekAmI有空可以研究下,哈哈
收起评论