kafka生产者源码精华总结-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

kafka的源码阅读起来思路很清晰命名也很规范。

KafkaProducer值得学习的地方

  1. Kafka的网络部分的设计绝对是一个亮点Kafka基于NIO封装了一套自己的网络架构支持一个客户端与多个Broker建立连接。
  2. 处理拆包和粘包的思路和代码绝对是教科书级别的大家可以把代码复制粘贴下来直接用到自己的线上项目去。
  3. RecordAccumulator封装消息的batchs使用的自己封装的数据结构CopyOnWriteMap采用读写分离的思想用来面对高并发的场景读多、写少提升整个流程的性能。
  4. 封装消息的时候时候涉及的内存缓冲池这极大地减少了GC的次数。我们java项目最怕最怕的就是GCjava项目60%的问题都是GC引起的
  5. RecordAccumulator封装批次采用的是分段加锁思想极大地提高了性能看得出来作者确实编程功底很深厚。可以不用加锁的地方就不加锁只在必须加锁的地方加锁。尽可能地去提升代码的性能或者说是减少锁的使用。因为一旦使用锁就可能出现死锁或者锁竞争。
  6. kafka的异常体系也是设计得比较清晰在核心流程捕获异常底层抛异常。
  7. 生产者去发送数据的时候提供了两个方案1同步发送性能会差  2异步发送里面结合回调函数很大地提升了kafka的性能。

我们自己去设计一个系统的时候可以借鉴以上思路。

from 洱海老师

源码01-源码阅读准备之基础知识准备_哔哩哔哩_bilibili

深入浅出Kafka 深入浅出_哔哩哔哩_bilibili

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6