网易云课堂学习- Kafka入门及使用
简介
kafka是linkedin使用scala编写的具有高水平扩展、高吞吐量的分布式消息系统。
kafka对消息保存时根据topic进行归类,发送消息者称为producer,消息接收者称为consumer,此外kafka集群由多个kafka实例组成,每个实例(server)称为broker。
无论是kafka集群还是producer和consumer都依赖zookeeper来保证系统的可用性,为集群保存一些meta信息。
主流MQ对比
吞吐量:kafka>rabbtimq>activemq
数据准确性:rabbitmq>activemq>kafka
kafka对集群支持很好,最少部署3台。
scala语言在大数据开发中应用较广,是函数式编程。
kafka主要特性
kafka是一个流处理平台,流平台需要如下特性。
- 可发布和订阅流数据,类似消息队列或企业级消息系统。
- 以容错的方式存储流数据。
- 可以在流数据产生时就处理。
kafka适合什么样的场景?
- 基于kafka,构造实时流数据管道,让系统或应用之间可靠地获取数据。
- 构建实时流式应用程序,处理流数据或基于数据做出反应。
相关概念-AMQP协议
是一个提供统一消息服务的标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件而设计。
相关概念
kafka中的key并不唯一,是控制数据进入哪一个partition
数据只在一个partition中保证顺序
Kafka核心API
-
producer API:
允许一个应用程序发布一串流式的数据到一个或多个topic。 -
consumer API:
允许一个应用程序订阅一个或多个topic,并且对发布给它的数据进行处理。 -
Streams API:
允许一个应用程序作为一个流处理器,消费一个或多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的切换。 -
Connector API:
允许构建并运行可重用的生产者或消费者,将kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。
kafka API -consumer
kafka整体架构
kafka使用场景
为什么要用流处理?
批处理存在一天的延时(一般是晚上处理)
流处理可以是实时处理的