首页 > 其他分享 >好多kafka难题啊,看看其中的化解之道

好多kafka难题啊,看看其中的化解之道

时间:2024-08-30 10:53:37浏览次数:10  
标签:化解 技术 Kafka 之道 并发 开发 kafka 数据

文末有面经共享群

前面已经分享过几篇面试了,这是一篇关于更加面向项目和技术的面经详解,第一次遇见问那么多kafka的问题,看看这个粉丝是怎么回答的。

先来看看 职位描述

岗位职责:

  • 负责基于 Go 的后端服务的设计、开发和维护;
  • 参与系统架构设计,确保系统的高可用性、高性能和可扩展性;
  • 编写高质量、可维护的代码,并进行代码评审;
  • 解决复杂的技术问题,优化系统性能;
  • 与跨职能团队合作,确保项目按时交付;
  • 编写技术文档和开发规范,提升团队整体开发效率;
  • 参与新技术的研究和引入,推动技术创新。

岗位要求:

  1. 计算机科学或相关专业本科及以上学历,思维逻辑清晰;
  2. 5年以上软件开发经验,至少3年Go语言开发经验;
  3. 熟悉 Go 语言的标准库和常用框架,了解 Go 语言的内存管理和并发模型;
  4. 具备微服务架构设计和开发经验,熟悉 gRPC、Protobuf 等技术;
  5. 熟悉常见的数据库(如 MySQL、PostgreSQL)和缓存技术(如 Redis);
  6. 有良好的代码风格和编写高质量单元测试的习惯;
  7. 熟悉 Docker、Kubernetes 等容器技术,具备一定的 DevOps 经验;
  8. 具备较强的分析和解决问题的能力,良好的沟通和团队协作能力;
  9. 有开源项目贡献者或个人技术博客者优先。

加分项:

  • 有 Rust 开发经验,熟悉其他编程语言(如 Python、C++等);
  • 有金融行业交易系统开发经验,如行情报价、交易、风控等。

面试流程

来看看面试的全过程:

  1. 自我介绍

  2. 说一下项目的业务,怎么做的,难点在哪,如何解决?

    • 消息队列:数据倾斜问题,数据不丢,重复消费
    • redis:使用hash以及Pipline,bigkey拆解
    • 数据库:性能优化,分库分表
  3. 数据库优化设置lock_timeout是哪个锁的超时

    数据库优化设置中的 lock_timeout 主要是针对行锁的超时设置。当一个事务在等待获取行锁时,如果超过了 lock_timeout 设置的时间,就会抛出超时错误,避免事务长时间等待而导致系统性能下降。

  4. kafka集群规模

    我们的 Kafka 集群规模为 5 台服务器,能够支持 50 万的并发量。通过合理的配置和优化,我们可以进一步提高 Kafka 集群的性能和并发能力。

  5. kafka为什么支持高并发

    Kafka 支持高并发主要有以下几个原因:

    1. 分区:Kafka 将数据分成多个分区,每个分区可以在不同的服务器上进行存储和处理,从而实现了水平扩展,提高了系统的并发能力。
    2. 零拷贝:Kafka 采用了零拷贝技术,减少了数据在内存中的复制次数,提高了数据的传输效率。
    3. 网络压缩:Kafka 支持网络压缩,可以减少网络传输的数据量,提高系统的性能和并发能力。
  6. 说一下什么是零拷贝

    零拷贝是一种技术,主要通过减少数据在内存中的复制次数来提高数据的传输效率。在 Kafka 中,零拷贝技术主要通过使用 mmap 函数实现。mmap 函数将文件映射到内存中,使得应用程序可以直接访问文件内容,而不需要进行数据的复制。这样可以减少数据在内存中的复制次数,提高数据的传输效率。

  7. 为什么选择kafka

    首先,Kafka 具有很高的并发处理能力,能够满足金融交易系统对高吞吐量的要求。其次,Kafka 的扩容性非常好,可以很容易地增加服务器节点来提高系统的性能。此外,Kafka 天生适合集群部署,并且使用 Java 和 Scala 编写,便于进行问题排查和维护。相比之下,RabbitMQ 的集群部署相对复杂,而且使用 Erlang 语言,对于一些开发人员来说可能不太熟悉,问题排查也比较困难。

  8. Api 网关用来做什么的?

    Api 网关主要用于对第三方调用进行流量限制和安全控制。它可以对请求进行过滤、路由和负载均衡,确保系统的稳定性和安全性。同时,Api 网关还可以提供一些额外的功能,如身份验证、授权、监控和统计等。

  9. 支付模块这块怎么做的

    参与的项目中,支付模块是由其他同事负责开发的。我主要是通过调用支付模块提供的 API 来实现相关业务功能。在调用 API 时,我会确保参数的正确性和安全性,同时对返回结果进行合理的处理和错误处理。

  10. 说一下你们微服务的架构是怎么样的

    我们的系统采用了无服务和微服务的混合架构。这种架构可以充分发挥无服务架构的弹性和高效性,同时又能利用微服务架构的灵活性和可扩展性。在具体实现中,我们将一些通用的功能模块封装成无服务函数,通过事件驱动的方式进行调用。而对于一些复杂的业务模块,则采用微服务架构,进行独立开发和部署。

  11. 差分升级是怎么实现的

    通过对比不同版本的代码,找出差异部分,然后将这些差异部分抽取出来进行计算 MD5 值等操作,以确定是否需要进行升级。在升级过程中,我们会确保数据的完整性和一致性,同时尽量减少对系统的影响。

  12. 编译服务类似CI/CD

    通过修改 Git 命令,实现了类似于 Web Hook 的功能。当有代码提交并打上 tag 时,系统会自动进行 Git clone 操作,然后进行测试和编译。这样可以确保代码的质量和稳定性,同时提高开发效率。

  13. C/C++是开发固件的吧

    是的,我曾经使用 C/C++ 和 Lua 的组合开发过智能网关。不过,由于我这次是应聘后端开发岗位,所以没有将这部分内容写在简历中。

  14. 你很喜欢用redis?

    是的,我非常喜欢使用 Redis。Redis 就像一个数据结构数据库,它提供了丰富的数据结构和操作接口,使用起来非常方便。在项目中,我们使用 Redis 实现了很多业务功能,比如缓存热点数据、实现分布式锁、进行任务队列管理等。

  15. 反问

