这里写自定义目录标题
kafka高性能架构鉴赏
服务端请求处理
顺序处理请求(方案一)
while(true){
Requestrequest=accept(connection); handle(request);
}
每个请求必须等待前一个请求处理完了以后才会得到处理,吞吐量太差!
异步处理(方案二)
while(true){
Requestrequest= accept(connection);
Thread thread= new Thread(handle(request));
thread.start();
}
每个请求都创建一个线程去处理,请求不会阻塞,但是每个请求都创建一个线程开销太 大
高性能高并发
顺序读写
K afka是将消息记录持久化到本地磁盘中的,一般人会认为磁盘读写性能差,对Kafka性 能如何保证提出质疑。实际上不管是内存还是磁盘,快或慢关键在于寻址的方式,磁盘分为顺序读写与随机读写,内存也一样分为顺序读写与随机读写。基于磁盘的随机读写确实很慢,但磁盘的顺序读写性能却很高,一般而言要高出磁盘随机读写三个数量级,一些情况下磁盘顺序读写性能甚至要高于内存随机读写
跳表设计
log文件:里面存储的是消息 index:存储索引信息这两个文件的文件名都是一样的,成对出现的,这个文件名是以 log 文件里的第一条消息的 offset 命名的,如下第一个文 件的文件名叫 00000000000012768089,代表着这个文件 里的第一个消息的 offset 是 12768089,也就是说第二条消 息就是12768090了。
零拷贝
非零拷贝流程
零拷贝流程