本文为博主原创,未经允许不得转载:

1. Kafka 的使用场景:

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

  2. 消息系统:解耦和生产者和消费者、缓存消息等。

  3. 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过

    订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。

  4. 运营指标:Kafka也经常用来记录运营监控数据。

2. 基本概念:

  kafka是一个分布式的,分区的消息(官方称之为commit log)服务。

  Broker :消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群

  Topic : Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic

  Producer : 消息生产者,向Broker发送消息的客户端

  Consumer : 消息消费者,从Broker读取消息的客户端

  ConsumerGroup : 每个Consumer属于一个特定的ConsumerGroup,一条消息可以被多个不同的Consumer Group消费,

    但是一个Consumer Group中只能有一个Consumer能够消费该消息

  Partition : 物理上的概念,一个topic可以分为多个partition,每个partition内部消息是有序的

  

  producer通过网络发送消息到Kafka集群,然后consumer来进行消费,

  服务端(brokers)和客户端(producer、consumer)之间通信通过TCP协议来完成。

  

  Partition是一个有序的message序列,这些message按顺序添加到一个叫做commit log的文件中。

  每个partition中的消息都有一个唯一的编号,称之为offset,用来唯一标示某个分区中的message。

  提示:每个partition,都对应一个commit log文件。一个partition中的message的offset都是唯一的,但是不同的partition中的message的offset可能是相同的。

 

  每个consumer是基于自己在commit log中的消费进度(offset)来进行工作的。在kafka中,消费offset由consumer自己来维护

  一般情况下我们按照顺序逐条消费commit log中的消息,当然我可以通过指定offset来重复消费某些消息,或者跳过某些消息

  这意味kafka中的consumer对集群的影响是非常小的,添加一个或者减少一个consumer,对于集群或者其他consumer来说,都是没有影响的,

因为每个consumer维护各自的offset。所以说kafka集群是无状态的,性能不会因为consumer数量受太多影响。

  kafka还将很多关键信息记录在zookeeper里,保证自己的无状态,从而在水平扩容时非常方便。

  为什么要对Topic下数据进行分区存储?

    1、commit log文件会受到所在机器的文件系统大小的限制,分区之后,理论上一个topic可以处理任意数量的数据。
    2、为了提高并行度。

  Producers

    生产者将消息发送到topic中去,同时负责选择将message发送到topic的哪一个partition中。通过 round­robin 做简单的负载均衡。
  也可以根据消息中的某一个关键字来进行区分。通常第二种方式使用的更多。

  Consumers

    传统的消息传递模式有2种:队列( queue) 和(publish-subscribe)
    queue模式:多个consumer从服务器中读取数据,消息只会到达一个consumer。 所有的consumer都位于同一个consumer group 下。
    publish-subscribe模式:消息会被广播给所有的consumer。所有的consumer都有着自己唯一的consumer group

  

  消费顺序

    Kafka比传统的消息系统有着更强的顺序保证。一个partition同一个时刻在一个consumer group中只有一个consumer instance在消费,
  从而保证顺序。consumer group中的consumer instance的数量不能比一个Topic中的partition的数量多,否则,多出来的consumer消费不到消息。

    Kafka只在partition的范围内保证消息消费的局部顺序性,不能在同一个topic中的多个partition中保证总的消费顺序性。

