字节跳动技术整理:字节跳动算法工程师面试总结,看完这一篇你就懂了

Kafka宕机引发的高可用问题

问题要从一次Kafka的宕机开始说起。

笔者所在的是一家金融科技公司,但公司内部并没有采用在金融支付领域更为流行的RabbitMQ,而是采用了设计之初就为日志处理而生的Kafka,所以我一直很好奇Kafka的高可用实现和保障。从Kafka部署后,系统内部使用的Kafka一直运行稳定,没有出现不可用的情况。

但最近系统测试人员常反馈偶有Kafka消费者收不到消息的情况,登陆管理界面发现三个节点中有一个节点宕机挂掉了。但是按照高可用的理念,三个节点还有两个节点可用怎么就引起了整个集群的消费者都接收不到消息呢?

要解决这个问题,就要从Kafka的高可用实现开始讲起。

一、Netty概念及体系结构

01 Netty——异步和事件驱动
  • Java网络编程NIO选择器
  • Netty的简介、谁在使用Netty、异步和事件驱动
  • Netty的核心组件


02 你的第一款Netty应用程序
  • 获取并安装Java开发
  • 下载和安装IDE、Apache Maven
  • Netty客户端服务器概览
  • 编写Echo客户端
  • 构建和运行Echo服务器和客户端


03 Netty的组件和设计
  • Channel、EventLoop 和ChannelFuture
  • ChannelHandler 接口 和 ChannelPipeline 接口
  • 编码器和解码器
  • 抽象类 SimpleChannel-InboundHandler


04 传输
  • 不通过 Netty 使用 OIO和 NIO
  • NIO——非阻塞 I/O Epoll——用于 Linux的本地非阻塞传输
  • OIO——旧的阻塞 I/O 用于 JVM 内部通信的
  • Embedded 传输


05 ByteBuf 类——Netty 的数据容器
  • 字节级操作
  • ByteBufHolder 接口
  • 按需分配:Byte-BufAllocator 接口


06 ChannelHandler 和ChannelPipeline
  • ChannelHandler 家族
  • 修改 ChannelPipeline
  • ChannelHandlerContext接口
  • 异常处理


07 EventLoop 和线程模型
  • 线程模型概述
  • Netty 4 中的 I/O 和事件处理
  • JDK 的任务调度 API
  • 线程管理、 EventLoop/线程的分配


08 引导
  • Bootstrap 类
  • 引导客户端和无连接协议
  • 从 Channel引导客户端
  • 在引导过程中添加多个ChannelHandler
  • 使用 Netty 的 Channel-Option 和属性

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。

面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!如果你需要这份完整版的面试真题笔记,只需你多多支持我这篇文章。

资料领取方式:戳这里免费下载

整版的面试真题笔记,只需你多多支持我这篇文章。

资料领取方式:戳这里免费下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值