结尾

大家可以看出来,在这场深入的技术面试中,需要应试者具备强大的技术功底和应对各种挑战的能力。面试官询问的方向好像大多是 Kafka 的高并发处理的问题,不知道这次的面经有没有给你带来哪些学习要点呢?也希望通过分享这位面试者的经历,能给正在求职或致力于技术提升的你带来启发和帮助。

欢迎关注 ❤

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:【博客园】。

标签:化解,技术,Kafka,之道,并发,开发,kafka,数据
From: https://www.cnblogs.com/wangzhongyang/p/18388247

相关文章

  • Kafka分布式集群部署实战:跨越理论,直击生产环境部署难题与解决方案,性能调优、监控与管
    本文介绍kafka的集群如何部署和安装,1-4章理论知识,第5章详解集群的部署,部署Kafka之前需要先部署好分布式的Zookeeper,不喜欢理论的可以直接看第5章,欢迎大家一起探讨技术!Zookeeper集群部署参考文章:精通Zookeeper:详解分布式集群部署全程,掌握数据一致性、选举机制与集群容错能力-......
  • 使用kafka完成数据的实时同步,同步到es中。(使用kafka实现自动上下架 upper、lower)
    文章目录1、发送消息KafkaService2、生产者service-album->AlbumInfoServiceImpl2.1、新增saveAlbumInfo()2.2、更新updateAlbumInfo()2.3、删除removeAlbumInfo()3、消费者service-search->AlbumListener.java上架:新增专辑到es下架:删除专辑新增:如果是......
  • 编码之外:解锁高阶程序员的自我修养之道
    在技术迅猛发展的今天,成为一名高阶程序员不仅仅是掌握编码技能那么简单。自我修养,成为这一职业道路上不可或缺的一部分。以下是一些关键的自我修养领域,帮助程序员在技术与个人层面实现卓越。成为一名高阶程序员,是一场不断学习和自我提升的旅程。通过在技术专长之外的领域进行......
  • 如何驱动企业数字化转型的敏捷企业的创新实践指南:敏捷企业架构的制胜之道
    敏捷企业架构如何引领企业转型变革在全球化与数字化交织的新时代,企业正处于前所未有的变革浪潮中。传统的企业架构方式已经难以应对瞬息万变的市场需求和技术革新。作为一种突破性解决方案,敏捷企业架构提供了一个灵活且强大的框架,帮助企业在动态环境中保持竞争优势,迅速响应市......
  • 从战略到执行:解密敏捷企业架构的变革之道,助力企业未来增长
    敏捷企业架构的新时代与变革契机在数字化转型浪潮中,企业正面临前所未有的市场挑战与技术机遇。传统企业架构(EnterpriseArchitecture,EA)虽然能够为企业提供稳定的战略支持,但其应对市场快速变化的能力不足。而敏捷方法(Agile)以其高效迭代和灵活性,正在迅速改变企业的运营方式。......
  • kafka ---- producer与broker配置详解以及ack机制详解
    一、producer配置1、bootstrap.serverskafkabroker集群的ip列表,格式为:host1:port1,host2:port2,…2、client.id用于追踪消息的源头3、retries当发送失败时客户端会进行重试,重试的次数由retries指定,默认值是2147483647,即Integer.MAX_VALUE;在重试次数耗尽和delivery.......
  • LongAlign:大模型长文本处理能力提升之道
     人工智能咨询培训老师叶梓转载标明出处大模型(LLMs)在处理长文本时,需要在输入序列上进行指令微调(instructionfinetuning),以确保它们能够有效地处理长文本。现有的方法主要集中在上下文扩展(contextextension),即通过位置编码扩展和对长文本的持续训练来提升模型的上下文长度。......
  • Apache Kafka 简介、使用场景及特点
    ApacheKafka简介、使用场景及特点1.什么是ApacheKafka?ApacheKafka是一种开源的分布式流处理平台,最初由LinkedIn开发,并在2011年成为Apache软件基金会的顶级项目。Kafka专为高吞吐量、低延迟的实时数据处理设计,广泛应用于各种数据流处理场景。Kafka的核心组......
  • window下kafka3启动多个
    准备工作我们先安装好kafka,并保证启动成功,可参考文章Windows下安装Kafka3-CSDN博客复制kafka安装文件kafka3已经内置了zookeeper,所以直接复制就行了修改zookeeper配置文件这里我们修改zookeeper配置文件,主要是快照地址和端口号,并且端口号与第一个不同修改kafka服......
  • SpringBoot配置多个kafka配置
    引入依赖<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.14</version></dependency>yml配置有几个就配置几个......