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 和属性
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。
面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!如果你需要这份完整版的面试真题笔记,只需你多多支持我这篇文章。
整版的面试真题笔记,只需你多多支持我这篇文章。