{"id":36494,"date":"2023-12-29T23:17:47","date_gmt":"2023-01-19T20:45:42","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/"},"modified":"2024-05-04T15:56:32","modified_gmt":"2024-05-04T07:56:32","slug":"apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/","title":{"rendered":"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4"},"content":{"rendered":"<p>\u6211\u6b63\u5728\u5b66\u4e60Apache Kafka\uff0c\u6211\u4f1a\u603b\u7ed3\u4e0b\u6765\u3002<\/p>\n<h2>\u73af\u5883<\/h2>\n<p>\u52a8\u7269\u56ed\u7ba1\u7406\u54583.4.14\uff08confluentinc \/ cp-zookeeper:5.3.2\uff09<br \/>\nKafka 2.3.1\uff08confluentinc \/ cp-kafka:5.3.2\uff09<\/p>\n<p>\u6211\u6b63\u5728\u4f7f\u7528Docker\u6620\u50cf\u3002<\/p>\n<h2>\u5bf9\u4e8e Kafka \u7684\u672f\u8bed\u7406\u89e3<\/h2>\n<p>\u5728\u8fd9\u91cc\uff0c\u6211\u4f1a\u7b80\u7565\u5730\u603b\u7ed3\u6bcf\u4e2a\u672f\u8bed\u3002<\/p>\n<p>\u6211\u672c\u60f3\u5236\u4f5c\u4e00\u5f20\u56fe\u6765\u603b\u7ed3\uff0c\u4f46\u662f\u4f0a\u85e4\u96c5\u535a\u7684\u6587\u7ae0\u975e\u5e38\u6613\u61c2\uff0c\u8be6\u7ec6\u4fe1\u606f\u8bf7\u53c2\u8003\u8fd9\u91cc\u3002<br \/>\nApache Kafka\u7684\u6982\u8ff0\u4e0e\u67b6\u6784<\/p>\n<div>\n<div class=\"post-table\">\u540d\u524d\u5f79\u5272Kafka ClusterKafka\u304c\u5b9f\u884c\u3055\u308c\u3066\u3044\u308b\u30b5\u30fc\u30d0(Broker)\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u305f\u3082\u306eBrokerKafka\u306e\u5358\u4e00\u30b5\u30fc\u30d0ZookeeperKafka\u3092\u7ba1\u7406\u3059\u308b\u30b5\u30fc\u30d0ProducerKafka\u3078\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3ConsumerKafka\u304b\u3089\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d6\u5f97\u3059\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3Topic\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6574\u7406\u3059\u308b\u305f\u3081\u306e\u30ab\u30c6\u30b4\u30ea\u30fcPartitionTopic\u5185\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u30d1\u30fc\u30c6\u30a3\u30b7\u30e7\u30f3\u3068\u3044\u3046\u5358\u4f4d\u3067\u5206\u6563\u3055\u305b\u3066\u3044\u307e\u3059Replica\u5404Partition\u306f\u8907\u6570\u306eBroker\u306b\u8907\u88fd(Replica)\u3055\u308c\u3066\u3044\u307e\u3059Leader\u8907\u88fd\u3055\u308c\u3066\u3044\u308bReplica\u306e\u3046\u3061\u552f\u4e00\u8aad\u307f\u66f8\u304d\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u308bReplicaConsumer Group\u8907\u6570\u306eConsumer\u3092\u540c\u4e00\u30b0\u30eb\u30fc\u30d7\u3068\u3057\u3066\u6271\u3046\u305f\u3081\u306e\u3082\u306e\u3002\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3067\u5206\u6563\u3057\u305fConsumer\u9593\u3067\u540c\u4e00\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u91cd\u8907\u305b\u305a\u306b\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059OffsetPartition\u5358\u4f4d\u3067\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u3069\u3053\u307e\u3067\u8aad\u3093\u3060\u304b\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u3082\u306e<\/div>\n<\/div>\n<h2>\u64cd\u4f5c\u4e3b\u9898<\/h2>\n<p>\u4f7f\u7528kafka-topics\u547d\u4ee4\u6765\u64cd\u4f5c\u4e3b\u9898\u3002<\/p>\n<h3>\u5171\u901a\u9009\u9879<\/h3>\n<div>\n<div class=\"post-table\">\u30aa\u30d7\u30b7\u30e7\u30f3\u540d\u5f79\u5272zookeeperZookeeper\u3092\u6307\u5b9a\u3057\u307e\u3059topic\u64cd\u4f5c\u5bfe\u8c61\u306e\u30c8\u30d4\u30c3\u30af\u3092\u6307\u5b9a\u3057\u307e\u3059partitions\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5206\u5272\u3059\u308bPartition\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059replication-factorPartition\u3092\u3044\u304f\u3064\u306eBroker\u306b\u8907\u88fd\u3059\u308b\u304b\u6307\u5b9a\u3057\u307e\u3059<\/div>\n<\/div>\n<h3>\u64b0\u5199\u4e3b\u9898<\/h3>\n<p>kafka-topics &#8211;create\u662f\u7528\u4e8e\u521b\u5efa\u4e3b\u9898\u7684\u547d\u4ee4\u3002<\/p>\n<h4>\u521b\u5efa\u8bdd\u9898\u793a\u4f8b<\/h4>\n<p>\u5982\u679c\u8981\u4ee5test-topic\u4f5c\u4e3a\u4e3b\u9898\u540d\u79f0\u8fdb\u884c\u4fdd\u5b58\uff0c\u5206\u533a\u6570\u4e3a3\uff0c\u590d\u5236\u6570\u4e3a3.<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kafka-topics <span class=\"nt\">--create<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181 <span class=\"nt\">--topic<\/span> test-topic <span class=\"nt\">--partitions<\/span> 3 <span class=\"nt\">--replication-factor<\/span> 3\r\n<span class=\"go\">Created topic test-topic.\r\n<\/span><\/code><\/pre>\n<h3>\u786e\u8ba4\u4e3b\u9898<\/h3>\n<p>\u4f7f\u7528kafka-topics &#8211;describe\u547d\u4ee4\u6765\u67e5\u770b\u8bdd\u9898\u3002<\/p>\n<h4>\u8bf7\u63d0\u4f9b\u4e00\u4e2a\u6839\u636e\u4e3b\u9898\u5185\u5bb9\u786e\u8ba4\u7684\u6837\u672c\u3002<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span>  kafka-topics <span class=\"nt\">--describe<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181 <span class=\"nt\">--topic<\/span> test-topic\r\n<span class=\"go\">Topic:test-topic    PartitionCount:3    ReplicationFactor:3 Configs:\r\n    Topic: test-topic   Partition: 0    Leader: 3   Replicas: 3,2,1 Isr: 3,2,1\r\n    Topic: test-topic   Partition: 1    Leader: 1   Replicas: 1,3,2 Isr: 1,3,2\r\n    Topic: test-topic   Partition: 2    Leader: 2   Replicas: 2,1,3 Isr: 2,1,3\r\n<\/span><\/code><\/pre>\n<p>\u8fd9\u4e9b\u8f93\u51fa\u7ed3\u679c\u5206\u522b\u5982\u4e0b\u3002<\/p>\n<div>\n<div class=\"post-table\">\u30aa\u30d7\u30b7\u30e7\u30f3\u540d\u5f79\u5272PartitionCount\u5bfe\u8c61\u306e\u30c8\u30d4\u30c3\u30af\u304c\u3044\u304f\u3064\u306ePartition\u306b\u5206\u5272\u3055\u308c\u308b\u304b\u304c\u8a18\u8f09\u3055\u308c\u307e\u3059ReplicationFactor\u5bfe\u8c61\u306e\u30c8\u30d4\u30c3\u30af\u304c\u3044\u304f\u3064Replica\u3055\u308c\u308b\u304b\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u3053\u306b\u306fLeader\u3082\u542b\u307e\u308c\u307e\u3059PartitionPartition\u756a\u53f7\u304c\u8a18\u8f09\u3055\u308c\u307e\u3059Leader\u3069\u3053\u306eBroker\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u304b\u304c\u8a18\u8f09\u3055\u308c\u307e\u3059Replicas\u3069\u3053\u306eBroker\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u304b\u304c\u8a18\u8f09\u3055\u308c\u307e\u3059\u3002\u4eca\u56de\u306fReplicationFactor\u304c3\u3064\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u30013\u3064\u306eBroker\u304c\u8a18\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002IsrIn Sync Replica(Isr)\u306e\u7565\u3067\u3001\u5bfe\u8c61Partition\u304c\u5168\u3066\u540c\u671f\u3055\u308c\u3066\u3044\u308b\u72b6\u614b\u306eBroker\u304c\u8a18\u8f09\u3055\u308c\u307e\u3059<\/div>\n<\/div>\n<h4>\u7ecf\u7eaa\u4eba\u7cfb\u7edf\u6545\u969c\u7684\u60c5\u51b5<\/h4>\n<p>\u5047\u8bbeKafka\u96c6\u7fa4\u4e2d\u67093\u4e2aBroker\uff0c\u5728\u5176\u4e2d\u4e00\u4e2aBroker\u5b95\u673a\u7684\u60c5\u51b5\u4e0b\uff0c\u6211\u4f1a\u63d0\u4f9b\u8be5\u72b6\u6001\u7684\u793a\u4f8b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"go\">kafka-topics --describe --zookeeper zookeeper:2181 --topic test-topic\r\nTopic:test-topic    PartitionCount:3    ReplicationFactor:3 Configs:\r\n    Topic: test-topic   Partition: 0    Leader: 3   Replicas: 3,2,1 Isr: 3,1\r\n    Topic: test-topic   Partition: 1    Leader: 1   Replicas: 1,3,2 Isr: 1,3\r\n    Topic: test-topic   Partition: 2    Leader: 1   Replicas: 2,1,3 Isr: 1,3\r\n<\/span><\/code><\/pre>\n<p>\u6700\u65e9\uff0c\u62e5\u6709Partition 1\u7684Leader Broker\u4f7f\u7528\u4e86Broker 2\uff0c\u800c\u73b0\u5728\u5df2\u7ecf\u5207\u6362\u56deBroker 1\u3002<br \/>\n\u6b64\u5916\uff0cIsr\u72b6\u6001\u4ec5\u5217\u51fa\u4e86Broker 1\u548c3\uff0c\u53ef\u4ee5\u770b\u51faBroker 2\u5e76\u4e0d\u5c5e\u4e8eIsr\u3002<\/p>\n<h3>\u5217\u51fa\u4e3b\u9898\u7684\u5217\u8868<\/h3>\n<p>\u4f7f\u7528kafka-topics &#8211;list\u547d\u4ee4\u6765\u68c0\u67e5\u4e3b\u9898\u3002<\/p>\n<h4>\u786e\u8ba4\u4e3b\u9898\u5185\u5bb9\u7684\u793a\u4f8b<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kafka-topics <span class=\"nt\">--list<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181\r\n<span class=\"go\">__confluent.support.metrics\r\n__consumer_offsets\r\ntest-topic\r\ntest-topic1\r\n<\/span><\/code><\/pre>\n<h3>\u5220\u9664\u4e3b\u9898<\/h3>\n<p>\u4f7f\u7528 Kafka-topics &#8211;delete \u547d\u4ee4\u6765\u5220\u9664\u4e3b\u9898\u3002<\/p>\n<h4>\u5220\u9664\u8bdd\u9898\u793a\u4f8b<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kafka-topics <span class=\"nt\">--delete<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181 <span class=\"nt\">--topic<\/span> test-topic\r\n<span class=\"go\">Topic test-topic is marked for deletion.\r\nNote: This will have no impact if delete.topic.enable is not set to true.\r\n\r\n\r\n<\/span><span class=\"gp\">$<\/span> kafka-topics <span class=\"nt\">--describe<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181 <span class=\"nt\">--topic<\/span> test-topic\r\n<span class=\"go\">Error while executing topic command : Topic 'test-topic' does not exist as expected\r\n[2020-02-09 13:03:11,678] ERROR java.lang.IllegalArgumentException: Topic 'test-topic' does not exist as expected\r\n<\/span><span class=\"gp\">    at kafka.admin.TopicCommand$<\/span>.kafka<span class=\"nv\">$admin$TopicCommand$$<\/span>ensureTopicExists<span class=\"o\">(<\/span>TopicCommand.scala:437<span class=\"o\">)<\/span>\r\n<span class=\"gp\">    at kafka.admin.TopicCommand$<\/span>ZookeeperTopicService.describeTopic<span class=\"o\">(<\/span>TopicCommand.scala:349<span class=\"o\">)<\/span>\r\n<span class=\"gp\">    at kafka.admin.TopicCommand$<\/span>.main<span class=\"o\">(<\/span>TopicCommand.scala:66<span class=\"o\">)<\/span>\r\n<span class=\"go\">    at kafka.admin.TopicCommand.main(TopicCommand.scala)\r\n<\/span><span class=\"gp\"> (kafka.admin.TopicCommand$<\/span><span class=\"o\">)<\/span>\r\n<\/code><\/pre>\n<h3>\u4e3b\u9898\u7684\u8bbe\u5b9a\u66f4\u6539<\/h3>\n<p>\u5728\u4e2d\u56fd\u672c\u5730\u8bed\u8a00\u4e2d\uff0c\u4ec5\u9700\u8981\u4e00\u4e2a\u9009\u9879\u6765\u6539\u5199\u5982\u4e0b\u5185\u5bb9\uff1a<br \/>\n\u4f7f\u7528kafka-topics &#8211;alter\u547d\u4ee4\u6765\u66f4\u6539\u4e3b\u9898\u8bbe\u7f6e\u3002<\/p>\n<h4>\u4e3b\u9898\u66f4\u6539\u7684\u6837\u672c<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kafka-topics <span class=\"nt\">--alter<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181 <span class=\"nt\">--topic<\/span> test-topic <span class=\"nt\">--partitions<\/span> 6 \r\n<span class=\"go\">WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected\r\nAdding partitions succeeded!\r\n\r\n\r\n<\/span><span class=\"gp\">$<\/span> kafka-topics <span class=\"nt\">--describe<\/span> <span class=\"nt\">--zookeeper<\/span> zookeeper:2181 <span class=\"nt\">--topic<\/span> test-topic\r\n<span class=\"go\">Topic:test-topic    PartitionCount:6    ReplicationFactor:3 Configs:\r\n    Topic: test-topic   Partition: 0    Leader: 1   Replicas: 1,3,2 Isr: 1,3,2\r\n    Topic: test-topic   Partition: 1    Leader: 2   Replicas: 2,1,3 Isr: 2,1,3\r\n    Topic: test-topic   Partition: 2    Leader: 3   Replicas: 3,2,1 Isr: 3,2,1\r\n    Topic: test-topic   Partition: 3    Leader: 1   Replicas: 1,3,2 Isr: 1,3,2\r\n    Topic: test-topic   Partition: 4    Leader: 2   Replicas: 2,1,3 Isr: 2,1,3\r\n    Topic: test-topic   Partition: 5    Leader: 3   Replicas: 3,2,1 Isr: 3,2,1\r\n<\/span><\/code><\/pre>\n<p>\u987a\u4fbf\u63d0\u4e00\u4e0b\uff0c\u5728\u8b66\u62a5\u9009\u9879\u4e2d\u65e0\u6cd5\u6307\u5b9a\u526f\u672c\u56e0\u5b50\u3002<br \/>\n\u6b64\u5916\uff0c\u5e76\u4e0d\u80fd\u51cf\u5c11\u5206\u533a\u7684\u6570\u91cf\u3002<\/p>\n<h3>\u5236\u7247\u4eba\u7684\u64cd\u4f5c<\/h3>\n<p>\u53ef\u4ee5\u4f7f\u7528kafka-console-producer\u4f5c\u4e3aProducer\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<h4>\u53d1\u9001\u8baf\u606f<\/h4>\n<pre class=\"post-pre\"><code><span class=\"go\">kafka-console-producer --topic=test-topic --broker-list=kafka1:29092,kafka2:29093,kafka3:29094\r\n<\/span><span class=\"gp\">&gt;<\/span>test1\r\n<span class=\"gp\">&gt;<\/span>test2\r\n<span class=\"gp\">&gt;<\/span>\r\n<\/code><\/pre>\n<p>\u5f53\u4f60\u6267\u884ckafka-console-producer\uff0c\u4f1a\u663e\u793a\u8f93\u5165\u63d0\u793a\u7b26&gt;\uff0c\u4f60\u53ef\u4ee5\u8f93\u5165\u8981\u53d1\u9001\u7684\u5b57\u7b26\u5e76\u6267\u884c\uff0c\u5373\u53ef\u53d1\u9001\u3002<\/p>\n<p>\u5728broker\u5217\u8868\u4e2d\uff0c\u4ee5\u9017\u53f7\u5206\u9694\u6307\u5b9a\u5b58\u5728\u4e8eKafka\u96c6\u7fa4\u4e2d\u7684broker\u3002\u672c\u4f8b\u4e2d\uff0c\u6709\u4e09\u53f0broker\uff0c\u56e0\u6b64\u6307\u5b9a\u4e86\u4e09\u4e2a\u3002<\/p>\n<h3>\u6d88\u8d39\u8005\u64cd\u4f5c<\/h3>\n<p>\u5728Kafka\u63a7\u5236\u53f0\u6d88\u8d39\u8005\u4e2d\u53ef\u4ee5\u4f5c\u4e3a\u6d88\u8d39\u8005\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n<h4>\u6536\u5230\u6d88\u606f<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kafka-console-consumer <span class=\"nt\">--bootstrap-server<\/span><span class=\"o\">=<\/span>kafka1:29092 <span class=\"nt\">--topic<\/span><span class=\"o\">=<\/span>test-topic\r\n<span class=\"go\">test1\r\ntest2\r\n<\/span><\/code><\/pre>\n<h4>\u5404\u79cd\u9009\u62e9<\/h4>\n<div>\n<div class=\"post-table\">\u30aa\u30d7\u30b7\u30e7\u30f3\u540d\u5f79\u5272\u4f7f\u3044\u65b9\u30b5\u30f3\u30d7\u30ebfrom-beginningoffset\u306e\u6700\u521d\u304b\u3089\u8aad\u307f\u8fbc\u307f\u307e\u3059kafka-console-consumer &#8211;bootstrap-server=kafka1:29092 &#8211;topic=test-topic &#8211;from-beginninggroupConsumer-group\u3092\u6307\u5b9a\u3057\u307e\u3059kafka-console-consumer &#8211;bootstrap-server=kafka1:29092 &#8211;topic=test-topic &#8211;group consumer-group<\/div>\n<\/div>\n<h3>\u6d88\u8d39\u8005\u7ec4\u64cd\u4f5c<\/h3>\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528kafka-consumer-groups\u6765\u64cd\u4f5cConsumerGroup\u3002<\/p>\n<h4>\u5c55\u793a\u66f4\u4e3a\u8be6\u7ec6\u7684\u4fe1\u606f<\/h4>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> kafka-consumer-groups <span class=\"nt\">--describe<\/span> <span class=\"nt\">--bootstrap-server<\/span> kafka1:29092 <span class=\"nt\">--group<\/span> consumer-group\r\n<span class=\"go\">Consumer group 'consumer-group' has no active members.\r\n\r\nGROUP           TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID\r\nconsumer-group  test-topic      4          12              12              0               -               -               -\r\nconsumer-group  test-topic      5          10              10              0               -               -               -\r\nconsumer-group  test-topic      2          7               7               0               -               -               -\r\nconsumer-group  test-topic      3          9               9               0               -               -               -\r\nconsumer-group  test-topic      1          10              10              0               -               -               -\r\nconsumer-group  test-topic      0          20              20              0               -               -               -\r\n<\/span><\/code><\/pre>\n<h4>\u91cd\u7f6eConsumerGroup\u7684offset<\/h4>\n<p>\u5229\u7528reset-offsets\u91cd\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"go\">kafka-consumer-groups --bootstrap-server kafka3:29094 --group consumer-group --reset-offsets --to-earliest --all-topics --execute\r\n\r\nGROUP                          TOPIC                          PARTITION  NEW-OFFSET     \r\nconsumer-group                 test-topic                     4          0              \r\nconsumer-group                 test-topic                     5          0              \r\nconsumer-group                 test-topic                     2          0              \r\nconsumer-group                 test-topic                     3          0              \r\nconsumer-group                 test-topic                     1          0              \r\nconsumer-group                 test-topic                     0          0  \r\n<\/span><\/code><\/pre>\n<h2>\u8bf7\u53c2\u8003<\/h2>\n<h3>\u8bf7\u67e5\u9605\u53c2\u8003\u6587\u732e\u3002<\/h3>\n<p>Apache Kafka\u6587\u6863<br \/>\nApache Kafka\u7684\u6982\u8ff0\u548c\u67b6\u6784<\/p>\n<h3>\u4f7f\u7528docker-compose<\/h3>\n<p>\u8fd9\u6b21\u4f7f\u7528\u7684\u662fdocker-compose.yml\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">3\"<\/span>\r\n\r\n<span class=\"na\">services<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">zookeeper<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">container_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafkajs-typescript-test-zookeeper<\/span>\r\n    <span class=\"na\">hostname<\/span><span class=\"pi\">:<\/span> <span class=\"s\">zookeeper<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/cp-zookeeper:5.3.2<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">2181:2181\"<\/span>\r\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">ZOOKEEPER_CLIENT_PORT<\/span><span class=\"pi\">:<\/span> <span class=\"m\">2181<\/span>\r\n      <span class=\"na\">ZOOKEEPER_TICK_TIME<\/span><span class=\"pi\">:<\/span> <span class=\"m\">2000<\/span>\r\n  <span class=\"na\">kafka1<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">container_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafkajs-typescript-test-kafka1<\/span>\r\n    <span class=\"na\">hostname<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafka1<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/cp-kafka:5.3.2<\/span>\r\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">zookeeper<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">29092:29092\"<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">9092:9092\"<\/span>\r\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">KAFKA_BROKER_ID<\/span><span class=\"pi\">:<\/span> <span class=\"m\">1<\/span>\r\n      <span class=\"na\">KAFKA_ZOOKEEPER_CONNECT<\/span><span class=\"pi\">:<\/span> <span class=\"s\">zookeeper:2181<\/span>\r\n      <span class=\"na\">KAFKA_LISTENER_SECURITY_PROTOCOL_MAP<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT<\/span>\r\n      <span class=\"na\">KAFKA_ADVERTISED_LISTENERS<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:\/\/kafka1:29092,PLAINTEXT_HOST:\/\/localhost:9092<\/span>\r\n      <span class=\"na\">KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0<\/span>\r\n  <span class=\"na\">kafka2<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">container_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafkajs-typescript-test-kafka2<\/span>\r\n    <span class=\"na\">hostname<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafka2<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/cp-kafka:5.3.2<\/span>\r\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">zookeeper<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">29093:29093\"<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">9093:9093\"<\/span>\r\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">KAFKA_BROKER_ID<\/span><span class=\"pi\">:<\/span> <span class=\"m\">2<\/span>\r\n      <span class=\"na\">KAFKA_ZOOKEEPER_CONNECT<\/span><span class=\"pi\">:<\/span> <span class=\"s\">zookeeper:2181<\/span>\r\n      <span class=\"na\">KAFKA_LISTENER_SECURITY_PROTOCOL_MAP<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT<\/span>\r\n      <span class=\"na\">KAFKA_ADVERTISED_LISTENERS<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:\/\/kafka2:29093,PLAINTEXT_HOST:\/\/localhost:9093<\/span>\r\n      <span class=\"na\">KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0<\/span>\r\n  <span class=\"na\">kafka3<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">container_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafkajs-typescript-test-kafka3<\/span>\r\n    <span class=\"na\">hostname<\/span><span class=\"pi\">:<\/span> <span class=\"s\">kafka3<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">confluentinc\/cp-kafka:5.3.2<\/span>\r\n    <span class=\"na\">depends_on<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s\">zookeeper<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">29094:29094\"<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">9094:9094\"<\/span>\r\n    <span class=\"na\">environment<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">KAFKA_BROKER_ID<\/span><span class=\"pi\">:<\/span> <span class=\"m\">3<\/span>\r\n      <span class=\"na\">KAFKA_ZOOKEEPER_CONNECT<\/span><span class=\"pi\">:<\/span> <span class=\"s\">zookeeper:2181<\/span>\r\n      <span class=\"na\">KAFKA_LISTENER_SECURITY_PROTOCOL_MAP<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT<\/span>\r\n      <span class=\"na\">KAFKA_ADVERTISED_LISTENERS<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PLAINTEXT:\/\/kafka3:29094,PLAINTEXT_HOST:\/\/localhost:9094<\/span>\r\n      <span class=\"na\">KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS<\/span><span class=\"pi\">:<\/span> <span class=\"m\">0<\/span>\r\n<\/code><\/pre>\n<p>\u53c2\u8003\u4fe1\u606f\uff0c\u5728kafka\u96c6\u7fa4\u5c11\u4e8e3\u4e2a\u7684\u60c5\u51b5\u4e0b\uff0c\u5c06\u4f1a\u8f93\u51fa\u7c7b\u4f3c\u4ee5\u4e0b\u7684\u9519\u8bef\u63d0\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"go\">[2020-03-21 07:43:52,872] ERROR [KafkaApi-1] Number of alive brokers '1' does not meet the required replication factor '3' for the offsets topic (configured via 'offsets.topic.replication.factor'). This error can be ignored if the cluster is starting up and not all brokers are up yet. (kafka.server.KafkaApis)\r\n<\/span><\/code><\/pre>\n<p>\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u9700\u8981\u8bbe\u7f6eKAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR\u4e3a1\uff08\u6570\u5b57\u53d6\u51b3\u4e8e\u96c6\u7fa4\u6570\uff09\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u6b63\u5728\u5b66\u4e60Apache Kafka\uff0c\u6211\u4f1a\u603b\u7ed3\u4e0b\u6765\u3002 \u73af\u5883 \u52a8\u7269\u56ed\u7ba1\u7406\u54583.4.14\uff08confluentinc  [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36494","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4 - Blog - Silicon Cloud<\/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.silicloud.com\/zh\/blog\/apache-kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4\" \/>\n<meta property=\"og:description\" content=\"\u6211\u6b63\u5728\u5b66\u4e60Apache Kafka\uff0c\u6211\u4f1a\u603b\u7ed3\u4e0b\u6765\u3002 \u73af\u5883 \u52a8\u7269\u56ed\u7ba1\u7406\u54583.4.14\uff08confluentinc [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-19T20:45:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T07:56:32+00:00\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\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.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/\",\"name\":\"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-19T20:45:42+00:00\",\"dateModified\":\"2024-05-04T07:56:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4 - Blog - Silicon Cloud","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.silicloud.com\/zh\/blog\/apache-kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4\/","og_locale":"zh_CN","og_type":"article","og_title":"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4","og_description":"\u6211\u6b63\u5728\u5b66\u4e60Apache Kafka\uff0c\u6211\u4f1a\u603b\u7ed3\u4e0b\u6765\u3002 \u73af\u5883 \u52a8\u7269\u56ed\u7ba1\u7406\u54583.4.14\uff08confluentinc [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-19T20:45:42+00:00","article_modified_time":"2024-05-04T07:56:32+00:00","author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/","name":"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-19T20:45:42+00:00","dateModified":"2024-05-04T07:56:32+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache Kafka\u7684\u672f\u8bed\u548c\u547d\u4ee4"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/apache-kafka%e7%9a%84%e6%9c%af%e8%af%ad%e5%92%8c%e5%91%bd%e4%bb%a4\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36494"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36494\/revisions"}],"predecessor-version":[{"id":99273,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36494\/revisions\/99273"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}