初识kafka
简介
Kafka经常用于实时流数据架构,用于提供实时分析。本篇将会简单介绍kafka以及它为什么能够广泛应用。
kafka的增长是爆炸性的。2017年超过三分之一的世界五百强公司在使用kafka。这其中很多公司每天通过kafka处理超过TB级别的数据。kafka被用于实时数据流、收集大数据或者做一些实时分析。kafka是也为基于内存的微服务提供数据持久化并把数据传输给复杂的事件流系统和IOT模式的自动化系统。
为什么选择Kafka?
Kafka经常用于实时流数据架构,提供实时分析。由于Kafka是一种快速、可伸缩、持久和容错的发布-订阅消息传递系统,所以考虑到JMS、RabbitMQ和AMQP可能存在容量和响应性的不足,Kafka在某些情况下是更优选择。Kafka具有更高的吞吐量、可靠性和复制特性,这使得它适用于跟踪服务调用(跟踪每一个调用)或跟踪物联网传感器数据,而传统的MOM在这些方面有其自己的问题。
Kafka可以与Flume/Flafka、Spark Streaming、Storm、HBase、Flink和Spark一起工作,对流媒体数据进行实时摄取、分析和处理。Kafka为Hadoop BigData lakes 提供数据流。Kafka代理支持大量消息流,用于Hadoop或Spark的低延迟后续分析。此外,Kafka Streaming(子项目)也可以用于实时分析。
Kafka 使用情况
简而言之,Kafka用于流处理、网站活动跟踪、度量收集和监控、日志聚合、实时分析、CEP、将数据传输到Spark、将数据传输到Hadoop、CQRS、重放消息、错误恢复以及内存计算(微服务)的有保障的分布式提交日志。
那些人需要使用Kafka?
处理大量数据的大公司都使用Kafka。它的发源地LinkedIn使用它来跟踪活动数据和运营指标。Twitter将其作为Storm的一部分来提供流处理基础设施。Square使用Kafka作为总线,将所有系统事件转移到各个Square数据中心(日志、定制事件、度量等等),输出到Splunk,用于仪表板,并实现Esper-like/CEP警报系统。Spotify、Uber、Tumbler、高盛、贝宝(PayPal)、Box、思科(Cisco)、CloudFlare和Netflix等其他公司也在使用这个平台。
为什么如此流行?
首先,操作简单。Kafka是用来设置和使用的,并且很容易知道Kafka是如何工作的。然而,其受欢迎的主要原因是它的出色性能。同时它是稳定的,提供了可靠的持久性,具有灵活的发布-订阅/队列,可以很好地扩展到n个消费者组,具有健壮的复制,为生产者提供了可调的一致性保证,并在碎片级别(即Kafka主题分区)提供了保留的排序。此外,Kafka可以很好地处理具有数据流的系统,并使这些系统能够聚合、转换和加载到其他存储中。但如果kafka处理缓慢,其他优点也就都无关紧要。综上之所以受欢迎就是因为快。
为什么快?
Kafka严重依赖操作系统内核来快速移动数据。它基于零拷贝的原则。Kafka使您能够批量数据记录成块。可以看到这些批数据从生产者到文件系统(Kafka主题日志)到消费者。批处理允许更有效的数据压缩和减少I/O延迟。Kafka将不可变的提交日志按顺序写入磁盘,从而避免了随机磁盘访问和缓慢的磁盘查找。通过分片提供水平分割。它将主题日志分割成数百个(可能是数千个)到数千台服务器的分区。这种分片允许Kafka处理大量的负载。
Kafka: 数据流架构
Kafka经常被用于将实时数据流到其他系统中。Kafka是中间层,可以解耦你的实时数据管道。Kafka core不适合直接计算,比如数据聚合或CEP。Kafka流,是Kafka生态系统的一部分,提供实时分析的能力。Kafka可以提供快速通道系统(实时和操作数据系统),比如Storm, Flink, SparkStreaming,以及你的服务和CEP系统。Kafka还用于批量数据分析的数据流。它可以将数据流到您的大数据平台或RDBMS、Cassandra、Spark甚至S3中,以便将来进行一些数据分析。这些数据存储通常支持数据分析、报表、数据科学分析、审计和备份。

