kafka?kafaka! Kafka...

kafka是什么?

  答:Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。(百度的,大白话一大句。读完一脸懵圈)

kafka的基本术语?

答:

  • 消息:kafka中的数据单元被称为消息,也被成为记录们可以把它看做数据库表中的某一行的记录。
  • 批次:为了提高效率,消息会分批次写入kafka,批次就代表的是一组消息。
  • 主题:消息的中类成为主题(Topic),可以说一个主题代表了一类消息,相当于是对消息进行分类。主题就像是数据库中的表。
  • 分区:主题可以被分为若干个分区(partition),同一个主题中的分区可以不再一个机器上,有可能会部署在多个机器上,由此来实现kafka的伸缩性,单一主题中的分区有序

  

  • 生产者:向主题发布消息的客户端应用程序成为生产者(Producer),生产者用于持续不断的向某个主题发送消息。
  • 消费者:订阅主题消息的客户端程序成为消费者(Consumer),消费者用于处理生产者产生的消息。
  • 消费者群组:一个生产者对应多个消费者,消费者群组(Consumer Group)指的就是由一个或多个消费者组成的群体
  • 偏移量:偏移量(Consumer Offset)是一种元数据,他是一个不断递增的整数值,用来记录消费者发生重平衡时候的位置,以便用来恢复数据。
  • broker:一个独立的kafka服务器就被称为broker,broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘中。
  • broker集群:broker是集群的组成部分,broker集群由一个或多个broker组成,每个集群都有一个broker同事充当了集群控制器的角色(自动从集群的活跃成员中选举出来)
  • 副本:kafka中消息的备份又叫做副本(Replica),副本的数量是可以配置的,kafka定义了两类副本:领导者副本(Leader Replica) 和追随者副本(Follow Replica),前者对外提供服务,后者只是被动跟随
  • 重平衡:Rebalance。消费者组内某个消费者实例挂掉的后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance是kafka消费者端实现高可用对的重要手段。

 Kafka的特性(设计原则)

  • 高吞吐、低延迟::kafka最大的特点就是收发消息非常快,kafka每秒可以处理几十万条消息,它的最低延迟只有几毫秒。
  • 高伸缩性:每个主题(topic)包含多个分区(partition),主题中的分区可以费能不在不同的主机(broker)中。
  • 持久性、可靠性:kafka能够允许数据的持久化存储,消息被持久化到磁盘,并支持数据备份防止数据丢失,kafka底层的数据存储是基于Zookeeper存储的,Zookeper我们知道它的数据能够持久存储。
  • 容错性:允许集群中的节点失败,某个节点宕机,kafka集群能够正常工作。
  • 高并发:支持竖数千个客户端的同事读写

 kafka的使用场景

  • 活动追踪:可以用来追踪用户的行为。
  • 传递消息:应用程序向用户发送通知就是通过传递消息来实现的,这些应用组件可以生成消息,而不需要关心消息的格式,更不需要关心消息是怎么发送的。
  • 度量指标:用来记录运营的监控数据。包括收集各种分布式应用的数据,生产各种操作的几种反馈,比如警报和报告
  • 日志记录:kafka的基本盖面来源于提交日志,比如我们可以把数据库的更新发送到kafka上,用来记录数据库的更新时间,通过kafka以统一接口服务的方式开放给各种consumer、例如Hadoop、HBASE、Solr等
  • 流式处理:流式处理有一个能够提供多种应用程序的领域
  • 限制削峰:kafka多用于互联网领域某一时刻请求特别多的情况下,可以把请求写入kafka中,避免直接请求后端程序导致服务崩溃。

kafka的消息队列

  •  kafka的消息队列一般分为两种模式:点对点模式、发布订阅模式
  • kafka是支持消费者群组的,也就是说kafka中会有一个或者多个消费者,如果一个生产者生产的消息是有一个消费者消费,这种模式就是点对点的模式。(消息被消费以后,queue中不在存储,所以消息消费者不可能消费到已

经被消费的消息。。但是Queue中支持存在多个消费者,但对同一个消息而言只会有一个消费者消费)

  

  • 如果一个生产者或者多个生产者产生的消息能够被多个消费者同时消费的情况,这样的消息队列成为发布订阅模式的消息队列
  • 一个典型的kafka集群中包含若干个Producer(可以是前端产生的PageView,或者是服务器日志,系统的CPU、Memory等),若干个broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干个Consumer Group,以及一个Zookeper集群。Kafka通过Zookeeper管理集群皮遏制,选举leader,以及Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅消息。

