kafka基础介绍

一、kafka介绍

  1.1主要功能

    根据官网的介绍,kafka是一个分布式流媒体的平台,它主要有三大功能:

    1.11:It lets you publish and subscribe to streams of records 发布和订阅消息流,类似消息队列的的功能,这也是将其归类为消息队列的原因

    1.12:It lets you store streams of records in a fault-tolerant way 以容错的方式记录消息流,kafka以文件的方式来存储消息流

    1.13:It lets you process streams of records as they occur. 可以在消息发布的时候进行处理

  1.2使用场景

    1.21:Building real-time streaming data pipelines that reliably get data between systems or applications.在系统和应用程序之间构建可靠的用于实时传输的管道,消息队列

       的功能

    1.22:Building real-time streaming applications that transform or react to the streams of data 构建实时的流数据处理程序来变换或者处理数据流,数据处理功能

    1.23:日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。

    1.24:消息系统:解耦和生产者和消费者、缓存消息等。
    1.25:用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,

       然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
    1.26:运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
    1.27:流式处理:比如spark streaming和storm

  1.3基本机制

    kafka目前主要作为一个分布式的发布订阅的消息系统来使用,下面介绍一下kafka的基本机制

    1.31消息传输流程

    

    producer即生产者,向kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic,上图展示了两个生产者发送了分类为topic1的消息,另外一个发送了分类

    为topic2的消息

    topic即主题,通过对消息指定主题可以为消息分类,消费者可以只关注自己需要的topic中的消息

    consumer即消费者,消费者通过与kafka集群建立长连接的方式,不断的从kafka集群中拉取消息,然后对这些消息进行处理

    从上图可以看出同一个topic下的生产者和消费者数量并不是对应的

    

    1.32kafka服务器消息存储策略

    

    谈到kafka的存储,不得不提到分区,即partitions,创建一个topic的时候,同时可以指定分区的数目,分区数越多,其吞吐量也越大,但是需要的资源也越多,同时也会

    导致更高的不可用性,kafka在接到生产者发送的消息后,会根据均衡策略将消息存储到不同的分区中

      

    在每个分区中,消息以顺序存储,最晚接收的也最后被消费

    1.33与生产者的交互

    

    生产者向kafka集群发送消息时可以指定分区,也可以通过均衡策略来将消息发送到不同的分区中,如果不指定,就会采用默认的随机均衡策略,将数据随机的存储到不

    同的分区中

    1.34与消费者的交互

      

    在消费者消费消息时,kafka使用offset来记录当前消费的位置。

    在kafka的设计中,可以有多个不同的group来同时消费同一个topic下的消息,如图,我们有两个不同的group同时消费,他们的消费的记录位置offset各不相同,不互相

    干扰。

    对于一个group而言,消费者的数量不应该多于分区的数量,因为在一个group中,每个分区至多绑定在一个消费者身上,即一个消费者可以消费多个分区,但一个分区只

    能给一个消费者消费。若一个group中的消费者数量大于分区数量,多余的消费者将不会收到任何消息

    

    

    

    

kafka基础介绍的更多相关文章

  1. kafka 基础知识梳理及集群环境部署记录

    一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...

  2. Kafka入门介绍

    1. Kafka入门介绍 1.1 Apache Kafka是一个分布式的流平台.这到底意味着什么? 我们认为,一个流平台具有三个关键能力: ① 发布和订阅消息.在这方面,它类似一个消息队列或企业消息系 ...

  3. Zookeeper与Kafka基础概念和原理

    1.zookeeper概念介绍 在介绍ZooKeeper之前,先来介绍一下分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成 ...

  4. 【转帖】Kafka入门介绍

    Kafka入门介绍 https://www.cnblogs.com/swordfall/p/8251700.html 最近在看hdoop的hdfs 以及看了下kafka的底层存储,发现分布式的技术基本 ...

  5. Kafka基础教程(四):.net core集成使用Kafka消息队列

    .net core使用Kafka可以像上一篇介绍的封装那样使用(Kafka基础教程(三):C#使用Kafka消息队列),但是我还是觉得再做一层封装比较好,同时还能使用它做一个日志收集的功能. 因为代码 ...

  6. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  7. C++ 迭代器 基础介绍

    C++ 迭代器 基础介绍 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围.迭代器就如同一个指针.事实上,C++的指针也是一种迭代器.但是,迭代器不仅仅是指针,因此你不能认为他们一定 ...

  8. Node.js学习笔记(一)基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  9. Node.js 基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

随机推荐

  1. shell脚本,配置文件加载顺序,以及什么时候加载。

    在linux系统中,有/etc/profile,/etc/bashrc ,~/.bash_profile,~/bashrc这四个配置文件,这些文件,会自动的在某些时候加载,也就是点一下,一般都是些别名 ...

  2. luogu P1966 火柴排队 (逆序对)

    luogu P1966 火柴排队 题目链接:https://www.luogu.org/problemnew/show/P1966 显然贪心的想,排名一样的数相减是最优的. 证明也很简单. 此处就不证 ...

  3. (52)zabbix_sender提交item数据

    zabbix_sender是什么?有什么作用 zabbix获取key值有超时时间,如果自定义的key脚本一般需要执行很长时间,这根本没法去做监控,那怎么办呢?使用zabbix监控类型zabbix tr ...

  4. 我的Python分析成长之路5

    一.装饰器: 本质是函数,装饰其他函数,为其他函数添加附加功能. 原则: 1.不能修改被装饰函数的源代码. 2.不能修改被装饰函数的调用方式. 装饰器用到的知识: 1.函数即变量   (把函数体赋值给 ...

  5. '>>' should be '> >' within a nested template argument list

    在编译关于opencv相机标定的工程的时候出现了这个问题 vector<vector<Point3f>>  objectPoints;  error: 'objectPoint ...

  6. Python模块--time&datetime

    一.Python中时间的表示方式 1.时间戳  如 1552623413.043036 2.格式化的时间字符串  如 2015-12-02 3.struct_time  是一个元组 共有九个元素 二. ...

  7. win10 设置软件开机启动项失效

    问题重现: win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Sta ...

  8. xtu数据结构 G. Count the Colors

    G. Count the Colors Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Jav ...

  9. ubuntu 转换图片格式的方法(sam2p, imagemagick)

    (1) 终端:sudo apt-get install sam2p sam2p [原图片名.格式] [目标图片名.格式] 即可在同一目录下生成目标图片格式 (2) 终端: sudo apt-get i ...

  10. Codeforces Round #415 (Div. 2) 翻车啦

    A. Straight «A» time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...