github.com/weedge/lib@v0.0.0-20230424045628-a36dcc1d90e4/client/mq/kafka/test-kafka-zk.md (about)

     1  #### 安装测试:
     2  
     3  开发环境: mac
     4  
     5  安装:brew install kafka
     6  
     7  开箱即用,zookeeper, kafka broker service启动:
     8  
     9  ```shell
    10  # 启动zookeeper,单个服务,
    11  /usr/local/bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
    12  # 启动kafka broker 0
    13  /usr/local/bin/kafka-server-start /usr/local/etc/kafka/server.properties
    14  # 启动kafka broker 1 修改broker.id=1 listeners=PLAINTEXT://:9093 log.dirs=/usr/local/var/lib/kafka-1-logs
    15  /usr/local/bin/kafka-server-start /usr/local/etc/kafka/server-1.properties
    16  # 启动kafka broker 2 修改broker.id=2 listeners=PLAINTEXT://:9094 log.dirs=/usr/local/var/lib/kafka-2-logs
    17  /usr/local/bin/kafka-server-start /usr/local/etc/kafka/server-2.properties
    18  # 创建topic, topic 分片数,副本数:为1只有一个主副本,没有备份
    19  /usr/local/bin/kafka-topics  --create --zookeeper localhost:2181 --replication-factor 3 --partitions 2 --topic sarama
    20  # 对sarama topic生产数据
    21  /usr/local/bin/kafka-console-producer --broker-list localhost:9092,localhost:9093,localhost:9094 --topic sarama
    22  # 从开始offset 消费 sarama topic
    23  /usr/local/bin/kafka-console-consumer --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic sarama --from-beginning
    24  ```
    25  
    26  #####  /usr/local/etc/kafka/server.properties 配置:
    27  
    28  ```shell
    29  #查看kafka.server.KafkaConfig获取更多细节和默认值
    30  
    31  ############################# 服务器基础配置 Server Basics #############################
    32  
    33  #代理的id。对于每个代理,这必须设置为唯一的整数。
    34  broker.id = 0
    35  
    36  ############################# 套接字服务器设置  Socket Server Settings 网络模型设置#############################
    37  
    38  #socket服务器监听的地址。它将得到返回的值
    39  # java.net.InetAddress.getCanonicalHostName()如果没有配置。
    40  #格式:
    41  # listener = listener_name://host_name:port
    42  #例子:
    43  # listener = PLAINTEXT://your.host.name:9092
    44  listeners=PLAINTEXT://:9092
    45  
    46  #代理将向生产者和消费者发布的主机名和端口。
    47  #如果配置了监听器,则使用监听器的值。否则,它将使用该值
    48  #从java.net.InetAddress.getCanonicalHostName()返回。
    49  #advertised.listeners=PLAINTEXT://your.host.name:9092
    50  
    51  #将监听器名称映射到安全协议,默认情况下它们是相同的。有关更多细节,请参阅配置文档
    52  #listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
    53  
    54  #服务器从网络接收请求并向网络发送响应的线程数
    55  num.network.threads = 3
    56  
    57  #服务器用于处理请求的线程数,可能包括磁盘I/O
    58  num.io.threads = 8
    59  
    60  #socket服务器使用的发送缓冲区 SO_SNDBUF
    61  socket.send.buffer.bytes = 102400
    62  
    63  #socket服务器使用的接收缓冲区 SO_RCVBUF
    64  socket.receive.buffer.bytes = 102400
    65  
    66  #socket服务器将接受的最大请求大小(针对OOM的保护)
    67  socket.request.max.bytes = 104857600
    68  
    69  
    70  ############################# 日志基础配置 Log Basics ##############################
    71  
    72  #以逗号分隔的目录列表,用于存储日志文件
    73  log.dirs=/usr/local/var/lib/kafka-logs
    74  
    75  # 每个主题的默认日志分区数。更多分区允许更大分区
    76  # parallelism for consumption,但这也会导致更多的文件在broker上。
    77  num.partitions = 3
    78  
    79  #每个数据目录用于启动时日志恢复和关闭时刷新的线程数。
    80  #对于数据目录位于RAID的安装,建议增加该值。
    81  num.recovery.threads.per.data.dir = 1
    82  
    83  ############################# 内部主题设置   #############################
    84  #组元数据内部主题“__consumer_offset”和“__transaction_state”的复制因子
    85  #对于开发测试以外的任何情况,建议使用大于1的值,以确保可用性,例如3。
    86  offsets.topic.replication.factor = 1
    87  transaction.state.log.replication.factor = 1
    88  transaction.state.log.min.isr = 1
    89  
    90  ############################# 日志刷新策略  Log Flush Policy #############################
    91  
    92  #消息立即写入文件系统,但默认情况下,我们只使用fsync()进行同步
    93  #操作系统缓存延迟。以下配置控制将数据刷新到磁盘。
    94  #这里有一些重要的权衡:
    95  # 1。持久性:如果不使用复制,未刷新的数据可能会丢失。
    96  # 2。延迟:当确实发生刷新时,非常大的刷新间隔可能会导致延迟尖峰,因为有大量数据要刷新。
    97  # 3。吞吐量:刷新通常是开销最大的操作,较小的刷新间隔可能导致过多的搜索。
    98  #下面的设置允许将刷新策略配置为在一段时间或之后刷新数据
    99  #每个N条消息(或两者)。这可以全局完成,并在每个主题的基础上重写。
   100  
   101  #在强制将数据刷新到磁盘之前接受的消息数
   102  # log.flush.interval.messages = 10000
   103  
   104  #在强制刷新之前,消息可以在日志中保存的最大时间
   105  # log.flush.interval.ms = 1000
   106  
   107  ############################# 日志保留策略  Log Retention Policy #############################
   108  
   109  #以下配置控制日志段的处理。政策可以
   110  #被设置为在一段时间后,或在给定的大小积累后删除段。
   111  #当满足这些条件时,段将被删除。删除总是发生
   112  #从日志的末尾。
   113  
   114  #日志文件的最小年龄可以被删除
   115  log.retention.hours = 168
   116  
   117  #基于大小的日志保留策略。除非有剩余的片段,否则将从日志中删除
   118  # segment drop below log.retention.bytes。功能独立于日志。保留。小时。
   119  # log.retention.bytes = 1073741824
   120  
   121  #日志段文件的最大大小。当达到这个大小时,将创建一个新的日志段。
   122  log.segment.bytes = 1073741824
   123  
   124  #检查日志段的时间间隔,查看是否可以根据该时间间隔删除日志段
   125  #保留政策
   126  log.retention.check.interval.ms = 300000
   127  
   128  ############################# zookeeper  #############################
   129  
   130  # Zookeeper连接字符串(详见Zookeeper文档)。
   131  # 这是一个逗号分隔的主机:端口对,每个对应一个zk
   132  #服务器。如。“127.0.0.1:3000 127.0.0.1:3001 127.0.0.1:3002”。
   133  #你也可以附加一个可选的chroot字符串到url来指定
   134  #所有kafka znodes的根目录。
   135  zookeeper.connect = localhost: 2181
   136  
   137  #连接zookeeper超时,单位为ms
   138  zookeeper.connection.timeout.ms = 18000
   139  
   140  
   141  ############################# 组织协调器设置  Group Coordinator Settings  #############################
   142  
   143  #下面的配置指定了GroupCoordinator延迟初始消费者重新平衡的时间,以毫秒为单位。
   144  #当新成员加入组时,再平衡将被进一步延迟group.initial.rebalance.delay.ms值,最大延迟为max.poll.interval.ms。
   145  #默认值是3秒。
   146  #我们在这里将其重写为0,因为这有利于开发和测试的开箱即用体验。
   147  #然而,在生产环境中,默认值3秒更合适,因为这将有助于避免在应用程序启动期间不必要的、可能昂贵的重新平衡。
   148  group.initial.rebalance.delay.ms = 0
   149  
   150  ```
   151