核心API

  四个核心API:Producer API、Consumer API、Stream API、Connector API

  •  Producer API,它允许应用程序向一个或多个topics上发送消息记录
  • Consumer API,允许应用程序订阅一个或多个topics并处理为其生成的记录流
  • Stream API,它允许应用程序作为流处理器,从一个或多个主题中消费输入流并为其生成输出流,有效的将输入流转换为输出流。
  • Connector API,它允许构建和运行将kafka主题连接到吸纳有应用程序或数据系统的可用生产者和消费者。例如关系数据库的连接器可能会捕获对表的多有更改

 Kafka嘛原因那么快

  • 顺序读写
  • 零拷贝
  • 消息压缩
  • 分批发送

  Kafka实现了零拷贝原理来快速移动数据,避免了内核之间的切换。Kafka可以将数据记录分批发送,从生产者到文件系统到消费者,可以端到端的查看这些批次的数据

批处理能够进行更有效的数据压缩并减少I/O延迟,Kafka采取顺序写入磁盘的方式,避免了随机磁盘寻址的浪费,更多关于磁盘寻址的了解。

kafka?kafaka! kafka...的更多相关文章

  1. kafka技术分享01--------why we study kafka?

    kafka技术分享01--------why we study kafka? ​ 作为一名大数据工程师,我们所面对的大多数是数据密集型的应用,而非计算密集型的应用.对于数据密集型的应用,如何解决数据激 ...

  2. 什么是Kafka?

    通过Kafka的快速入门 https://www.cnblogs.com/tree1123/p/11150927.html 能了解到Kafka的基本部署,使用,但他和其他的消息中间件有什么不同呢? K ...

  3. 如何快速全面掌握Kafka?这篇文章总结了

    Kafka 是目前主流的分布式消息引擎及流处理平台,经常用做企业的消息总线.实时数据管道,本文挑选了 Kafka 的几个核心话题,帮助大家快速掌握 Kafka,包括: Kafka 体系架构 Kafka ...

  4. Golang中如何正确的使用sarama包操作Kafka?

    Golang中如何正确的使用sarama包操作Kafka? 一.背景 在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源): 用户A给B发送消息,msg_gateway收到消息后,投 ...

  5. Kafka监控系统Kafka Eagle剖析

    1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题.并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑, ...

  6. Kafka集群安装部署、Kafka生产者、Kafka消费者

    Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...

  7. Apache Kafka工作流程| Kafka Pub-Sub Messaging

    1.目标 在我们上一篇Kafka教程中,我们讨论了Kafka Docker.今天,我们将讨论Kafka Workflow.此外,我们将详细介绍Pub-Sub Messaging的工作流程以及Queue ...

  8. kafka学习(三)-kafka集群搭建

    kafka集群搭建 下面简单的介绍一下kafka的集群搭建,单个kafka的安装更简单,下面以集群搭建为例子. 我们设置并部署有三个节点的 kafka 集合体,必须在每个节点上遵循下面的步骤来启动 k ...

  9. Kafka系列之-Kafka入门

    接下来的这些博客,主要内容来自<Learning Apache Kafka Second Edition>这本书,书不厚,200多页.接下来摘录出本书中的重要知识点,偶尔参考一些网络资料, ...

随机推荐

  1. 群晖NAS被攻击

    上周给新员工办理入职的时候,因为我们有自己的NAS系统,给他们建账号的时候,突然发现群晖无法登陆,很奇怪. 然后查看群晖系统,发现网络能Ping 通,但是群晖管理界面无法打开,一开始以为机房天热,硬盘 ...

  2. rest framework之限流组件

    一.自定义限流 限流组件又叫做频率组件,用于控制客户端可以对API进行的请求频率,比如说1分钟访问3次,如果在1分钟内超过3次就对客户端进行限制. 1.自定义限流 假设现在对一个API访问,在30s内 ...

  3. Java数据库事务四大特性以及隔离级别

    四大特性ACID 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.失败回滚的操作事务,将不能对数据库有任何影响 一致性(Consistency) 一致性是指事 ...

  4. Postman Interceptor和postman更改id仍然无法使用的,从这里下载相同版本的postman和interceptor插件

    1.postman安装: chrome://extensions/打开,把下载好的postman插件拖到里面就可以了. 2.Postman interceptor安装: chrome://extens ...

  5. C判断语句

    C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). C 语言把任何非零和非空的值假定为 true,把零或 null ...

  6. 【原理】RabbitMQ架构图

    Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输, Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列. Queue:消息 ...

  7. Shiro学习(23)多项目集中权限管理

    在做一些企业内部项目时或一些互联网后台时:可能会涉及到集中权限管理,统一进行多项目的权限管理:另外也需要统一的会话管理,即实现单点身份认证和授权控制. 学习本章之前,请务必先学习<第十章 会话管 ...

  8. python 模块-json

    1.JSON(Javascript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Lan ...

  9. LINIX上Nginx的从零安装

    源码编译方式: #一般系统中已经装了了make和g++,无须再装 安装make: yum -y install autoconf automake make 安装g++: yum -y install ...

  10. pandas中读取文件报错

    import pandas as pd fileName = "路径中带有中文/xxx.csv" tf_train = pd.read_csv(fileName) 会提示报错 OS ...