kafka1简介

58次阅读

共计 1404 个字符,预计需要花费 4 分钟才能阅读完成。

kafka 简介

定义

kafka 是一个分布式的数据流平台

数据流平台有 3 个关键特性:

  • 发布订阅记录流 (streams of records),类似于消息队列或企业级的消息传递系统
  • 以容错的持久化方式存储记录流
  • 当记录流产生时,进行相应处理

kafka 通常用于两大类应用:

  • 构建用于系统和应用间可靠的获取数据的实时数据流管道
  • 构建转换或响应数据流的实时流应用程序

简单的说

  • 可以作为一个可靠的数据流管道
  • 用于处理实时数据流的应用程序

总的来说

kafka 是一个提供(实时)读写数据流的分布式中间件,并提供对记录流的持久化功能

基础概念

  • kafka 作为集群可运行在一台或多台服务器上,可跨多个数据中心
  • kafka 使用 topic 对存储的记录流进行分类
  • 一条记录(消息)由 key,value 和 timestamp(时间戳) 组成
  • kafka 集群中的每个节点称之为 broker

特性

  • 高吞吐,低延迟
  • 可扩展,可动态增加节点,可重新分配分区( 热扩展对运行中程序的影响待确认
  • 持久性,可靠性:支持数据持久化到硬盘,并支持副本机制,
  • 容错性:允许集群中节点失败(若副本数量为 n, 则允许 n - 1 个节点失败)
  • 高并发:支持数千个客户端同时读写

应用场景

  1. 消息队列 (Messaging)

    可代替传统消息队列:解耦,缓存消息

    • 低延迟
    • 强大的持久化保证
  2. 网站活动跟踪(Website Activity Tracking)

    用户网站的活动(page views, searches, other)根据类型被发布到不同的 topic,这些被发布到 topics 中的数据可以作为数据源被应用在不同的场景:实时处理程序,实时监控,被加载至 Hadoop 或离线数据仓库进行数据的离线处理和报告等。

    因为活动信息量非常大,主要用到以下特性

    • 高吞吐量
  3. 度量 (Metrics)

    kafka 通常用于监控一些可操作的数据 (operational monitoring data)。涉及从分布式应用程序中汇总统计信息,然后生成集中的数据源

  4. 日志聚合 (Log Aggregation)

    许多人使用 kafka 来替代日志聚合解决方案。日志收集系统通常从服务器收集物理日志文件,并将其载入一个中心系统(文件服务器或 HDFS)进行处理。与 Scribe(Facebook 开源的日志收集系统),Flume(Flume 最早是 Cloudera 提供的日志收集系统,目前是 Apache 下的一个孵化项目,Flume 支持在日志系统中定制各类数据发送方,用于收集数据)等以日志为中心的系统相比,kafka 具备同样出色的性能,更强的耐用性(副本机制)和更低的端到端延迟

  5. 流处理 (Stream Processing)

    处理由多个阶段组成的处理管道中的数据。从一个 topic 中消费,然后汇总,转换为新的 topic 供后续处理。如新闻推荐:抓取数据发布到 topic1-> 读取数据,格式化,去重 ->topic2-> 读取数据推荐给用户

  6. 事件朔源 (Event Sourcing)

    Event Sourcing 就是基于时间记录一个对象的所有事件,进而根据一系列事件来得到其状态(记录事件而非状态,有点像 binlog)。Kafka 可以存储非常多的日志数据,为基于 event sourcing 的应用程序提供强有力的支持

  7. 提交日志

    kafka 可以从外部为分布式系统提供日志提交功能。该日志有助于在节点之间复制数据,并充当故障节点恢复其数据的重新同步机制,kafka 的日志压缩(不是压缩算法,而是日志的清理,合并机制)特性支持这一用法。

正文完
 0