前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka 和隐藏在它背后的幽灵

Kafka 和隐藏在它背后的幽灵

作者头像
哒呵呵
发布2020-05-08 17:57:45
5030
发布2020-05-08 17:57:45
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

趁着周末简单聊下 Kafka。Kafka 基本上已经成为了大数据领域里的消息系统的标配,仿佛做实时处理不知道或者不懂 Kafka 就落伍了一样。不过也确实如此,不像很多大数据领域里的其它组件有很多竞品,比如计算引擎领域有 MapReduce、Spark、Impala、Presto等,资源调度有 Yarn 、K8S 等,诸如此类,不胜枚举。但是在大数据领域的消息系统这块除了近些年宣传的比较火的 Apache Pulsar 勉强一争外,基本上都是 Kafka 一家独大,或者是类似于 Kafka 的架构。那么 Kafka 有什么特别的呢?

抛开那些谈烂了的技术细节,比如零拷贝、语义之类的东西,读者真感兴趣的话可以关注 Kafka 的官方文档,或者是以官方文档为准看各种国内大牛写的博客,本文不再赘述。

直接点题吧,Kafka 的特别之处就在于 Kafka 是第一个基于 Log (以下称为日志)的理念诞生的消息系统。那么什么是 Log 呢?这里就不得不提到 Kafka 的作者之一 Jay Kreps 在2013年写的一篇文章The Log: What every software engineer should know about real-time data's unifying abstraction,不想读原文的看可以看笔者之前写的一篇文章《不一样的日志》。在日常的软件开发中,日志的重要性往往被忽视了。对了,这里的日志指的不是应用程序打印出来的为了查看应用程序运行状况的日志,而是只能增加的,完全按照时间排序的一系列记录

再次重复一遍:日志是只能增加的,完全按照时间排序的一系列记录

就是这简单的一句话奠定了数据库和分布式系统的基础,启发了分布式共识算法 Raft 和 Paxos 等等,甚至促使 Kreps 写出了 Kafka 。当我们在谈论大数据、人工智能这些时髦的话题时,请不要忘了日志。

不知道大家读了 Martin Kleppmann 的DDIA一书没?Martin Kleppmann 教授在 2019 年写了一篇对未来软件系统架构的畅想的文章Online Event Processing(觉得英文有些难读的话,可以看笔者的一篇解析《如何基于事件流去构建业务系统》),这篇文章就叙述了在服务拆分的大趋势下,日志可以作为各个服务之间保证数据准确性、一致性的“single source of truth”。

正是因为日志这么重要,那么作为第一个基于日志去设计的消息系统 Kafka 就从各种消息系统的竞争中脱颖而出,成为了独树一帜的存在。而 Kafka 后续的特性类似于锦上添花,只要其日志根本理念不发生改变,Kafka 在大数据领域就无可取代。

这就是笔者认为的 Kafka 为何具有如此魅力,如此特别的原因。总结一下,那就是 Kafka 使用了日志只增不减的重要特性,让外部系统读取 Kafka 上消息时,只要在给定初始状态以后,按部就班的执行 Kafka 上的消息就可以获得最终状态,不会因为各种原因出现错误,且自带故障恢复功能,这样就保证了消息在各种数据源进行传输和交换时不会丧失准确性。

因此我们在使用 Kafka 时也不要忘了它背后的功臣,日志。

日志,不仅仅是隐藏在 Kafka 背后的幽灵,也是大数据和分布式系统领域的缔造者。

是的,这就是 Kafka 和日志的渊源,值得单独为它们写一篇文章的伟大产品和伟大理念。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档