kafka 的基本概念及使用场景的更多相关文章

  1. MQ(1)---消息队列概念和使用场景

    消息队列概念和使用场景 声明:本文转自:MQ入门总结(一)消息队列概念和使用场景 写的很好,都不用自己在整理了,非常感谢该作者的用心. 一.什么是消息队列 消息即是信息的载体.为了让消息发送者和消息接 ...

  2. kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

    问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...

  3. kubernetes1.9管中窥豹-CRD概念、使用场景及实例

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 默认读者有kubernetes基础概念的背景知识,因此基础概念例如有状态.pod.Replica Sets.Deployments.state ...

  4. 顶级Apache Kafka术语和概念

    1.卡夫卡术语 基本上,Kafka架构  包含很少的关键术语,如主题,制作人,消费者, 经纪人等等.要详细了解Apache Kafka,我们必须首先理解这些关键术语.因此,在本文“Kafka术语”中, ...

  5. [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...

  6. ThreadLocal概念以及使用场景

    ThreadLocal概念以及使用场景 根据自身的知识深度,这里只限于自己使用和学习的知识点整理,原理的解释还需要再沉淀. 该文章从项目开发中举例,希望能帮助到各位,不了解ThreadLocal的朋友 ...

  7. 【kafka学习笔记】kafka的基本概念

    在了解了背景知识后,我们来整体看一下kafka的基本概念,这里不做深入讲解,只是初步了解一下. kafka的消息架构 注意这里不是设计的架构,只是为了方便理解,脑补的三层架构.从代码的实现来看,kaf ...

  8. 4种Kafka网络中断和网络分区场景分析

    摘要:本文主要带来4种Kafka网络中断和网络分区场景分析. 本文分享自华为云社区<Kafka网络中断和网络分区场景分析>,作者: 中间件小哥. 以Kafka 2.7.1版本为例,依赖zk ...

  9. [原创]cocos2d-x研习录-第二阶 概念类之场景类(CCScene)

    场景类CCScene是Cocos2D-x在屏幕显示的内容,相当于游戏关卡或界面.CCDirector任何时候只能显示一个场景CCScene,游戏中可能存在若干场景,CCDirector通过场景切换达到 ...

  10. WCF回顾一、基本概念和应用场景

    一.WCF描述 wcf是一款基于面向服务的架构的通讯框架平台,在分布式框架中得到了广泛使用. wcf入门非常简单,只要花几分钟就能编写一个完整的wcf程序,而实际上WCF是概念非常多的一门技术,需要花 ...

随机推荐

  1. 安装Tensorflow-gpu版本

    下载cuda 链接:https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch= ...

  2. MybatisPlus最新代码生成器(version3.5.1+),自定义文件模板

    1.导入依赖(我这里用的是gradle构建工具,maven也一样啦~) plugins { id 'java' id 'org.springframework.boot' version '2.7.3 ...

  3. .net 温故知新【16】:Asp.Net Core WebAPI 筛选器

    一.筛选器 通过使用筛选器可在请求处理管道中的特定阶段之前或之后运行代码. 这即是我们经常听到的面向切面编程AOP(Aspect Oriented Programming)技术,AOP通过预编译方式和 ...

  4. 好家伙,这个开源项目硬生生复制了一个 ChatGPT Plus 出来

    最近有一款聊天机器人框架 Lobe Chat 火出了天际,它不仅支持多模态,支持语音会话,还有一个强大的 Function Calling 插件生态系统(可以作为 ChatGPT 插件的平替).最重要 ...

  5. 2023计算机保研经验贴 直博向(南大cs,计算所,科大高研院,浙大cs,交大cs,国科cs,北大cs,清华cs)

    写在前面 本人作为普通选手,只能将个人经验分享一二,不能代表其他人的想法和意见,望路过的大佬们高抬贵手-,如果有相关老师或者同学认为我违反了保密条例请与我私信联系,我会第一时间删除相关内容. 个人情况 ...

  6. ACTF flutter逆向学习

    参考了许多大佬的博客,在此特别诚挚感谢oacia大佬和其他大佬的博客和指导! 1.flutter和apk基础结构介绍 首先下载附件,是一个apk文件,用jadx打开 可以看见flutter字样,而fl ...

  7. 【Android】深入Binder拦截

    ☞ Github ☜ ☞ Gitee ☜ 说明 Binder作为Android系统跨进程通信的核心机制.网上也有很多深度讲解该机制的文章,如: Android跨进程通信详解Binder机制原理 And ...

  8. 欢迎使用CSDN-markdown编辑器测试

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  9. 7、Flutter GridView网格布局组件(遍历)

    GridView创建网格列表主要有下面三种方式 1.可以通过GridView.count 实现网格布局    一行的 Widget 数量 class HomePage extends Stateles ...

  10. 在Global Mapper中导入点的文本格式

    目录 有时候想在Global Mapper快速显示一个点的具体位置,来不及去创建一个具体的矢量文件.一个最快速的方式就是将这个点写在文本文件中导入: 13149831.629692005 281725 ...