好多kafka难题啊,看看其中的化解之道
这是一篇关于更加面向项目和技术的面经详解,第一次遇见问那么多kafka的问题,看看这个粉丝是怎么回答的。
先来看看 职位描述:
岗位职责:
- 负责基于 Go 的后端服务的设计、开发和维护;
- 参与系统架构设计,确保系统的高可用性、高性能和可扩展性;
- 编写高质量、可维护的代码,并进行代码评审;
- 解决复杂的技术问题,优化系统性能;
- 与跨职能团队合作,确保项目按时交付;
- 编写技术文档和开发规范,提升团队整体开发效率;
- 参与新技术的研究和引入,推动技术创新。
岗位要求:
- 计算机科学或相关专业本科及以上学历,思维逻辑清晰;
- 5年以上软件开发经验,至少3年Go语言开发经验;
- 熟悉 Go 语言的标准库和常用框架,了解 Go 语言的内存管理和并发模型;
- 具备微服务架构设计和开发经验,熟悉 gRPC、Protobuf 等技术;
- 熟悉常见的数据库(如 MySQL、PostgreSQL)和缓存技术(如 Redis);
- 有良好的代码风格和编写高质量单元测试的习惯;
- 熟悉 Docker、Kubernetes 等容器技术,具备一定的 DevOps 经验;
- 具备较强的分析和解决问题的能力,良好的沟通和团队协作能力;
- 有开源项目贡献者或个人技术博客者优先。
加分项:
- 有 Rust 开发经验,熟悉其他编程语言(如 Python、C++等);
- 有金融行业交易系统开发经验,如行情报价、交易、风控等。
面试流程
来看看面试的全过程:
自我介绍
说一下项目的业务,怎么做的,难点在哪,如何解决?
- 消息队列:数据倾斜问题,数据不丢,重复消费
- redis:使用hash以及Pipline,bigkey拆解
- 数据库:性能优化,分库分表
数据库优化设置lock_timeout是哪个锁的超时
数据库优化设置中的 lock_timeout 主要是针对行锁的超时设置。当一个事务在等待获取行锁时,如果超过了 lock_timeout 设置的时间,就会抛出超时错误,避免事务长时间等待而导致系统性能下降。
kafka集群规模
我们的 Kafka 集群规模为 5 台服务器,能够支持 50 万的并发量。通过合理的配置和优化,我们可以进一步提高 Kafka 集群的性能和并发能力。
kafka为什么支持高并发
Kafka 支持高并发主要有以下几个原因:
- 分区:Kafka 将数据分成多个分区,每个分区可以在不同的服务器上进行存储和处理,从而实现了水平扩展,提高了系统的并发能力。
- 零拷贝:Kafka 采用了零拷贝技术,减少了数据在内存中的复制次数,提高了数据的传输效率。
- 网络压缩:Kafka 支持网络压缩,可以减少
