kafka的学习
kafka理论面向实时、可以发布和订阅、处理持续数据流的平台以集群的方式运行具备低延迟kaka的数据单元被称为消息,即数据库中的一条数据schema为消息模式,Avro提供紧凑的数据化格式,模式和消息体是分开的kafka的消息通过topic进行分类,一个topic的消息可以保存在多个分区(partition)上,单分区消息先入先出,一个分区的消息只能被一个消费者消费,但是一个消费者可以消费多个分区
·
kafka理论
- 面向实时、可以发布和订阅、处理持续数据流的平台
- 以集群的方式运行
- 具备低延迟
- kaka的数据单元被称为消息,即数据库中的一条数据
- schema为消息模式,Avro提供紧凑的数据化格式,模式和消息体是分开的
- kafka的消息通过topic进行分类,一个topic的消息可以保存在多个分区(partition)上,单分区消息先入先出,一个分区的消息只能被一个消费者消费,但是一个消费者可以消费多个分区的数据
- 生产者和消费者均属于客户端
- 偏移量offset,消费者通过偏移量来区分已经读取过的消息,每个消息的偏移量都是唯一的,消费者把每个分区的偏移量保存在zookeeper或kafka上
- 一个独立的kafka服务器被称为broker,多个broker组成一个kafka集群,一个分区可以从属于多个broker;同时broker可扩。
- kafka的Mirror Maker工具可以实现kafka多集群之间的消息复制
- kafka可以无缝支持多个生产者和多个消费者,kafka支持多个消费者共享同一个topic上的数据流,不会造成单客户端消费后其他客户端再无法读取的情况
- kafka基于磁盘的数据存储,根据设置的消息保存规则进行保存,可以允许消费者非实时的服务消息
- 数据生态系统使用场景:①活动跟踪 ②传递消息 ③度量指标和日志记录 ④提交日志 ⑤流处理
- topic的自动创建场景:①生产者往topic写入数据时 ②消费者从topic读取消息时 ③生产者或消费者向topic发送元数据请求时
- produce - 作为生产者,向kafka提交一条数据
{
“topic”: // 生产的消息发送到kafka的哪个topic上
“message”: // 生产的消息内容
}
consume - 作为消费者,从Kakfa上消费一条数据,首次消费topic和group不存在时会自动创建
{
“group”: // 以哪个组id从kafka上消费数据
“topic”: // 从kafka的哪个topic上消费数据
} - kafka和redis一起使用,加redis可以缩短服务A的请求时间,增加kafka节点,可以解决服务A和B之间的紧密耦合
kafka的部署
- linux安装java环境、zookeeper、kafka… 未完待续
更多推荐
已为社区贡献1条内容
所有评论(0)