kafka权威指南阅读笔记(一)

1.如何为主题选定分区数量:
为主题选定分区数量并不是 一 件可有可无的事情,在进行数量选择时,需要
考虑如下几个因素。
· 主题需要达到多大的吞吐量?例如,是希望每秒钟写入 100KB 还是!1GB? . 从单个分区读取数据的最大吞吐量是多少?每个分区 一般都会有一个消费 者,如果你知道消费者将数据写入数据库的速度不会超过每秒 50MB,那
么你也该知道,从一个分区读取数据的吞吐量不需要超过每秒 50MB。
· 可以通过类似的方法估算生产者向单个分区写入数据的吞吐量,不过生产
者的速度一般比消费者快得多,所以最好为生产者多估算一些吞吐量。
· 每个 broker 包含的分区个数、可用的磁盘空间和网络带宽。
· 如果消息是按照不同的键采写入分区的,那么为已有的主题新增分区就会
很困难。
· 单个 broker对分区个数是有限制的,因为分区越多,占用的内存越多,完
成首领选举需要的时间也越长。

2.kafka服务器网络调优
默认情况下,系统内核没有针对快速的大流量网络传输进行优化, 所以对于应用程序来 说,一般需要对 Linux 系统的网络技进行调优,以实现对大流量的支持。
(1)socket读写缓冲区
首先可以对分配给 socket读写缓冲区的内存大小作出调整,这样可以显著提升网络的传 输性能。 socket读写缓冲区对应的参数分别是net.core.wmem_default和 net.core.rmem_default,合理的值是 131 072 (也就是 128KB)。读写缓冲区最大值对应的参数分别是 net.core.wmem_max和 net.core.rmem_max,合理的值是 2 097 152 (也就是 2MB)。要注 意,最大值井不意味着每个 socket一定要有这么大的缓冲空间,只是说在必要的情况下 才会达到这个值。
(2)设置 TCP socket的读写缓冲区
参数分别是 net.i.pv4. tcp_wmem和 net.i.pv4.tcp_rmem。这些参数的值由 3个整数组成,它们使用空格分隔,分别 表示最小值、默认值和最大值。最大值不能大于net.core.wmem_max和 net.core.rmem_max指定的大小。例如,“4096 65536 204800”表示最小值是 4kb 、默认值是 64kb 、最大值 是 2MB。根据 Kafka服务器接收流量的实际情况,可能需要设置更高的最大值,为网络连 接提供更大的缓冲空间。
(3)其他参数
还有一些其他的网络参数
例如, 把 net.i.pv4.tcp_window_scaling 设为 l,启用 TCP 时间窗扩展,可以提升客户端传输数据的效率,传输的数据可以在服务器端进行缓冲 。把net.1.pv4.tcp_max_syn_backlog设为比默认值 1024更大的值,可以接受更多的井发连接。 把 net.core.netdev_max_backlog 设为比默认值 1000 更大的值,有助于应对网络流量的爆 发 ,特别是在使用千兆网络的情况下,允许更多的数据包排队等待内核处理。


阅读更多

没有更多推荐了,返回首页