使用 Apache Kafka 的流式应用程序:开场
最初于 2018 年 9 月 14 日在blog.florimondmanca.com上发布。
2018年12月15日更新:本系列最终只有两篇(但内容详尽)的文章。虽然我在这篇开篇博文中承诺了很多,但我没有时间深入探讨。我仍然相信本系列的内容能够帮助你探索Kafka的奥秘,所以希望你会喜欢阅读!*
好消息!经过一番思考,我决定开始我自己的Apache Kafka 系列。
电梯演讲:Apache Kafka是一个分布式流媒体平台。它整合了消息传递功能、流处理和数据存储;它具有容错能力、高度可扩展性和极快的速度。
过去几个月我有幸接触了 Kafka,这段经历至少可以说非常有趣。它是一项极其强大的技术,目前也相当热门/市场化。但它的学习曲线也相当陡峭,所以我觉得写一篇关于它的文章会很有趣。
我们暂时不会深入探讨这个话题。这篇第一篇文章,首先会提供一个论证。
TL;DR:我开始这个系列是为了为正在学习和利用 Apache Kafka 的中级开发人员提供指导和技巧。
让我解释一下。🎉
为什么要再介绍一次?
市面上有很多关于“Apache Kafka 简介”的文章和系列文章。你可以在这里找到一些,甚至还有法语版。
那么为什么我觉得有必要自己写一个呢?
这并不是说类似的内容很少或质量很差。事实上,你只需要在 Medium 上搜索一下,就能找到大量关于该主题的有用文章——从入门介绍到实际示例,再到更高级的概念。
我并非只是为了再做一次介绍而做。我希望我的帖子对我和各位读者都有价值。一想到被抄袭,我就感到恶心。
那么如果不是这些,那是什么呢?
故事时间
我是如何认识卡夫卡的?
五个月前,我在ComplyAdvantage担任软件工程师实习生时,我的团队正在应对一个颇具挑战性的问题。我们需要一种快速、可靠且可扩展的方法来实现发布/订阅功能,即在某个系统发布消息(或事件),并让其他系统订阅这些消息并进行相应的处理。
我们最初的纸笔设计以一种相当迂回的方式使用了消息队列,但我们并不满意。经过一番讨论,我们决定放弃它,转而使用Apache Kafka。一段美好的旅程就这样开始了……
寻找指导
说实话,从各个方面来说,Apache Kafka 都是一头需要被驯服的野兽。
虽然 Kafka 的底层思想——发布/订阅——非常简单,但 Kafka 的本质中有很多概念我并不熟悉。我之前从未接触过分布式系统,也从未真正接触过消息系统。但 Kafka 就是这样的,甚至远不止于此。
所以我需要指导,最终我从我们的领导那里找到了答案。尽管 Apache Kafka 之前从未在 ComplyAdvantage 使用过,但他熟悉其概念和生态系统。由于 Kafka 的诸多优势以及它与我们日常解决的问题的契合度,他渴望成为 Kafka 的先驱。
这一切对我来说都极其令人兴奋。
学习计划
我们一起制定了学习计划。
第一步是了解 Kafka:它是什么?它有什么用途?它有哪些应用?
然后,我们需要学习核心概念:它们是什么,它们各自代表什么?
只有经过初步的教育之后,我们才会谈论如何在工作中使用 Kafka。
所以这就是计划,我们坚持了下来。但说实话,在这个过程中我经历了一些艰难的时刻。Kafka 的概念有时很难理解。
我怀念的一件事就是快速构建的能力。你知道,某种快速教程可以激发你的灵感,让你相信你正在研究的技术确实值得你投入时间和精力。
原因
长话短说,我想用这个系列来指导你学习和在现实世界中应用 Kafka 概念的过程,而不仅仅是描述这些概念是什么或代表什么。
Apache Kafka 是一项出色的技术,如果您没有任何支持或指导,它的学习曲线会相当陡峭。
我们将采取实践方法,构建解决实际问题的流处理系统。请注意,大部分内容将使用Python开发。
在本系列结束时,我希望您能够有足够的信心和知识来解决具有挑战性的问题,用它来构建现实生活中的项目,并在此过程中享受很多乐趣!
这值得我花时间吗?
这个问题问得真好!写博客很重要的一点就是明确你的目标受众,并根据他们的目标受众来写文章。那么,这个系列的目标受众是谁呢?
首先,它不针对哪些人:
- 编码/编程初学者。我希望您至少精通一门语言(最好是 Python,但您也可以根据需要自行调整),并具备基本的软件工程概念和技术知识。我会大量使用终端,并使用一些标准工具,例如 Docker。因此,如果您刚刚入门,可能需要查看更多入门级的介绍(尽管使用 Apache Kafka 开始编程可能并非明智之举)。
- 对于那些正在寻找绝对指南的人来说,我不会写所有内容——首先因为这是不可能的,其次因为很多主题已经被很好地涵盖了。如果你正在寻找权威指南,我读过并推荐O'Reilly的《Kafka:权威指南》,但也有其他资源。
另一方面,我想你会感兴趣,如果:
- 您听说过(或只是好奇)流处理,并且想了解它是什么以及为什么值得考虑。
- 您已完成使所有系统通过 REST API 进行通信,并想要尝试其他方法,或者需要实现更具反应性的架构。
- 您刚刚开始使用 Kafka,并希望获得一些指导来理解其核心概念。
- 您想看到构建流处理应用程序的真实示例。
- 您是一名 Python 开发人员,想要构建由 Apache Kafka 支持的现代 Python 流媒体应用程序。
如果您符合其中一个条件,我想您会喜欢阅读这个系列!
下一步是什么?
这只是关于使用 Apache Kafka 构建流应用程序的系列文章的简短开头。
我相信边做边学,所以下一篇文章将教我们如何使用 Apache Kafka 和 Python构建我们的第一个真实世界的流式应用程序。别担心——我们稍后会讨论流处理范例和 Kafka 的核心概念!
如果你想今天就开始你的 Kafka 之旅,我推荐你阅读这篇很棒的文章:如何使用 Apache Kafka 将批处理管道转换为实时管道。这是我最早阅读的关于这个主题的文章之一,它让我首次了解到如何使用 Kafka 来解决现实世界中的问题。
我对这个系列非常期待,希望你也一样!敬请期待。💻
下一步:使用 Kafka 和 Python 构建流式欺诈检测系统
文章来源:https://dev.to/florimondmanca/streaming-applications-with-apache-kafka-the-opening-58f0