当前位置: 首页 > news >正文

呼和浩特网站运营好项目推荐平台

呼和浩特网站运营,好项目推荐平台,深圳品牌公寓有哪些,成都微信公众号制作高性能的多分区、冗余副本集群架构 高性能网络模型NIO 简单架构设计: 详细架构设计: 高性能的磁盘写技术 高性能的消息查找设计 索引文件定位使用跳表的设计 偏移量定位消息时使用稀疏索引: 高响应的磁盘拷贝技术 kafka采用sendFile()的…
  • 高性能的多分区、冗余副本集群架构

  • 高性能网络模型NIO

        简单架构设计:

详细架构设计:

  • 高性能的磁盘写技术

  • 高性能的消息查找设计

        索引文件定位使用跳表的设计

        偏移量定位消息时使用稀疏索引:

  • 高响应的磁盘拷贝技术

kafka采用sendFile()的零拷贝方式,磁盘DMA到内存,然后一次cpu copy到socket缓存,一次DMA到网卡完成数据发送。

  • 粘性分区算法

如下图,6条消息采用key可能分三次发送到三个不同的分区,需要3次网络请求。如果没有key将封住成一个批次发送。这样一次网路请求就可以发送多条消息,大大提高了效率。

  • 批处理、内存池设计

将多个同分区的消息,一次批量发送到server,大大减少了网络IO的消耗。

BufferPool 总大小为16k固定大小加上一个avaliableMemory(存储大消息),每个batch申请内存释放内存,循环往复。

  • 多线程协同设计

图是发送消息主线程和发送网络请求sender线程配合获取元数据的流程:

  • 高性能、安全的数据结构

RecordAccumulator中存储了每个分区对应的消息队列,在发送消息时会经常读取队列将消息加入到队列中。所以在batches设计时需要考虑到高性能、高并发的。

private final ConcurrentMap<TopicPartition, Deque<ProducerBatch>> batches;

  • 分段锁的设计思想

  • 粘包黏包解决

读取数据时kafka采用了4字节标识数据长度来避免粘包黏包的问题:

http://www.yjzp8.cn/news/33.html

相关文章: