zoukankan      html  css  js  c++  java
  • Kafka基础信息

    一.kafka吞吐量

    kafka吞吐量大原因

    1.kafka采用追加写入消息的方式,只能在日志文件末尾追加写入新的数据,不允许修改已写入的消息。
    kafka采用零拷贝技术,确切的说是sendfile -- java的FileChannel.transferTo方法。
    零拷贝:首先在内核驱动程序处理I/O数据的时候,他不在需要进行上下文的切换,节省了内核缓冲区与用户态应用程序缓冲区之间的数据拷贝,
    同时他利用直接存储器访问技术执行I/O操作,因此也避免了OS内核缓冲区之间的数据拷贝。
    2.采用页缓存,因此直接命中缓存
    

    高吞吐量、低延迟的设计目标

    1.大量的使用操作系统页缓存,内存操作速度快且命中率高
    2.kafka不直接参与物理I/O操作,而是交由最擅长此时的操作系统来完成。
    3.采用追加写入方式,摒弃了缓慢的磁盘随机读/写操作。
    4.使用以sendfile为代表的零拷贝技术加强网络间的操作传输效率。
    

    二.消息的持久化

    1.解耦消息发送和消息消费:通过消息持久化式的生产方不在直接和消费者方耦合,kafka只是简单地把消息生产出来交给kafka服务器保存,
    由此提高了整体的吞吐量。
    2.实现灵活的消息处理:对于已经处理过的消息可能在未来的某个时间点重新处理一次,即所谓的消息重演。
    消息持久化可以很方便的实现这样的需求。
    

    三.负载均衡和故障迁移

    1.负载均衡:通过智能化的分区领导者选举实现的。
    2.故障迁移:服务器与备份服务器之间采用心跳维持的(会话机制),当心跳无法维持或主服务器注册到服务中心的挥发超时到期了,认为主服务器无法正常工作,
    集群会启用某个备份服务器来代替工作。
    

    四.伸缩性

    kafka服务器上的状态统一交由zookeeper保管。当然kafka会保留很轻量级的内部状态,状态维护一致性代价很低。
    

    五.kafka的使用场景

    1.消息传输
    2.网站行为日志追踪
    3.审计数据收集
    4.日志收集
    5.Event sourcing 领域驱动设计(DDD) : 使用序列标识状态变更,这个和kafka的设计特性相同。
    6.流式处理
    
  • 相关阅读:
    P1587 [NOI2016]循环之美 杜教筛
    【学习笔记】省选动态规划类型选讲
    【模板】结构体重载高精度
    SP1716 GSS3
    SP1043 GSS1
    P1890 gcd区间 线段树
    【模板】(最小费用)最大流
    【模板】矩阵乘法
    P1073 最优贸易 DFS
    【2019.8.14】2019QB学堂DP图论班第一次考试 Problem C
  • 原文地址:https://www.cnblogs.com/snail-gao/p/12924223.html
Copyright © 2011-2022 走看看