大部分人使用Apache Kafka,但是他们并没有搭配合适的工具来充分挖掘他的全部潜力。
那么如何与众不同呢? 答案就在这个简单的技术栈。
我把它称作:
Kafka 瑞士军刀
全部是开源的。??
在看看每个组件是如何互补的。(2 分钟阅读)
? Kafka Connect
对吧,Kafka 中的数据总是来自于某个地方么?
并且,别忘了,数据必须要“流向”某个地方!
你可能会有:
? 需要获取其数据的系统(源系统)
? 需要往里面输送 Kafka 数据进行处理的系统(接收系统)
其中的大部分系统都很常见,比如 ElasticSearch, Snowflake, PostgreSQL, BigQuery, MySQL 等等,你懂我的意思。
借助 Connect,我们可以提供经过验证的开源集成方式,以一种通用的方式让 Kafka 可以与其他系统进行插拔式的集成。
因此,我们绝对会加以运用的。
? Kafka Streams
有时,数据需要进行处理。
无论是丰富它、过滤掉一些东西,还是把多个主题混在一起 - Kafka Streams 都可以帮你做到,并且还是实时的。? ├──
它的 API 允许你简单地选择一个目标源主题,编写你的处理逻辑,并把所有的处理结果输出到接收主题里。
有一个最棒的优点就是?它能实现精准一次性的处理。
? Schema Registry
你的系统中的数据应该是有版本并且强类型的。
Schema Registry 服务器,就是在此出马,因为在序列化数据(数据写入时)或反序列化(数据读取时),客户端会在此之前先和服务器进行对话。
Registry 就像简单数据的数据库,它允许你更方便、更灵活的按照组织的成长去发展你的数据。
可能有点无趣?但是必要的。
? REST Proxy
为了尽可能的在 Kafka 中积累大量数据,你需要尽可能降低生产数据的阻力。
Kafka 的客户端几乎存在于所有的编程语言中,但是其支持程度参差不齐。你会出现各种错误,不能完整的发布所有功能等等。
每种编程语言都重新实现这个协议也不容易。
HTTP 既易于使用,又易于理解,而且延伸的库也无处不在。
REST Proxy 就允许你通过 HTTP 来与 Kafka 进行交互。太棒了。
? Cruise Control
你的分区如何分布可能决定着你的集群在今后生命周期内的性能表现。
资源利用率失衡可能会引发热点,即使你给集群添加新的 broker,也可能无法解决。
那么有一种能持续监控集群性能,根据这些来自动反应去缓和这些问题的系统是必要的。
应运而生 - Cruise Control。名字很贴切,不是吗?
? ksqlDB
尽管使用 Kafka Streams 创建流处理工作负载需要你能编程 - 但是ksqlDB可以让你用简单的 SQL 做同样的事。
你可以把它叫做通过 SQL 流处理 Kafka
它允许你:
? 创建连接器(原生集成 Kafka Connect)
? 进行持续的转换
? 创建你的流的物化视图等等!
? Strimzi Operator
可以帮你在 Kubernetes 中一键设置 Kafka 和相关的组件。简化升级,安全访问,创建和管理主题和用户。
? kafka-ui
我们显然需要一个东西来可视化全部的这些!
Kafka UI 就是众多 Kafka UI 产品中的一种。
除了原创名称外,它获取的星星??也是最多的。
这款工具,不仅让你能查看所有你需要的数据,包括 schemas 和连接器,而且还允许你管理多个 Kafka 集群。
以上就是我的 Kafka 瑞士军刀
你觉得还有什么地方可以改进呢?
本文暂时没有评论,来添加一个吧(●'◡'●)