架构图
现在我们来回答一些问题。
Kafka是什么?
Kafka是一个分布式流媒体平台,用于发布和订阅记录流。Kafka用于容错存储。Kafka将主题日志分区复制到多个服务器。Kafka是设计处理来应用程序实时产生的数据。Kafka可以快速和有效地使用IO批处理和压缩数据。Kafka用于解耦数据流。也用于将数据流到数据湖、应用程序和实时流分析系统中。
Kafka 分离数据流
Kafka 支持多种开发语言
来自客户机和服务器的Kafka通信使用了TCP上的协议,经过版本化和文档化。Kafka承诺与老客户端保持向后兼容,并且支持许多语言。在c#、Java、C、Python、Ruby和许多其他语言中都有客户端。
Kafka生态系统还提供了REST代理,允许通过HTTP和JSON进行简单的集成,这使得集成更加容易。Kafka还通过Confluent模式注册表支持Avro模式。Avro和Schema Registry允许用多种编程语言生成和读取复杂的记录,并允许记录的演变。
Kafka 的价值
1.Kafka允许您构建实时流数据管道。Kafka支持内存中的微服务(即actor、Akka、Baratine.io, QBit,reactive,Vert.x, RxJava, Spring Reactor)。Kafka允许您构建实时流应用程序,对流进行实时数据分析、转换、反应、聚合、加入实时数据流,并执行CEP(复杂事件处理)。
2.您可以使用Kafka来帮助收集度量/ kpi、聚合来自许多来源的统计数据和实现事件源。您可以将其与微服务(内存中)和actor系统一起使用,以实现内存中的服务(分布式系统的外部提交日志)。
3.您可以使用Kafka在节点之间复制数据、重新同步节点和恢复状态。虽然Kafka主要用于实时数据分析和流处理,但也可以用于日志聚合、消息传递、点击流跟踪、审计跟踪等等
在一个数据科学和分析的世界里,捕获数据并将其输入到您的数据湖和实时分析系统也是一个大问题。既然kafka能够处理这些繁重的用例,那这就是它最大的价值所在。
Kafka 是可扩展的消息存储
Kafka是一个很好的记录/消息存储系统。Kafka就像高速文件系统,用于提交日志存储和复制。这些特性使得Kafka对于所有的应用方式都是有用的。写入到Kafka主题的记录将被持久化到磁盘,并复制到其他服务器以实现容错。由于现代驱动器又快又大,所以它很适合,而且非常有用。Kafka生产者可以等待确认,所以消息是持久的,因为生产者写如完整直到消息复制完成。硬盘架构可很好地伸缩因为现代磁盘驱动器在批量写入时具有很高的吞吐量。此外,Kafka客户端和消费者可以控制读位置(偏移量),这允许用例在有关键错误时重放日志(即修复错误和重播)。由于偏移量是按每个消费者组进行跟踪的,因此消费者可以相当灵活(即重放日志)。
Kafka 会保留消费记录
Kafka集群保留所有已发布的记录。如果不设置限制,它将保存记录,直到耗尽磁盘空间。您可以设置基于时间的限制(可配置保留期)、基于大小的限制(可根据大小配置)或压缩(使用键保存最新版本的记录)。例如,你可以设定3天、2周或1个月的保留政策。主题日志中的记录可供使用,直到根据时间、大小或压缩丢弃为止。消费速度不受大小的影响,因为Kafka总是写到主题日志的末尾。
Kafka经常用于实时流数据架构,提供实时分析。由于Kafka是一种快速、可伸缩、持久和容错的发布-订阅消息传递系统,所以Kafka在某些情况下甚至不会考虑JMS、RabbitMQ和AMQP,因为它的容量和响应性。Kafka具有更高的吞吐量、可靠性和复制特性,这使得它适用于跟踪服务调用(跟踪每一个调用)或跟踪物联网传感器数据,而传统的MOM可能不会被考虑在内。
初识kafka的更多相关文章
- [Kafka][1][初识Kafka]
目录 第1章 初识Kafka 1.1 发布与订阅消息系统 1.1.1 如何开始 1.1.2 独立的队列系统 1.2 Kafka登场 1.2.1 消息和批次(Message and batch) 1.2 ...
- Kafka权威指南 读书笔记之(一)初识Kafka
发布与订阅消息系统 数据(消息)的发送者(发布者)不会直接把消息发送给接收者,这是发布与订阅消息系统的一个特点.发布者以某种方式对消息进行分类,接收者(订阅者)订阅它们, 以便接收特定类型的消息.发布 ...
- 初识Kafka:构架、生产消费模型以及其他相关概念
当前使用的事件总线采用的是Kafka分布式消息队列来完成的,近来项目需要接入到事件总线中,故开启了kafka的学习之旅(之前一直在听说kafka这玩意儿,但是学习计划中还没有将它安排进去,借着这个机会 ...
- kafka 教程(一)-初识kafka
消息队列 MQ 消息队列就是 消息 message 加 队列 queue,是一种消息传输的容器,提供生产和消费 API 来存储和获取消息. 消息队列分两种:点对点(p2p).发布订阅(pub/sub) ...
- 初识 Kafka Producer 生产者
目录 1.KafkaProducer 概述 2.KafkaProducer 类图 3.KafkaProducer 简单示例 温馨提示:整个 Kafka Client 专栏基于 kafka-2.3.0 ...
- kafka学习(一)初识kafka
文章更新时间:2020/06/08 一.简介 定义:kafka是一个分布式,基于zookeeper协调的发布/订阅模式的消息系统,本质是一个MQ(消息队列Message Queue),主要用于大数据实 ...
- Kafka从入门到放弃(一) —— 初识Kafka
消息中间件的使用已经越来越广泛,基本上具有一定规模的系统都会用到它,在大数据领域也是个必需品,但为什么使用它呢?一个技术的广泛使用必然有它的道理. 背景与问题 以前一些传统的系统,基本上都是" ...
- 《Kafka笔记》1、Kafka初识
目录 一.初识Kafka 1 apache kafka简介 2 消息中间件kafka的使用场景 2.1 订阅与发布队列 2.2 流处理 3 kafka对数据的管理形式 4 kafka基础架构 5 Ka ...
- Kafka学习(一)kafka指南(about云翻译)
kafka 权威指南中文版 问题导读 1. 为什么数据管道是数据驱动企业的一个关键组成部分? 2. 发布/订阅消息的概念及其重要性是什么? 第一章 初识 kafka 企业是由数据驱动的.我们获取信息, ...
随机推荐
- [机器学习]回归--Support Vector Regression(SVR)
来计算其损失. 而支持向量回归则认为只要f(x)与y偏离程度不要太大,既可以认为预测正确,不用计算损失,具体的,就是设置阈值α,只计算|f(x)−y|>α的数据点的loss,如下图所示,阴影部分 ...
- 设计shell脚本选项:getopt
man 1 getopt翻译:https://www.cnblogs.com/f-ck-need-u/p/9757959.html 写shell脚本的时候,通过while.case.shift来设计脚 ...
- [转]web串口调试助手,浏览器控制串口设备
本文转自:https://blog.csdn.net/ldevs/article/details/39664697 打开串口时查找可用串口供选择 通过javascript调用activex控制串口收发 ...
- .net core Identity集成IdentityServer(3) 一键登出
在客户端程序, 我们补充一键登出操作. 使用了idsv之后, 退出的操作需要删除本地cookie, 然后去请求认证服务器, 也删除认证服务器的cookie. 官网给的退出的代码 public asyn ...
- [android] 内容提供者实现
[android] 内容提供者实现 上一节的主机名类似网络上的域名,协议是content://,可以定义一下规则 content://主机名/insert 添加操作 content://主机名/del ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- Spring Bean的生命周期,《Spring 实战》书中的官方说法
连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试.这里找到了Spring 实战中的官方说法.希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看 ...
- Netty中的HttpObjectAggregator
Http的Get,POST Get请求包括两个部分: request line(包括method,request uri,protocol version)) header 基本样式: GET /?n ...
- Git学习(一)
版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制. 一.集中式版本控制系统 v.s ...
- neutron 多租户隔离的实现以及子网间路由的实现
1.一个network相当于一个二层网络,使用vxlan 隧道连通所有的CNA节点. 2.一个VPC下有多个network,也就是会分配多个vxlan隧道,这些子网间的路由是通过DVR实现的.DVR就 ...