网易云课堂学习- Kafka入门及使用

简介
kafka是linkedin使用scala编写的具有高水平扩展、高吞吐量的分布式消息系统。
kafka对消息保存时根据topic进行归类,发送消息者称为producer,消息接收者称为consumer,此外kafka集群由多个kafka实例组成,每个实例(server)称为broker。
无论是kafka集群还是producer和consumer都依赖zookeeper来保证系统的可用性,为集群保存一些meta信息。

主流MQ对比
网易云课堂学习- Kafka入门及使用
吞吐量:kafka>rabbtimq>activemq
数据准确性:rabbitmq>activemq>kafka
kafka对集群支持很好,最少部署3台。
scala语言在大数据开发中应用较广,是函数式编程。

kafka主要特性
kafka是一个流处理平台,流平台需要如下特性。

  1. 可发布和订阅流数据,类似消息队列或企业级消息系统。
  2. 以容错的方式存储流数据。
  3. 可以在流数据产生时就处理。

kafka适合什么样的场景?

  • 基于kafka,构造实时流数据管道,让系统或应用之间可靠地获取数据。
  • 构建实时流式应用程序,处理流数据或基于数据做出反应。

相关概念-AMQP协议
是一个提供统一消息服务的标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件而设计。

网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
相关概念
网易云课堂学习- Kafka入门及使用
kafka中的key并不唯一,是控制数据进入哪一个partition
数据只在一个partition中保证顺序
网易云课堂学习- Kafka入门及使用
Kafka核心API

  1. producer API:
    允许一个应用程序发布一串流式的数据到一个或多个topic。

  2. consumer API:
    允许一个应用程序订阅一个或多个topic,并且对发布给它的数据进行处理。

  3. Streams API:
    允许一个应用程序作为一个流处理器,消费一个或多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的切换。

  4. Connector API:
    允许构建并运行可重用的生产者或消费者,将kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。

网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
kafka API -consumer
网易云课堂学习- Kafka入门及使用
kafka整体架构
网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
kafka使用场景
网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
网易云课堂学习- Kafka入门及使用
为什么要用流处理?
批处理存在一天的延时(一般是晚上处理)
流处理可以是实时处理的