kafka

kafka为什么快

数据分片(每个topic会把数据切分为多个partition,每个partition有自己对应的副本保证可靠性,但是副本在leader partition down掉前不会提供服务)可以横向扩容

连续读速度快

kafka虽然跑在jvm上但是使用堆外内存(内核缓冲区内存)pagecache,所以不需要做内存回收。

kafka会自动预热,把数据加载到缓冲区里

pagecache

虚拟内存:内存地址映射

kafka的windows适配性不好

kafka ack保证数据写到内存里,刷盘策略决定数据什么时候落盘,所以ack不能保证数据不会丢失。

零拷贝

减少内核态缓冲区到用户态缓冲区的cpu拷贝

dma拷贝:io到内核的拷贝

普通拷贝:

零拷贝:

producer的消息会包含key,来决定消息发送到哪个partition。

producer按批次发送数据,当数据停留指定时间或者数据达到一定量时,发送给kafka 中对应partition的leader 副本所在的broker节点的socket receive buffer;

socket通过network threads将数据包装成一个请求置入reque queue,然后通过一个IO线程写入到page cache,pagecache根据刷盘策略落盘;

为了保证落盘前的数据可靠性,会将数据备份到其他的broker上,(follower副本会向leader副本拉取数据,这些follower在leader 副本 down掉前,只做备份,不会被使用。)

副本备份完毕后,会发送给producer一个ack,其中可以在network threads控制消息的顺序(上一条消息存储失败,则下一条数据卡在socket receive buffer)

HDD(机械硬盘)和SSD的随机写与顺序写

HDD :随机写时间浪费在寻址和旋转盘片

SSD:写入数据时,需要先擦除一块物理地址,然后写入在这块地址上的一个page里;因此随机写浪费在擦出有用数据时的数据迁移,并且会造成盘碎片化。

混合云

私有云+公有云

私有云:企业自己建设并为内部提供服务,企业可以更严格地控制访问权限和数据管理。

公有云:第三方云厂商所拥有和运营,用户通过互联网使用这些服务;用户只有服务的使用权,数据的控制权相对较弱。

机器扩容 超过 mysql连接数 导致服务崩溃

相关推荐
半梦半醒*5 小时前
zookeeper + kafka
linux·分布式·zookeeper·kafka·centos·运维开发
代码哈士奇9 小时前
简单使用Nest+Nacos+Kafka实现微服务
后端·微服务·nacos·kafka·nestjs
Gss77711 小时前
Kafka 相关内容总结
分布式·kafka
摇滚侠15 小时前
Spring Boot3零基础教程,KafkaTemplate 发送消息,笔记77
java·spring boot·笔记·后端·kafka
小小的木头人18 小时前
Windows Docker desktop 部署
运维·kafka
摇滚侠1 天前
Spring Boot3零基础教程,监听 Kafka 消息,笔记78
spring boot·笔记·kafka
摇滚侠1 天前
Spring Boot3零基础教程,Kafka 小结,笔记79
spring boot·笔记·kafka
沐浴露z1 天前
一篇文章详解Kafka Broker
java·分布式·kafka
ErizJ2 天前
IM|im-service
golang·kafka·go·im·心跳检测
沐浴露z2 天前
Kafka 生产者详解(上):消息发送流程与API,分区,吞吐量与数据可靠性
java·kafka·消息队列