1. Java内存管理面试指南一
  2. Java基础面试指南一
  3. Java基础面试指南二
  4. Java基础面试指南三
  5. Java基础面试指南四
  6. Java线程面试指南一
  7. Java线程面试指南二
  8. Redis面试指南一
  9. Kafka面试指南一
  10. Spring面试指南一
  11. SpringBoot面试指南一
  12. 微服务面试指南一

1. Kafka消息传递系统与其他消息传递框架有何不同?

Kafka是由Apache基金会开发的消息传递框架,该框架将创建创建消息传递系统以及可提供容错群集以及低延迟系统,以确保端到端交付.

以下是要点:

  • Kafka是一个消息传递系统,它提供了容错功能以防止消息丢失.
  • 在public-subscribe 模型上进行设计.
  • Kafka cab支持Java和Scala.
  • Kafka起源于LinkedIn,后来在2011年成为开源Apache项目
  • 与Spark和其他大数据技术无缝协作.
  • 支持集群模式操作
  • Kafka消息传递系统可以用于Web服务体系结构或大数据体系结构.
  • 与其他消息传递框架相比,Kafka易于编码和配置.

Kafka需要其他组件(例如zookeeper)来创建集群并充当协调服务器

2. Kafka的主要功能是什么?

除了具有其他关键功能之外,Kafka还为从生产者到消费者的信息提供了可靠的传递方式.

  • Kafka旨在实现高吞吐量和容错消息服务.
  • Kafka提供了在Topic上构建patriation.
  • 还提供复制功能.
  • Kafka提供了一个队列,该队列可以处理大量数据,并最终将消息从一个发送者传输到接收者.
  • Kafka还将消息保留在磁盘中,并具有跨群集复制消息的功能
  • Kafka与Zookeeper合作,与其他服务进行协调和同步.
  • Kafka具有良好的内置支持Apache Spark.

要利用所有这些关键功能,我们需要与Zookeeper配置一起正确配置Kafka集群.

3. 使用Kafka比不提供JMS,RabbitMQ等其他消息传递服务的好处?

如今,kafka是一个基于Key的消息传递框架,它有以下几个关键点.

  • 可靠性 -Kafka提供了从发布者到订阅者的可靠传递,而消息丢失为零.
  • 可伸缩性 -Kafka通过与Zookeeper协调服务器一起使用群集来实现此功能
  • 耐用性 -通过使用分布式日志,消息可以保留在磁盘上.
  • 性能 -Kafka在发布和订阅应用程序中提供高吞吐量和低延迟.

考虑到上述功能,Kafka是Bigdata Technologies用来处理大量消息以实现平稳传递的最佳选择之一.

4. Kafka的实际用例是什么,它与其他消息传递框架有什么不同?

有很多用例,Kafka适合实际工作应用程序,但是下面列出的是经常使用的实际工作用例.

  • 指标:用于监视操作数据,可用于分析或对从分布式系统中收集的数据进行统计操作
  • 日志聚合解决方案:可以在整个组织中使用,以收集来自多个服务的日志,消费者服务使用这些日志来执行分析操作.
  • 流处理:Kafka的强大耐用性在流处理方面也非常有用.
  • 异步通信:在微服务中,使这个庞大的系统保持同步是不希望的,因为它会使整个应用程序无响应. 而且,它一开始可能会破坏划分为微服务的整个目的. 因此,那时使用Kafka可使整个数据流变得更容易. 因为它是分布式的,所以具有很高的容错能力,并且可以通过Zookeeper等服务对代理节点进行持续监控. 因此,它使工作效率更高.
  • 聊天机器人:当我们需要可靠的消息传递服务以顺利交付时,聊天机器人是最受欢迎的用例之一.
  • 多租户解决方案. 通过配置哪些主题可以产生或使用数据来启用多租户. 配额也有运营支持

上面是主要需要Kafka框架的用例,除此之外,还有其他一些情况取决于需求和设计.

5. 为什么我们需要Kafka而不是其他消息服务?

现在让我们谈论一些现代的数据源,它是一种数据-诸如订单,库存和购物车之类的交易数据-诸如单击,点赞,推荐和在网页上的搜索之类的内容正在得到增强. 所有这些数据对于分析消费者的行为非常重要,并且可以提供一组预测分析引擎,这些引擎可以成为公司的与众不同之处.

  • 支持低延迟消息传递.
  • 处理实时流量.
  • 保证容错能力.
  • 易于与Spark应用程序集成,以处理大量消息数据.
  • 能够创建消息传递容器集群,该集群由诸如Zookeeper之类的协调服务器进行监视和监督.

因此,当我们需要处理这种数据量时,我们需要Kafka来解决此问题.

6. 带组件的Kafka流程图?

Kafka流程图包含以下基本组件,这是设置消息传递基础结构所必需的.

  • Topic
  • Broker
  • Zookeeper
  • Partition
  • Producer
  • Consume



客户端和服务器之间的通信是通过简单,高性能,与语言无关的TCP协议完成的. 该协议已版本化,并与旧版本保持向后兼容性

7.什么是主题?Kafka如何使用该主题从生产者到消费者进行交流?

主题是将记录发布到的逻辑名称. Kafka中的主题支持多用户模型,因此该主题可以有零个,一个或多个使用者来订阅写入该主题的数据.

  • 主题是保留消息流的特定类别.
  • 主题分为多个分区.
  • 对于每个Kafka,至少应有一个分区.
  • 每个分区均以未修改的有序顺序包含消息或有效负载.
  • 分区中的每个消息都有一个标识符,称为偏移量.
  • 主题具有名称,并且在整个集群中必须唯一.
  • 生产者需要主题来发布有效负载.
  • 消费者从消费者那里提取了相同的有效载荷.
  • 对于每个主题,群集维护的日志如下所示.

