毋庸置疑,目前 Apache Kafka 是整个消息引擎领域的执牛耳者,也是大数据生态圈中颇为重量级的一员。从最早诞生于 LinkedIn 的“分布式消息系统”,到现在集成了分发、存储和计算的“流式数据平台”,Kafka 广泛应用于国内外大厂,比如 BAT、字节跳动、美团、Netflix、Airbnb、Twitter 等等。
我身边也有越来越多的工程师们,把 Kafka 加入到自己的学习列表。的确,我们仅需要学习一套框架,就能在实际业务系统中实现消息队列应用、应用程序集成、分布式存储构建,甚至是流处理应用的开发与部署,可谓相当超值了。
不过,想要学透 Kafka 没有想象中的那么简单,学习路径和方法尤为重要。我的建议是:千万不要直接扎到具体的细节中,亦或是从一个很小的点开始学习。因为你无法建立全局的认知观,从而实现系统地学习。
在我看来,针对不同的角色,Kafka 的学习路径是不一样的。
如果你是软件开发工程师,可以先根据编程语言寻找对应的 Kafka 客户端,然后去官网上学习代码示例,正确编译和运行这些样例。接下来,你可以尝试修改样例代码并使用其他的 API,之后观测你修改的结果。如果这些都没有难倒你,你可以自己编写一个小型项目来验证下学习成果,然后就是改善和提升客户端的可靠性和性能了。到了这一步,就熟读一遍 Kafka 文档吧,确保你理解了那些可能影响可靠性和性能的参数。最后是学习 Kafka 的高级功能,比如流处理应用开发。
如果你是系统管理员或运维工程师,那么学习目标应该是如何根据实际业务需求评估、搭建生产Kafka 线上环境。对生产环境的监控也是重中之重的工作,Kafka 提供了超多的 JMX 监控指标,你可以选择任意你熟知的框架进行监控。有了监控数据,作为系统运维管理员的你,势必要观测真实业务负载下的 Kafka 集群表现。之后利用已有的监控指标来找出系统瓶颈,然后提升整个系统的吞吐量,这是最能体现你工作价值的地方。
说到这里,送大家一张 Kafka 学习框架,出自 Kafka 资深专家胡夕之手。我想你应该听过他的书《Apache Kafka实战》,豆瓣评分 8.8 分。胡夕根据他的实战经验,把 Kafka 学习框架整理成了下图。具体地,分为 Kafka 入门、Kafka 的基本使用、客户端详解、Kafka 原理介绍、Kafka 运维与监控以及高级 Kafka 应用