做电商讲师课程的网站,精美企业模板,做网站好的公司,易点公司kafka的源码阅读起来思路很清晰#xff0c;命名也很规范。
KafkaProducer值得学习的地方#xff1a;
Kafka的网络部分的设计绝对是一个亮点#xff0c;Kafka基于NIO封装了一套自己的网络架构#xff0c;支持一个客户端与多个Broker建立连接。处理拆包和粘包的思路和代码命名也很规范。
KafkaProducer值得学习的地方
Kafka的网络部分的设计绝对是一个亮点Kafka基于NIO封装了一套自己的网络架构支持一个客户端与多个Broker建立连接。处理拆包和粘包的思路和代码绝对是教科书级别的大家可以把代码复制粘贴下来直接用到自己的线上项目去。RecordAccumulator封装消息的batchs使用的自己封装的数据结构CopyOnWriteMap采用读写分离的思想用来面对高并发的场景读多、写少提升整个流程的性能。封装消息的时候时候涉及的内存缓冲池这极大地减少了GC的次数。我们java项目最怕最怕的就是GCjava项目60%的问题都是GC引起的RecordAccumulator封装批次采用的是分段加锁思想极大地提高了性能看得出来作者确实编程功底很深厚。可以不用加锁的地方就不加锁只在必须加锁的地方加锁。尽可能地去提升代码的性能或者说是减少锁的使用。因为一旦使用锁就可能出现死锁或者锁竞争。kafka的异常体系也是设计得比较清晰在核心流程捕获异常底层抛异常。生产者去发送数据的时候提供了两个方案1同步发送性能会差 2异步发送里面结合回调函数很大地提升了kafka的性能。
我们自己去设计一个系统的时候可以借鉴以上思路。 from 洱海老师
源码01-源码阅读准备之基础知识准备_哔哩哔哩_bilibili
深入浅出Kafka 深入浅出_哔哩哔哩_bilibili