写点什么

Apache Kafka —一个不同的消息系统

  • 2014-01-04
  • 本文字数:1267 字

    阅读完需:约 4 分钟

Apache 已经发布了 Kafka 0.8,也是自从成为 Apache 软件基金会的顶级项目后 Kafka 的第一个主版本。 Apache Kafka 是发布—订阅消息传递,实现了分布式提交日志,适用于离线和在线消息消费。它最初由 LinkedIn 开发的消息系统,用于低延迟的收集和发送大量的事件和日志数据。最新版本包括群集内复制和多数据目录支持。目前请求处理也是异步的,使用请求处理线程的附属线程池来实现。日志文件可以按年龄进行覆盖,并且日志级别可通过 JMX 进行动态设置。性能测试工具已提供,帮助解决存在的性能问题,并寻找潜在的性能优化点。

Kafka 是一个分布式,分区化,可复制的提交日志服务。生产者将消息发布到 Kafka 主题,消费者订阅这些主题并消费这些消息。在 Kafka 集群上一个服务器称为一个 Broker。对于每一个主题,Kafka 群集保留一个用于缩放,并行化和容错性的分区。每个分区是一个有序,不可变的消息序列,并不断追加到提交日志文件。分区的消息每个也被赋值一个称为偏移顺序的序列化编号。

偏移是由消费者来控制。典型的消费者将处理列表中的下一条消息,它可以以任何顺序接收消息,因为 Kafka 集群为所有发布的消息保留一段可配置的时间。这让消费者很灵活,他们可以来去自由而不影响群集,并适合像 Hadoop 集群这样的脱机消费者。生产者能够选择那一个主题,主题的那一个分区,来发布该消息。消费者自己也可以分配一个消费者组名,每个消息将发送给每个订阅消费者组的消费者。如果所有的消费者有不同的消费组,那么消息将被广播到每一个消费者。

Kafka 可以像一个传统的消息 Broker 使用。它具有高吞吐量,内置分区,可复制和容错等特性,这使得它成为大型消息处理应用的理想解决方案。Kafka 也可以用于高访问量的网站活动的跟踪机制。网站活动可以被发布,并且可以被实时处理,或加载到 Hadoop 或离线的数据仓库系统。Kafka 也可以用来作为一种日志整合方案。代替工作于日志文件,日志可以作为消息流处理。

Kafka 目前用于 LinkedIn,它每天处理超过 100 亿消息,持续负载平均每秒 172,000 消息。目前,无论从内部和外部的使用数据的应用程序大量使用多订阅者支持。每个消息发布出来后,基本上会有 5.5 个消息消费者使用,这导致的结果是每一天将有 550 亿的消息发送给实时消费者。367 个主题涵盖用户活动的主题和运营数据,其中最大将每天增加的平均 92GB 批量压缩消息。信息保存时间为 7 天,这些平均约 9.5 TB 压缩消息跨越主题。除了在线消费者,还有众多的大型 Hadoop 集群,它们消费频繁,高吞吐量,并行矩阵,作为离线数据负载的一部分。

作为入门,访问官方的 Apache Kafka 文档页,你可以学习更多和下载 Kafka。也有一篇来自 LinkedIn 的论文,标题为《构建LinkedIn 的实时活动数据管道》 , 该论文讨论Kafka 建立原因和Kafka 设计上的特性。

查看英文原文: Apache Kafka - A Different Kind of Messaging System


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-01-04 22:4911788

评论

发布
暂无评论
发现更多内容

每日一R「20」网络编程(二)

Samson

学习笔记 8月月更 ​Rust

加速拥抱数字化,云时通打造全新数字中台!

创意时空

「35分钟」开发刷题功能

小鑫同学

前端 H5 数据分析、 分页查询 开发.

牵手华为云,云时通SRM助力企业采购数字化升级!

创意时空

玩转KubeEdge保姆级攻略

乌龟哥哥

8月月更

【实践】手把手带你实现JWT登录鉴权

迷彩

分布式 微服务 前后端分离 JWT 8月月更

直播预告 | Homebrew 作者 Max Howell:如何打造杰出的开发者工具

思码逸研发效能

开源 研发效能 开发者工具 开发工具 科技

乘云远航|共赢新征程,打造数字化供应链竞争力!

创意时空

【JVM】HotspotJVM对象的分配策略,栈上分配与TLAB

小明Java问道之路

8月月更

【React】使用Next.js构建并部署个人博客

海底烧烤店ai

nuxt 博客开发 博客搭建 react rout 8月月更

一文详解产品经理与项目经理的区别

产品海豚湾

产品经理 职业发展 项目经理 产品设计与思考 9月月更

Apache DolphinScheduler 简单任务定义及复杂的跨节点传参

白鲸开源

工作流调度 海豚调度 调度器 大数据调度 任务传参

长安链RPC服务学习笔记

长安链

非关系型数据库Redis核心内容

浅羽技术

数据库 redis redis持久化 Memcache 8月月更

[JS入门到进阶] 手写解析uin8数组的工具:解析二进制字节,太快太方便了!

HullQin

CSS JavaScript html 前端 8月月更

C/C++模板类模板与函数模板区别,以及用法详解

CtrlX

c c++ 面向对象 模板方法 8月月更

使用 ECK 在 Kubernetes 集群中管理 Elastic Stack

Se7en

长安链国密TLS设计和实现学习

职场人的未来,GO!咱们上云办公

创意时空

【JVM】HotspotJVM中的对象及引用

小明Java问道之路

JVM 内存 引用 对象 8月月更

zookeeper的选主过程

浅羽技术

zookeeper 分布式 ZooKeeper原理 8月月更

React Spring实战之API以及animated 组件的运用

恒山其若陋兮

8月月更

【JVM】HotspotJVM分代回收机制

小明Java问道之路

8月月更

《数字经济全景白皮书》银行业RPA应用专题分析 发布

易观分析

RPA 金融 银行

zookeeper的特点和应用场景

浅羽技术

zookeeper 分布式 观察者模式 注册中心 8月月更

浅谈JS发布订阅模式

海底烧烤店ai

JavaScript 前端 发布订阅模式 8月月更

上了NVMe的路,才能飙起全闪存的车

白洞计划

学习 Go 语言数据结构:实现哈希表

宇宙之一粟

哈希表 8月月更

【数据结构实践】手把手带你快速实现自定义二叉树

迷彩

数据结构 算法 二叉树 二叉树遍历 8月月更

一文快速上手 Nacos 注册中心+配置中心!

王磊

Java SpringCloud

飞向深空:ColorOS 超算平台带来性能之变

脑极体

Apache Kafka —一个不同的消息系统_Java_Bienvenido David_InfoQ精选文章