编辑
2020-08-27
编程
00

nginx base

1.搭建

1.1 安装 nginx

1.1.1 环境-操作系统

  • Linux 2.6 及以上版本的操作系统
    • 为Linux 2.6及以上内核才支持epoll,而在Linux上使用select或poll来解决事件的多路复用,是无法解决高并发压力问题的
    • 使用 uname -a 命令来查询 Linux 内核版本
编辑
2020-08-05
编程
00

1.1 分区

分区的作用就是提供负载均衡的能力

1.2 分区策略

分区策略是决定生产者将消息发送到哪个分区的算法

  1. 显式地配置生产者端的参数partitioner.class
  2. 实现org.apache.kafka.clients.producer.Partitioner接口
  3. int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
编辑
2020-07-31
编程
00

1 线上部署注意事项

1.1 操作系统

  • I/O 模型的使用: 实际上 Kafka 客户端底层使用了 Java 的 selector,selector 在 Linux 上的实现机制是 epoll,而在 Windows 平台上的实现机制是 select。因此在这一点上将 Kafka 部署在 Linux 上是有优势的,因为能够获得更高效的 I/O 性能。
  • 数据网络传输效率: 零拷贝(Zero Copy)技术,就是当数据在磁盘和网络进行传输时避免昂贵的内核态数据拷贝从而实现快速的数据传输。在 Linux 部署 Kafka 能够享受到零拷贝技术所带来的快速数据传输特性。
  • 社区支持度: 社区目前对 Windows 平台上发现的 Kafka Bug 不做任何承诺
编辑
2020-07-10
编程
00

rebalance

1. 参数问题

configversiondefaultintro
heartbeat.interval.ms0.10.0.x3000session.timeout.ms 时间内需要接受到异常 heartbeat, 必须小于 session.timeout.ms,最好不大于1/3
只有在 poll() 时才会发送 heartbeat
0.11.0.x3000session.timeout.ms 时间内需要接受到异常 heartbeat, 必须小于 session.timeout.ms,最好不大于1/3
心跳独立线程发送
session.timeout.ms0.10.0.x30000由于只有在 poll() 时才会发送 heartbeat 所有要在 session.timeout.ms 发送前完成,心跳发送,session.timeout.ms 需要大于 poll() 的间隔时间,所以在一定程度上限制了 poll() 的间隔时间
0.11.0.x10000由于心跳是独立线程发送,所以session.timeout.ms 不在限制到 poll() 的时间,只需要大于 heartbeat.interval.ms 即可
max.poll.interval.ms0.10.0.x没有该参数,在一定程度上与 session.timeout.ms 混用
0.11.0.x300000poll() 的间隔时间
max.poll.records0.10.0.x2147483647一次性拉去的最大消息数量
0.11.0.x500一次性拉去的最大消息数量
编辑
2020-07-10
编程
00

kafka 吞吐量测试

1.指令

kafka-producer-perf-test.sh