共计 986 个字符,预计需要花费 3 分钟才能阅读完成。
背景
项目里使用了 kafka 和 spark 作消息的流式处理,但是我对 kafka 一窍不通。每次测试找我 kafka 都是傻坐着,主管让我花时间学习 kafka。
kafka 介绍
在大数据时代,分析,处理和挖掘海量数据成为了目前技术领域的热点和难点。kafka 是一款开源,轻量,分布式,可分区,可备份的消息系统。kafka 能够很好地处理活跃的流数据,使得数据在各个子系统中高性能、低延时地不停流转。
kafka 特性
消息可持久化
kafka 存储数据使用的是文件系统。只要文件系统足够大,数据就可以一直追加。kafka 也提供了数据最大保存时间,用户可以设置。因为是写到硬盘上,所以节点故障,重启后数据可恢复
高吞吐量
- kafka 使用文件系统存储数据,按理说性能不会太高。但 kafka 采用顺序写,顺序写比文件的随机写快 6000 倍;
- 在写入时采用零拷贝技术 (在两个文件描述符(打开或新建文件会返回文件描述符,读写文件都需要这个东西)之间进行操作,完全内核操作),避免了文件从用户态转变为内核态的数据拷贝;
- kafka 支持数据压缩和批量发送;
- kafka 每个主题有多个分区;
扩展性
因为依赖 zk 注册,只要注册服务。就可以在多态廉价服务器上搭建集群
多客户端
支持 java,scala,c,c++,python,go,erlang,ruby,node.js 等,还好我都认识。
kafka streams
kafka 0.10 后引入了 kafka stream,一个专注于流处理的 jar 包。
安全机制
生产者,消费者连接代理要认证,zk 连接代理要认证,通信数据加密,客户端读写也要认证。
数据备份
kafka 可以为每个主题指定副本数,进行持久化备份
轻量
kafka 的代理是不会记录消息是否被消费,消费偏移量的管理交由消费者自己或组协调器来维护。
消息压缩
kafka 支持 gzip,snappy,lz4 三种压缩方式,把多条消息压缩成 messageset,再放到一个消息中。
kafka 和其他消息中间件比较
https://rocketmq.apache.org/d…
kafka 应用场景
- 消息系统
- 应用监控,kafka 接收应用程序的健康相关的指标
- 用户行为追踪。kafka 和 spark 集成,进行数据分析。很大众的一种解决方案
- 需要将流数据交给其他流计算框架处理
- 持久化日志。利用 kafka 的消息持久化特性,同时 kafka 支持和 hdfs 和 flume 整合,方便数据转移
正文完
发表至: Kafka
2019-09-22