每个分区都有一个有序且不可变的记录序列,该记录序列被连续附加到一个结构化的提交日志中. Kafka集群使用可配置的保留期限持久地保留所有已发布记录(无论是否已被使用).

8. 什么是分区?

Kafka主题被共享到分区中,该分区以不可修改的顺序包含消息.

  • 分区是数据的逻辑分组.
  • 分区允许您通过跨多个代理将主题中的数据拆分来并行化主题.
  • 主题中可以分组有一个或多个分区.
  • 分区允许通过跨多个群集在多个主题中拆分数据来并行化主题.
  • 每个分区都有一个名为offset的标识符.
  • 每个分区都可以放置在单独的计算机上,以允许多个用户并行读取主题.

9. 什么是分区偏移量?

偏移量是分区内记录的唯一标识符. 它表示使用者在分区中的位置. 消费者可以从特定的偏移量开始读取消息,也可以从他们选择的任何偏移量点进行读取.

  • 分区偏移具有唯一的序列ID,称为偏移.
  • 每个分区应具有一个分区偏移量.

主题还可以具有多个分区日志,如右侧图像中的click-topic一样. 这允许多个使用者并行地从一个主题中阅读.

10. 什么是Broker?Kafka如何利用Broker进行交流?

  • Broker是负责维护发布数据的系统.
  • 每个代理可以具有一个或多个分区.
  • Kafka包含多个代理来维护负载均衡器.
  • Kafka Broker是无状态的
  • 例如:假设一个主题中有N个分区,并且有N个代理,那么每个代理都有1个分区.

Kafka面试你不得不知道的基础知识的更多相关文章

  1. [不得不知道系列]Java线程面试你不得不知道的基础知识一

    Java内存管理面试指南一 Java基础面试指南一 Java基础面试指南二 Java基础面试指南三 Java基础面试指南四 Java线程面试指南一 Java线程面试指南二 Redis面试指南一 Kaf ...

  2. Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识

    摘要: 详解原型污染. 原文:Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识 作者:Lucas HC Fundebug经授权转载,版权归原作者所有. 可能有信息敏感的同学已 ...

  3. 震惊!90%的程序员不知道的Java知识!

    震惊!90%的程序员不知道的Java知识! 初学Java的时候都会接触的代码 public static void main(String[] args){ ... } 当时就像背公式一样把这行代码给 ...

  4. 《吊打面试官》系列-Redis基础知识

    前言Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下 ...

  5. Spring Boot 你所不知道的超级知识学习路线清单

    因而 Spring Boot 应用本质上就是一个基于 Spring 框架的应用,它是 Spring 对“约定优先于配置”理念的最佳实践产物,它能够帮助开发者更快速高效地构建基于 Spring 生态圈的 ...

  6. C++面试中可能考察的基础知识(1)

    1 C++中允许函数的嵌套调用,但不允许函数的嵌套定义 2 构建派生类对象时,先调用基类的构造函数,在调用成员对象的构造函数,最后调用派生类构造函数. 3 volatile关键字 volatile提醒 ...

  7. 那些你可能不知道的 ZooKeeper 知识

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费开源.有趣.入门级的 ZooKeeper 教程,面向有编程基础的新手. 项 ...

  8. C++程序员面试题目总结(涉及C++基础、多线程多进程、网络编程、数据结构与算法)

     说明:C++程序员面试题目总结(涉及C++基础知识.多线程多进程.TCP/IP网络编程.Linux操作.数据结构与算法) 内容来自作者看过的帖子或者看过的文章,个人整理自互联网,如有侵权,请联系作者 ...

  9. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

随机推荐

  1. Mac安装多版本JDK

    0. 配置JDK环境 安装完成之后,配置.bash_profile文件 使用source ./bash_profile激活 2. 如何切换默认的jdk? 使用java -version就可以看默认版本 ...

  2. 常用mysql 语句

    ALTER TABLE table_name AUTO_INCREMENT = 1;重置自增字段值从1开始 truncate table `table_name` 清空表,保留数据结构

  3. DZ的CURD

    Discuz二次开发-MySQL插入数据(insert) DB::insert($tableName,$data,$flag); $tableName:表名 $data:插入数据,以字段为键值的关联数 ...

  4. 关于暴力破解的一些学习笔记(pikachu)

    这几天的笔记都懒得发博客都写在本地了,随缘搬上来 什么是暴力破解 就是在攻击者不知道目标账号密码情况下的,对目标系统的常识性登陆 一般会采用一些工具+特定的字典 来实现高效的连续的尝试性登陆 一个有效 ...

  5. RedHat 的 crontab

    Chapter 39. Automated Tasks In Linux, tasks can be configured to run automatically within a specifie ...

  6. [Batch脚本] if else 的格式

    必须写成一行 ) else (,否则报错. if %abc%=="yes" ( ... ) else ( ... )

  7. python 列表加法"+"和"extend"的区别

    相同点 : "+"和"extend"都能将两个列表成员拼接到到一起 不同点 :   + : 生成的是一个新列表(id改变) extend : 是将一个列表的成员 ...

  8. RHEL6 搭建 keepalived + lvs/DR 集群

    搭建 keepalived + lvs/DR  集群 使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务: LVS1调度器真实IP地址为192.168.4. ...

  9. 用Swoole4 打造高并发的PHP协程Mysql连接池

    码云代码仓库:https://gitee.com/tanjiajun/MysqlPool 代码仓库:https://github.com/asbectJ/swoole4.git 前言 在写这篇文章之前 ...

  10. 网络流--最大流--HDU 3549 Flow Problem

    题目链接 Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, y ...