{"id":85195,"date":"2026-07-27T05:00:54","date_gmt":"2026-07-26T21:00:54","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/85195.html"},"modified":"2026-07-27T05:00:54","modified_gmt":"2026-07-26T21:00:54","slug":"kafka-%e7%94%9f%e4%ba%a7%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae%e4%bc%98%e5%8c%96%e4%b8%8e%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/85195.html","title":{"rendered":"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357"},"content":{"rendered":"<h4>\u6838\u5fc3\u914d\u7f6e\u53c2\u6570\u5206\u7c7b\u89e3\u6790<\/h4>\n<p>Kafka\u751f\u4ea7\u73af\u5883\u90e8\u7f72\u5fc5\u987b\u8c03\u6574\u9ed8\u8ba4\u914d\u7f6e&#xff0c;\u5b98\u65b9\u6587\u6863&#xff08;kafka.apache.org\/documentation\/#configuration&#xff09;\u63d0\u4f9b\u4e86\u5b8c\u6574\u914d\u7f6e\u9879\u8bf4\u660e&#xff1a;<\/p>\n<p>1 ) \u670d\u52a1\u7aef\u5fc5\u8981\u53c2\u6570<\/p>\n<p>broker.id\u5fc5\u987b\u552f\u4e00&#xff08;\u96c6\u7fa4\u73af\u5883&#xff09;<br \/>\nbroker.id&#061;0<br \/>\nlisteners&#061;PLAINTEXT:\/\/:9092<br \/>\nlog.dirs&#061;\/kafka\/logs  # \u7edd\u5bf9\u907f\u514d\u4f7f\u7528\/tmp\u76ee\u5f55&#xff08;\u7cfb\u7edf\u53ef\u80fd\u81ea\u52a8\u6e05\u7406&#xff09;<br \/>\nadvertised.listeners&#061;PLAINTEXT:\/\/192.168.1.10:9092  # \u6ce8\u518c\u5230ZooKeeper\u7684\u5185\u7f51\u5730\u5740<br \/>\nnum.partitions&#061;3  # \u9ed8\u8ba4\u5206\u533a\u6570&#xff08;\u5efa\u8bae&gt;1&#xff09;<br \/>\ndefault.replication.factor&#061;3  # \u9ed8\u8ba4\u526f\u672c\u6570&#xff08;\u5fc5\u987b\u22652&#xff0c;\u63a8\u8350\u5947\u6570&#xff09;<br \/>\nmin.insync.replicas&#061;2  # ISR\u6700\u5c0f\u540c\u6b65\u526f\u672c\u6570<br \/>\nunclean.leader.election.enable&#061;false  # \u7981\u7528\u975eISR\u526f\u672c\u9009\u4e3e<br \/>\ncontrolled.shutdown.enable&#061;true  # \u542f\u7528\u5b89\u5168\u5173\u95ed  <\/p>\n<p>\u5173\u952e\u8bf4\u660e&#xff1a;<\/p>\n<ul>\n<li>log.dirs&#xff1a;\u5fc5\u987b\u6307\u5411\u6301\u4e45\u5316\u5b58\u50a8\u8def\u5f84&#xff0c;\u907f\u514d\u4f7f\u7528\u4e34\u65f6\u76ee\u5f55<\/li>\n<li>\u526f\u672c\u914d\u7f6e&#xff1a;\u91c7\u7528\u5947\u6570\u4e2a\u526f\u672c&#xff08;\u59823&#xff09;\u4fbf\u4e8e\u6545\u969c\u6062\u590d\u65f6\u901a\u8fc7\u591a\u6570\u51b3\u673a\u5236\u786e\u8ba4\u6570\u636e\u4e00\u81f4\u6027<\/li>\n<li>unclean.leader.election.enable&#xff1a;\u7981\u7528\u53ef\u9632\u6b62\u975e\u540c\u6b65\u526f\u672c\u6210\u4e3aLeader&#xff0c;\u786e\u4fdd\u6570\u636e\u5b8c\u6574\u6027<\/li>\n<\/ul>\n<p>2 ) \u63a8\u8350\u4f18\u5316\u53c2\u6570<\/p>\n<p>message.max.bytes&#061;1048576  # \u5355\u6761\u6d88\u606f\u6700\u59271MB<br \/>\nreplica.fetch.max.bytes&#061;1048576  # \u526f\u672c\u540c\u6b65\u5927\u5c0f<br \/>\nnum.recovery.threads.per.data.dir&#061;4  # \u65e5\u5fd7\u6062\u590d\u7ebf\u7a0b\u6570<br \/>\nlog.flush.interval.messages&#061;10000  # \u79ef\u651210000\u6761\u6d88\u606f\u5237\u76d8<br \/>\nlog.flush.interval.ms&#061;1000  # \u6700\u957f1\u79d2\u5237\u76d8<br \/>\nlog.retention.hours&#061;168  # \u65e5\u5fd7\u4fdd\u75597\u5929<br \/>\nlog.segment.bytes&#061;1073741824  # \u65e5\u5fd7\u6bb5\u6587\u4ef61GB  <\/p>\n<p>\u6027\u80fd\u6743\u8861&#xff1a;\u5237\u76d8\u95f4\u9694(log.flush.*)\u9700\u6839\u636e\u4e1a\u52a1\u5bb9\u5fcd\u5ea6\u8c03\u6574\u2014\u2014\u8f83\u77ed\u95f4\u9694\u63d0\u5347\u6570\u636e\u5b89\u5168\u6027\u4f46\u964d\u4f4e\u541e\u5410\u91cf<\/p>\n<p>3 ) \u52a8\u6001\u8c03\u6574\u53c2\u6570<\/p>\n<p>\u901a\u8fc7kafka-configs.sh\u5b9e\u65f6\u4fee\u6539&#xff08;\u65e0\u9700\u91cd\u542f&#xff09;&#xff1a;<\/p>\n<p>\u7981\u7528unclean\u9009\u4e3e<br \/>\nbin\/kafka-configs.sh &#8211;bootstrap-server localhost:9092 <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;entity-type brokers &#8211;entity-name <span class=\"token number\">0<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;alter &#8211;add-config unclean.leader.election.enable<span class=\"token operator\">&#061;<\/span>false  <\/p>\n<p>\u8bbe\u7f6e\u6700\u5c0f\u540c\u6b65\u526f\u672c\u6570<br \/>\nbin\/kafka-configs.sh &#8211;bootstrap-server localhost:9092 <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;entity-type topics &#8211;entity-name my-topic <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;alter &#8211;add-config min.insync.replicas<span class=\"token operator\">&#061;<\/span><span class=\"token number\">2<\/span>  <\/p>\n<p>4 ) \u5ba2\u6237\u7aef\u914d\u7f6e\u5efa\u8bae<\/p>\n<p><span class=\"token comment\">\/\/ Producer\u914d\u7f6e&#xff08;NestJS\u793a\u4f8b&#xff09;  <\/span><br \/>\n<span class=\"token keyword\">const<\/span> producerConfig <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  acks<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;all&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token comment\">\/\/ \u9700\u6240\u6709ISR\u526f\u672c\u786e\u8ba4  <\/span><br \/>\n  compression<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;snappy&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  batchSize<span class=\"token operator\">:<\/span> <span class=\"token number\">16384<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token comment\">\/\/ 16KB\u6279\u6b21  <\/span><br \/>\n  lingerMs<span class=\"token operator\">:<\/span> <span class=\"token number\">5<\/span>        <span class=\"token comment\">\/\/ \u6700\u957f\u7b49\u5f855ms  <\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p><span class=\"token comment\">\/\/ Consumer\u914d\u7f6e  <\/span><br \/>\n<span class=\"token keyword\">const<\/span> consumerConfig <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  maxPartitionFetchBytes<span class=\"token operator\">:<\/span> <span class=\"token number\">1048576<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token comment\">\/\/ \u4e0emessage.max.bytes\u5339\u914d  <\/span><br \/>\n  autoOffsetReset<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;latest&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  maxPollRecords<span class=\"token operator\">:<\/span> <span class=\"token number\">500<\/span>  <span class=\"token comment\">\/\/ \u5355\u6b21poll\u6700\u5927\u6d88\u606f\u6570  <\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p>\u6d88\u8d39\u8005\u5e76\u53d1\u6a21\u578b&#xff1a;\u5206\u533a\u6570(partitions)\u5e94\u4e0e\u6d88\u8d39\u8005\u7ec4\u7ebf\u7a0b\u6570\u5339\u914d&#xff0c;\u907f\u514d\u8d44\u6e90\u95f2\u7f6e&#xff08;1 partition : 1 consumer&#xff09;<\/p>\n<h4>\u670d\u52a1\u5668\u57fa\u7840\u8bbe\u65bd\u4f18\u5316<\/h4>\n<p>1 ) JVM\u5c42\u8c03\u4f18<br \/>\n\u57fa\u4e8e24GB\u5185\u5b58\/4\u6838CPU\/SATA\u786c\u76d8\u7684\u57fa\u51c6\u914d\u7f6e&#xff1a;<\/p>\n<p>JDK <span class=\"token number\">11<\/span>&#043; G1GC\u914d\u7f6e<br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">KAFKA_HEAP_OPTS<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;-Xms12g -Xmx12g&#034;<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">KAFKA_JVM_PERFORMANCE_OPTS<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;-XX:&#043;UseG1GC<br \/>\n  -XX:MaxGCPauseMillis&#061;200<br \/>\n  -XX:InitiatingHeapOccupancyPercent&#061;35<br \/>\n  -XX:G1HeapRegionSize&#061;16m&#034;<\/span>  <\/p>\n<p>2 ) \u64cd\u4f5c\u7cfb\u7edf\u5c42\u914d\u7f6e<\/p>\n<table>\n<tr>\u7ec4\u4ef6\u63a8\u8350\u89c4\u683c\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u5185\u5b58<\/td>\n<td>\u226564GB<\/td>\n<td>Kafka\u5927\u91cf\u4f7f\u7528PageCache<\/td>\n<\/tr>\n<tr>\n<td>CPU<\/td>\n<td>16\u6838&#043; (\u5185\u5b58:CPU&#061;4:1)<\/td>\n<td>\u5e76\u884c\u5904\u7406\u5206\u533a\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>\u78c1\u76d8<\/td>\n<td>RAID 10\/SSD NVMe<\/td>\n<td>\u987a\u5e8f\u5199\u541e\u5410&gt;500MB\/s<\/td>\n<\/tr>\n<tr>\n<td>\u7f51\u7edc<\/td>\n<td>\u4e07\u5146\u4ee5\u592a\u7f51<\/td>\n<td>\u907f\u514d\u526f\u672c\u540c\u6b65\u74f6\u9888<\/td>\n<\/tr>\n<tr>\n<td>\u6587\u4ef6\u7cfb\u7edf<\/td>\n<td>XFS\/ext4<\/td>\n<td>\u7981\u7528atime\u66f4\u65b0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5173\u952e\u5185\u6838\u53c2\u6570\u8c03\u6574&#xff1a;<\/p>\n<p>\/etc\/sysctl.conf<br \/>\nfs.file-max<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1000000<\/span>        <span class=\"token comment\"># \u6587\u4ef6\u63cf\u8ff0\u7b26\u4e0a\u9650  <\/span><br \/>\nnet.core.somaxconn<span class=\"token operator\">&#061;<\/span><span class=\"token number\">65535<\/span>   <span class=\"token comment\"># TCP\u961f\u5217\u957f\u5ea6  <\/span><br \/>\nvm.swappiness<span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span>            <span class=\"token comment\"># \u51cf\u5c11\u4ea4\u6362\u5185\u5b58\u4f7f\u7528  <\/span><br \/>\nvm.dirty_ratio<span class=\"token operator\">&#061;<\/span><span class=\"token number\">80<\/span>          <span class=\"token comment\"># \u9875\u7f13\u5b58\u810f\u9875\u6bd4\u4f8b  <\/span><br \/>\nvm.dirty_background_ratio<span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span>   <\/p>\n<p>\u6267\u884c\u751f\u6548<br \/>\nsysctl -p  <\/p>\n<p>3 ) \u8d44\u6e90\u89c4\u5212\u516c\u5f0f<\/p>\n<ul>\n<li>\u5206\u533a\u6570\u91cf\u4e0a\u9650&#xff1a;\u5355\u4e2aBroker\u5206\u533a\u6570 \u2264 2000<\/li>\n<li>\u5206\u533a\u5bb9\u91cf\u4e0a\u9650&#xff1a;\u5355\u5206\u533a\u6570\u636e\u91cf \u2264 25GB<\/li>\n<li>\u6587\u4ef6\u63cf\u8ff0\u7b26\u9700\u6c42&#xff1a;\u9700\u6c42FD\u6570 &#061; (\u5206\u533a\u6570 \u00d7 \u6bb5\u6587\u4ef6\u5927\u5c0f \u00f7 \u65e5\u5fd7\u6bb5\u5927\u5c0f) \u00d7 1.5<br \/>\n\u793a\u4f8b&#xff1a;(1000 partitions \u00d7 50GB \u00f7 1GB) \u00d7 1.5 &#061; 75000  <\/p>\n<\/li>\n<li>PageCache\u5206\u914d&#xff1a;\u7406\u60f3PageCache &#061; \u603b\u65e5\u5fd7\u5bb9\u91cf \u00d7 0.7\n<\/li>\n<\/ul>\n<h4>\u5de5\u7a0b\u793a\u4f8b&#xff1a;NestJS\u96c6\u6210Kafka\u5168\u65b9\u6848<\/h4>\n<p>1 ) \u65b9\u68481&#xff1a;\u57fa\u7840\u751f\u4ea7\u8005\/\u6d88\u8d39\u8005\u5b9e\u73b0<\/p>\n<p><span class=\"token comment\">\/\/ kafka.module.ts  <\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> Module <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/common&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> ClientsModule<span class=\"token punctuation\">,<\/span> Transport <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/microservices&#039;<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p>&#064;<span class=\"token function\">Module<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n  imports<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n    ClientsModule<span class=\"token punctuation\">.<\/span><span class=\"token function\">register<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><br \/>\n      <span class=\"token punctuation\">{<\/span><br \/>\n        name<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;ORDER_SERVICE&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        transport<span class=\"token operator\">:<\/span> Transport<span class=\"token punctuation\">.<\/span><span class=\"token constant\">KAFKA<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        options<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n          client<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            brokers<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;kafka1:9092&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#039;kafka2:9092&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          producer<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            allowAutoTopicCreation<span class=\"token operator\">:<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">,<\/span><br \/>\n            transactionTimeout<span class=\"token operator\">:<\/span> <span class=\"token number\">30000<\/span><span class=\"token punctuation\">,<\/span><br \/>\n          <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  exports<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span>ClientsModule<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">KafkaModule<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>  <\/p>\n<p><span class=\"token comment\">\/\/ order.producer.ts  <\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> Injectable<span class=\"token punctuation\">,<\/span> Inject <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/common&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> ClientKafka <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/microservices&#039;<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p>&#064;<span class=\"token function\">Injectable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">OrderProducer<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token keyword\">constructor<\/span><span class=\"token punctuation\">(<\/span><br \/>\n    &#064;<span class=\"token function\">Inject<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;ORDER_SERVICE&#039;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">readonly<\/span> kafkaClient<span class=\"token operator\">:<\/span> ClientKafka<br \/>\n  <span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>  <\/p>\n<p>  <span class=\"token keyword\">async<\/span> <span class=\"token function\">publishOrderCreated<\/span><span class=\"token punctuation\">(<\/span>orderId<span class=\"token operator\">:<\/span> <span class=\"token builtin\">string<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">await<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>kafkaClient<span class=\"token punctuation\">.<\/span><span class=\"token function\">emit<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;order.created&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      key<span class=\"token operator\">:<\/span> orderId<span class=\"token punctuation\">,<\/span><br \/>\n      value<span class=\"token operator\">:<\/span> <span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        id<span class=\"token operator\">:<\/span> orderId<span class=\"token punctuation\">,<\/span><br \/>\n        status<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;CREATED&#039;<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      headers<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span> eventType<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;OrderCreated&#039;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span>  <\/p>\n<p><span class=\"token comment\">\/\/ payment.consumer.ts  <\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> Controller <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/common&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> EventPattern<span class=\"token punctuation\">,<\/span> Payload <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/microservices&#039;<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p>&#064;<span class=\"token function\">Controller<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PaymentConsumer<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  &#064;<span class=\"token function\">EventPattern<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;order.created&#039;<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token keyword\">async<\/span> <span class=\"token function\">handleOrderCreated<\/span><span class=\"token punctuation\">(<\/span>&#064;<span class=\"token function\">Payload<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> message<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> order <span class=\"token operator\">&#061;<\/span> <span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">parse<\/span><span class=\"token punctuation\">(<\/span>message<span class=\"token punctuation\">.<\/span>value<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">log<\/span><span class=\"token punctuation\">(<\/span><span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">Processing payment for order <\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>order<span class=\"token punctuation\">.<\/span>id<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u652f\u4ed8\u5904\u7406\u903b\u8f91  <\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span>  <\/p>\n<p>2 ) \u65b9\u68482&#xff1a;\u4e8b\u52a1\u6027\u6d88\u606f\u5904\u7406<\/p>\n<p><span class=\"token comment\">\/\/ transactional.service.ts  <\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> Injectable <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;&#064;nestjs\/common&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> Transactional <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;typeorm-transactional&#039;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">{<\/span> KafkaProducerService <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">from<\/span> <span class=\"token string\">&#039;.\/kafka.producer&#039;<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p>&#064;<span class=\"token function\">Injectable<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">OrderService<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token keyword\">constructor<\/span><span class=\"token punctuation\">(<\/span><br \/>\n    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">readonly<\/span> kafkaProducer<span class=\"token operator\">:<\/span> KafkaProducerService<br \/>\n  <span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>  <\/p>\n<p>  &#064;<span class=\"token function\">Transactional<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token keyword\">async<\/span> <span class=\"token function\">createOrder<\/span><span class=\"token punctuation\">(<\/span>orderData<span class=\"token operator\">:<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">const<\/span> order <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">await<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>orderRepo<span class=\"token punctuation\">.<\/span><span class=\"token function\">save<\/span><span class=\"token punctuation\">(<\/span>orderData<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p>    <span class=\"token comment\">\/\/ \u4e8b\u52a1\u5185\u53d1\u9001\u6d88\u606f&#xff08;\u9700Kafka\u22652.5&#xff09;  <\/span><br \/>\n    <span class=\"token keyword\">await<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">.<\/span>kafkaProducer<span class=\"token punctuation\">.<\/span><span class=\"token function\">sendInTransaction<\/span><span class=\"token punctuation\">(<\/span><br \/>\n      <span class=\"token string\">&#039;order-events&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span><br \/>\n        topic<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;orders&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n        messages<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">{<\/span><br \/>\n          key<span class=\"token operator\">:<\/span> order<span class=\"token punctuation\">.<\/span>id<span class=\"token punctuation\">,<\/span><br \/>\n          value<span class=\"token operator\">:<\/span> <span class=\"token constant\">JSON<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">stringify<\/span><span class=\"token punctuation\">(<\/span>order<span class=\"token punctuation\">)<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      <span class=\"token punctuation\">{<\/span><br \/>\n        isolationLevel<span class=\"token operator\">:<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token comment\">\/\/ READ_COMMITTED  <\/span><br \/>\n        transactionalId<span class=\"token operator\">:<\/span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">&#096;<\/span><span class=\"token string\">tx-order-<\/span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${<\/span>order<span class=\"token punctuation\">.<\/span>id<span class=\"token interpolation-punctuation punctuation\">}<\/span><\/span><span class=\"token template-punctuation string\">&#096;<\/span><\/span><br \/>\n      <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> order<span class=\"token punctuation\">;<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span>  <\/p>\n<p>3 ) \u65b9\u68483&#xff1a;DLQ\u6b7b\u4fe1\u961f\u5217\u5904\u7406<\/p>\n<p><span class=\"token comment\">\/\/ dlq.config.ts  <\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">const<\/span> KafkaDLQConfig <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  consumer<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    groupId<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;payment-group&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    deadLetterQueue<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n      topic<span class=\"token operator\">:<\/span> <span class=\"token string\">&#039;payment.dlq&#039;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      retryAttempts<span class=\"token operator\">:<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      backoff<span class=\"token operator\">:<\/span> <span class=\"token number\">3000<\/span><span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>  <\/p>\n<p><span class=\"token comment\">\/\/ payment.module.ts  <\/span><br \/>\n&#064;<span class=\"token function\">Module<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n  imports<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><br \/>\n    KafkaModule<span class=\"token punctuation\">.<\/span><span class=\"token function\">registerConsumer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><br \/>\n      topics<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#039;payment.process&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n      config<span class=\"token operator\">:<\/span> KafkaDLQConfig<span class=\"token punctuation\">,<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">PaymentModule<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>  <\/p>\n<p><span class=\"token comment\">\/\/ dlq.handler.ts  <\/span><br \/>\n&#064;<span class=\"token function\">Consumer<\/span><span class=\"token punctuation\">(<\/span>KafkaTopics<span class=\"token punctuation\">.<\/span><span class=\"token constant\">PAYMENT_DLQ<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token keyword\">export<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">DLQHandler<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n  &#064;<span class=\"token function\">Subscribe<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n  <span class=\"token keyword\">async<\/span> <span class=\"token function\">handleFailedMessages<\/span><span class=\"token punctuation\">(<\/span>&#064;<span class=\"token function\">Payload<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> message<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token builtin\">console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">error<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#039;DLQ Received:&#039;<\/span><span class=\"token punctuation\">,<\/span> message<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4eba\u5de5\u4ecb\u5165\u5904\u7406\u903b\u8f91  <\/span><br \/>\n  <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span>  <\/p>\n<h4>\u5468\u8fb9\u5173\u952e\u914d\u7f6e<\/h4>\n<li>\n<p>Kafka\u96c6\u7fa4\u90e8\u7f72<\/p>\n<p><span class=\"token comment\"># \u542f\u52a8Zookeeper&#xff08;\u22653.5&#xff09;  <\/span><br \/>\nbin\/zookeeper-server-start.sh config\/zookeeper.properties  <\/p>\n<p><span class=\"token comment\"># \u542f\u52a8Broker\u96c6\u7fa4  <\/span><br \/>\nbin\/kafka-server-start.sh config\/server-1.properties<br \/>\nbin\/kafka-server-start.sh config\/server-2.properties  <\/p>\n<\/li>\n<li>\n<p>\u76d1\u63a7\u96c6\u6210<\/p>\n<ul>\n<li>Prometheus\u6307\u6807\u66b4\u9732&#xff1a;\u914d\u7f6eJMX_EXPORTER<\/li>\n<li>Grafana\u770b\u677f\u6a21\u677f&#xff1a;ID&#061;7589&#xff08;\u5b98\u65b9\u6a21\u677f&#xff09;<\/li>\n<li>\u5173\u952e\u544a\u8b66\u89c4\u5219&#xff1a;<span class=\"token punctuation\">&#8211;<\/span> <span class=\"token key atrule\">alert<\/span><span class=\"token punctuation\">:<\/span> UnderReplicatedPartitions<br \/>\n  <span class=\"token key atrule\">expr<\/span><span class=\"token punctuation\">:<\/span> kafka_server_replicamanager_underreplicatedpartitions <span class=\"token punctuation\">&gt;<\/span> 0<br \/>\n  <span class=\"token key atrule\">for<\/span><span class=\"token punctuation\">:<\/span> 5m  <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u5b89\u5168\u52a0\u56fa<\/p>\n<p># server.properties<br \/>\nsecurity.protocol&#061;SASL_SSL<br \/>\nssl.keystore.location&#061;\/path\/to\/keystore.jks<br \/>\nsasl.mechanism&#061;SCRAM-SHA-512  <\/p>\n<\/li>\n<h4>\u5e38\u89c1\u8bef\u533a\u4e0e\u8fdb\u9636\u5efa\u8bae<\/h4>\n<p>1 &#xff09;\u526f\u672c\u914d\u7f6e\u8bef\u533a<\/p>\n<ul>\n<li>\u8bef\u533a&#xff1a;\u526f\u672c\u56e0\u5b50(replication.factor)&#061;2\u8db3\u591f<\/li>\n<li>\u6b63\u89e3&#xff1a;\u5fc5\u987b\u22653\u4ee5\u5b9e\u73b0\u6545\u969c\u65f6\u4ef2\u88c1\u673a\u5236&#xff08;\u59821\u4e2a\u526f\u672c\u4e0d\u53ef\u7528\u4ecd\u53ef\u9009\u4e3e&#xff09;<\/li>\n<\/ul>\n<p>2 &#xff09;\u5185\u5b58\u5206\u914d\u539f\u5219<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260726210053-6a6675857d5ba.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>3 &#xff09;\u6027\u80fd\u538b\u6d4b\u5de5\u5177<\/p>\n<p><span class=\"token comment\"># \u751f\u4ea7\u8005\u538b\u6d4b  <\/span><br \/>\nbin\/kafka-producer-perf-test.sh <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;topic test-topic <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;num-records <span class=\"token number\">1000000<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;record-size <span class=\"token number\">1024<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;throughput -1 <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;producer.config config\/producer.properties  <\/p>\n<p><span class=\"token comment\"># \u6d88\u8d39\u8005\u538b\u6d4b  <\/span><br \/>\nbin\/kafka-consumer-perf-test.sh <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;topic test-topic <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;messages <span class=\"token number\">1000000<\/span> <span class=\"token punctuation\">\\\\<\/span><br \/>\n  &#8211;broker-list kafka1:9092  <\/p>\n<p>\u7ec8\u6781\u5efa\u8bae&#xff1a;\u5b9a\u671f\u6267\u884ckafka-log-dirs.sh\u68c0\u67e5\u78c1\u76d8\u4f7f\u7528\u7387&#xff0c;\u5f53\u5355\u4e2a\u5206\u533a\u8d85\u8fc720GB\u65f6\u5e94\u8003\u8651\u5386\u53f2\u6570\u636e\u5f52\u6863\u6216\u6269\u5bb9\u5206\u533a\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6838\u5fc3\u914d\u7f6e\u53c2\u6570\u5206\u7c7b\u89e3\u6790Kafka\u751f\u4ea7\u73af\u5883\u90e8\u7f72\u5fc5\u987b\u8c03\u6574\u9ed8\u8ba4\u914d\u7f6e&#xff0c;\u5b98\u65b9\u6587\u6863&#xff08;kafka.apache.org\/documentation\/#configuration&#xff09;\u63d0\u4f9b\u4e86\u5b8c\u6574\u914d\u7f6e\u9879\u8bf4\u660e&#xff1a;<br \/>\n1 ) \u670d\u52a1\u7aef\u5fc5\u8981\u53c2\u6570<br \/>\nbroker.id\u5fc5\u987b\u552f\u4e00&#xff08;\u96c6\u7fa4\u73af\u5883&#xff09;<br \/>\nbroker.id0<br \/>\nlistenersPLAINTEXT:\/\/:9092<br \/>\nlog.dirs\/kafka\/logs  # \u7edd\u5bf9\u907f\u514d\u4f7f\u7528<\/p>\n","protected":false},"author":2,"featured_media":85194,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[1114,43],"topic":[],"class_list":["post-85195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-kafka","tag-43"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/85195.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6838\u5fc3\u914d\u7f6e\u53c2\u6570\u5206\u7c7b\u89e3\u6790Kafka\u751f\u4ea7\u73af\u5883\u90e8\u7f72\u5fc5\u987b\u8c03\u6574\u9ed8\u8ba4\u914d\u7f6e&#xff0c;\u5b98\u65b9\u6587\u6863&#xff08;kafka.apache.org\/documentation\/#configuration&#xff09;\u63d0\u4f9b\u4e86\u5b8c\u6574\u914d\u7f6e\u9879\u8bf4\u660e&#xff1a; 1 ) \u670d\u52a1\u7aef\u5fc5\u8981\u53c2\u6570 broker.id\u5fc5\u987b\u552f\u4e00&#xff08;\u96c6\u7fa4\u73af\u5883&#xff09;  broker.id0  listenersPLAINTEXT:\/\/:9092  log.dirs\/kafka\/logs # \u7edd\u5bf9\u907f\u514d\u4f7f\u7528\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/85195.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-26T21:00:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260726210053-6a6675857d5ba.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/85195.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/85195.html\",\"name\":\"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-07-26T21:00:54+00:00\",\"dateModified\":\"2026-07-26T21:00:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/85195.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/85195.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/85195.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/85195.html","og_locale":"zh_CN","og_type":"article","og_title":"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6838\u5fc3\u914d\u7f6e\u53c2\u6570\u5206\u7c7b\u89e3\u6790Kafka\u751f\u4ea7\u73af\u5883\u90e8\u7f72\u5fc5\u987b\u8c03\u6574\u9ed8\u8ba4\u914d\u7f6e&#xff0c;\u5b98\u65b9\u6587\u6863&#xff08;kafka.apache.org\/documentation\/#configuration&#xff09;\u63d0\u4f9b\u4e86\u5b8c\u6574\u914d\u7f6e\u9879\u8bf4\u660e&#xff1a; 1 ) \u670d\u52a1\u7aef\u5fc5\u8981\u53c2\u6570 broker.id\u5fc5\u987b\u552f\u4e00&#xff08;\u96c6\u7fa4\u73af\u5883&#xff09;  broker.id0  listenersPLAINTEXT:\/\/:9092  log.dirs\/kafka\/logs # \u7edd\u5bf9\u907f\u514d\u4f7f\u7528","og_url":"https:\/\/www.wsisp.com\/helps\/85195.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-07-26T21:00:54+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/07\/20260726210053-6a6675857d5ba.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/85195.html","url":"https:\/\/www.wsisp.com\/helps\/85195.html","name":"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-07-26T21:00:54+00:00","dateModified":"2026-07-26T21:00:54+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/85195.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/85195.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/85195.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"Kafka: \u751f\u4ea7\u73af\u5883\u914d\u7f6e\u4f18\u5316\u4e0e\u670d\u52a1\u5668\u6700\u4f73\u5b9e\u8df5\u6307\u5357"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/85195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=85195"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/85195\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/85194"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=85195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=85195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=85195"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=85195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}