gitee.com/woood2/luca@v1.0.4/test/kafka.md (about)

     1  ### single message
     2  - 生产单条消息,失去kafka连接,观察投递可靠性 [ pass ]
     3  - 生产单条消息,失去kafka连接,随后恢复,观察程序可否自动恢复 [ pass ]
     4  - 消费单条消息,正常提交 [ pass ]
     5  - 消费单条消息,不提交,重试50min+,观察alarm机制以及是否发生 live lock [ pass ]
     6  - 消费单条消息,触发panic [ pass ]
     7  
     8  ### batch message
     9  - 生产&消费批量消息,校对数量 [ pass ]
    10  - 生产&消费批量消息,切换consumer状态:启动|关闭,观察吞吐量 [ pass ]
    11  - 生产&消费批量消息,切换投递模式:none|local|all,观察吞吐量 [ pass ]
    12  
    13  ### offset
    14  - 多个consumer group 各具私有offset [ pass ]
    15  - 新增consumer group 从最新offset开始消费 [ pass ]
    16  - 新增consumer group 从最旧offset开始消费 [ pass ]
    17  
    18  ### instance
    19  - 单实例(消费)设置较大partition,观察goroutine数量及稳定性 [ pass ]
    20  - 单实例(消费)正常关闭,优雅退出 [ pass ]
    21  - 单实例(消费)正常关闭,正在retry消息,优雅退出 [ pass ] 
    22  - 单实例(消费)重启,从上次未提交的offset开始  [ pass ] 
    23  - 单实例(消费)失去kafka连接,观察程序表现 [ pass ]
    24  - 多实例(消费)新增实例触发rebalance,且处于消息为空状态 [ pass ]
    25  - 多实例(消费)新增实例触发rebalance,且处于消息不为空的正常消费状态 [ pass ]
    26  - 多实例(消费)新增实例触发rebalance,且处于重试消息状态  [ pass ]
    27  - 多实例(消费)关闭实例触发rebalance [ pass ]
    28  - 多实例(消费)修改partition数量触发rebalance [ pass ]
    29  
    30  ### 失去kafka连接
    31  - producer失去kafka连接:暂时无法投递,等kafka恢复后,又可重新投递
    32  - consumer失去kafka连接:
    33      1. client.Consume方法立刻退出,err为nil
    34      2. 通过loop重新client.Consume,err!=err
    35      3. 通过loop循环次数区分如果是address写错,还是lose连接,前者结束进程,后者尝试重新连接
    36  
    37  ### segmentio/kafka-go 生产吞吐量
    38  - 启动consumer之后,生产tps明显下降,几乎折半
    39  - 分发算法差别不大,RoundRobin 与 LeastBytes 效率接近
    40  - 投递可靠性影响巨大,kafka.RequireOne生产2-5q/sec,kafka.RequireNone生产1.3w/sec 
    41  - 开启batch后影响巨大,kafka.RequireOne,BatchSize:1000,BatchTimeout:100ms,生产10w/2.3sec
    42  
    43  ### sarama 生产吞吐量
    44  - 启动/关闭consumer影响巨大
    45  - 设置较大的partition,对于生产吞吐量,影响较大
    46  - 投递可靠性影响巨大
    47  - 并发模型下,生产吞吐量轻易达到 1.3w/sec,性能表现显著优于 segmentio/kafka-go
    48  - 详见 greet_test.go