kafka-1-简介

kafka 简介

定义

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

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

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

kafka 一般用于两大类应用:服务器

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

简单的说并发

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

总的来讲分布式

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

基础概念

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

特性

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

应用场景

  1. 消息队列(Messaging)oop

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

    • 低延迟
    • 强大的持久化保证
  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的日志压缩(不是压缩算法,而是日志的清理,合并机制)特性支持这一用法。

相关文章
相关标签/搜索