±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬KafkaÊÇ×î³õÓÉLinkedin¹«Ë¾¿ª·¢£¬ÊÇÒ»¸ö·Ö²¼Ê½¡¢Ö§³Ö·ÖÇøµÄ£¨partition£©¡¢¶à¸±±¾µÄ£¨replica£©£¬»ùÓÚzookeeperе÷µÄ·Ö²¼Ê½ÏûϢϵͳ.
|
|
Ò»¡¢ ǰÑÔ
ʲôÊÇÏûϢϵͳ£¿
ÔçÆÚÁ½¸öÓ¦ÓóÌÐò¼ä½øÐÐÏûÏ¢´«µÝÐèÒª±£Ö¤Á½¸öÓ¦ÓóÌÐòͬʱÔÚÏߣ¬²¢ÇÒñîºÏ¶ÈºÜ¸ß¡£ÎªÁ˽â¾öÓ¦ÓóÌÐò²»ÔÚÏßµÄÇé¿öÏÂÒµÎñÕý³£ÔËת£¬¾Í²úÉúÁËÏûϢϵͳ£¬Ïû·Ñ·¢ËÍÕߣ¨Éú²úÕߣ©½«ÏûÏ¢·¢ËÍÖÁÏûϢϵͳ£¬ÏûÏ¢½ÓÊÜÕߣ¨Ïû·ÑÕߣ©´ÓÏûϢϵͳÖлñÈ¡ÏûÏ¢¡£
Ìáµ½ÏûϢϵͳ£¬²»µÃ²»ËµÒ»ÏÂJMS¼´JavaÏûÏ¢·þÎñ£¨Java Message Service£©Ó¦ÓóÌÐò½Ó¿Ú¡£ÊÇÒ»¸öJavaƽ̨ÖйØÓÚÃæÏòÏûÏ¢Öмä¼þµÄAPI¡£ÓÃÓÚÔÚÁ½¸öÓ¦ÓóÌÐòÖ®¼ä»ò·Ö²¼Ê½ÏµÍ³Öз¢ËÍÏûÏ¢£¬½øÐÐÒ첽ͨÐÅ¡£JavaÏûÏ¢·þÎñÊÇÒ»¸öÓë¾ßÌåÆ½Ì¨Î޹صÄAPI¡£
ͨ³£ÏûÏ¢´«µÝÓÐÁ½ÖÖÀàÐ͵ÄÏûϢģʽ¿ÉÓÃÒ»ÖÖÊǵã¶Ôµãqueue¶ÓÁÐģʽ(p2p)£¬ÁíÒ»ÖÖÊÇtopic·¢²¼-¶©ÔÄģʽ(public-subscribe)¡£
µã¶ÔµãÏûϢϵͳ
ÔÚµã¶ÔµãϵͳÖУ¬ÏûÏ¢±»±£ÁôÔÚ¶ÓÁÐÖС£ Ò»¸ö»ò¶à¸öÏû·ÑÕß¿ÉÒÔÏûºÄ¶ÓÁÐÖеÄÏûÏ¢£¬µ«ÊÇÌØ¶¨ÏûÏ¢Ö»ÄÜÓÉ×î¶àÒ»¸öÏû·ÑÕßÏû·Ñ¡£Ò»µ©Ïû·ÑÕß¶ÁÈ¡¶ÓÁÐÖеÄÏûÏ¢£¬Ëü¾Í´Ó¸Ã¶ÓÁÐÖÐÏûʧ¡£¸ÃϵͳµÄµäÐÍʾÀýÊǶ©µ¥´¦Àíϵͳ£¬ÆäÖÐÿ¸ö¶©µ¥½«ÓÉÒ»¸ö¶©µ¥´¦ÀíÆ÷´¦Àí£¬µ«¶à¸ö¶©µ¥´¦ÀíÆ÷Ò²¿ÉÒÔͬʱ¹¤×÷¡£ÏÂͼÃèÊöÁ˽ṹ¡£

·¢²¼ - ¶©ÔÄÏûϢϵͳ
ÔÚ·¢²¼-¶©ÔÄϵͳÖУ¬ÏûÏ¢±»±£ÁôÔÚÖ÷ÌâÖС£Óëµã¶Ôµãϵͳ²»Í¬£¬Ïû·ÑÕß¿ÉÒÔ¶©ÔÄÒ»¸ö»ò¶à¸öÖ÷ÌⲢʹÓøÃÖ÷ÌâÖеÄËùÓÐÏûÏ¢¡£
ÔÚ·¢²¼ - ¶©ÔÄϵͳÖУ¬ÏûÏ¢Éú²úÕß³ÆÎª·¢²¼Õߣ¬ÏûϢʹÓÃÕß³ÆÎª¶©ÔÄÕß¡£Ò»¸öÏÖʵÉú»îµÄÀý×ÓÊÇDishµçÊÓ£¬Ëü·¢²¼²»Í¬µÄÇþµÀ£¬ÈçÔ˶¯£¬µçÓ°£¬ÒôÀֵȣ¬ÈκÎÈ˶¼¿ÉÒÔ¶©ÔÄ×Ô¼ºµÄƵµÀ¼¯£¬²¢»ñµÃËûÃǶ©ÔĵįµµÀʱ¿ÉÓá£

MQÏûÏ¢¶ÓÁжԱÈ
ÏÂÃæÕë¶ÔRabbitMQÓëkafka½øÐжԱÈ
Ó¦Óó¡¾°ÉÏ
RabbitMQ£º×ñÑAMQP(Advanced Message
Queuing Protocol)ÐÒ飬ÓÉÄÚÔڸ߲¢·¢µÄerlanngÓïÑÔ¿ª·¢£¬ÓÃÔÚʵʱµÄ¶Ô¿É¿¿ÐÔÒªÇó±È½Ï¸ßµÄÏûÏ¢´«µÝÉÏ¡£
kafka£ºÊÇLinkedinÓÚ2010Äê12Ô·ݿªÔ´µÄÏûÏ¢·¢²¼¶©ÔÄϵͳ,ËüÖ÷ÒªÓÃÓÚ´¦Àí»îÔ¾µÄÁ÷ʽÊý¾Ý,´óÊý¾ÝÁ¿µÄÊý¾Ý´¦ÀíÉÏ¡£
ÔÚÍÌÍÂÁ¿ÉÏ
RabbitMQÔÚÍÌÍÂÁ¿·½ÃæÉÔÑ·ÓÚkafka£¬ËûÃǵijö·¢µã²»Ò»Ñù£¬rabbitMQÖ§³Ö¶ÔÏûÏ¢µÄ¿É¿¿µÄ´«µÝ£¬Ö§³ÖÊÂÎñ£¬²»Ö§³ÖÅúÁ¿µÄ²Ù×÷£»»ùÓÚ´æ´¢µÄ¿É¿¿ÐÔµÄÒªÇó´æ´¢¿ÉÒÔ²ÉÓÃÄÚ´æ»òÕßÓ²ÅÌ¡£
kafka¾ßÓиߵÄÍÌÍÂÁ¿£¬ÄÚ²¿²ÉÓÃÏûÏ¢µÄÅúÁ¿´¦Àí£¬Êý¾ÝµÄ´æ´¢ºÍ»ñÈ¡ÊDZ¾µØ´ÅÅÌ˳ÐòÅúÁ¿²Ù×÷£¬ÏûÏ¢´¦ÀíµÄЧÂʺܸߡ£
ÔÚ¼¯Èº¸ºÔؾùºâÉÏ
RabbitMQµÄ¸ºÔؾùºâÐèÒªµ¥¶ÀµÄloadbalancer½øÐÐÖ§³Ö¡£
kafka²ÉÓÃzookeeper¶Ô¼¯ÈºÖеÄbroker¡¢consumer½øÐÐе÷¹ÜÀí¡£
ʲôÊÇKafka£¿
Apache KafkaÊÇÒ»¸ö·Ö²¼Ê½·¢²¼-¶©ÔÄÏûϢϵͳºÍÒ»¸öÇ¿´óµÄ¶ÓÁУ¬Êµ¼ÊÉϾÍÊÇJMSµÄÒ»¸ö±äÐΣ¬¿ÉÒÔ´¦Àí´óÁ¿µÄÊý¾Ý£¬²¢Ê¹ÄúÄܹ»½«ÏûÏ¢´ÓÒ»¸ö¶Ëµã´«µÝµ½ÁíÒ»¸ö¶Ëµã¡£KafkaÊʺÏÀëÏߺÍÔÚÏßÏûÏ¢Ïû·Ñ¡£KafkaÏûÏ¢±£ÁôÔÚ´ÅÅÌÉÏ£¬²¢ÔÚȺ¼¯ÄÚ¸´ÖÆÒÔ·ÀÖ¹Êý¾Ý¶ªÊ§¡£Kafka¹¹½¨ÔÚZooKeeperͬ²½·þÎñÖ®ÉÏ¡£
KafkaµÄÌØÐÔ
ÒÔÏÂÊÇKafkaµÄ¼¸¸öºÃ´¦
¸ßÍÌÍÂÁ¿¡¢µÍÑÓ³Ù£ºkafkaÿÃë¿ÉÒÔ´¦Àí¼¸Ê®ÍòÌõÏûÏ¢£¬ËüµÄÑÓ³Ù×îµÍÖ»Óм¸ºÁÃ룬ÿ¸ötopic¿ÉÒÔ·Ö¶à¸öpartition,
consumer group ¶Ôpartition½øÐÐÏû·Ñ²Ù×÷¡£
¿ÉÀ©Õ¹ÐÔ£ºkafka¼¯ÈºÖ§³ÖÈÈÀ©Õ¹
³Ö¾ÃÐÔ¡¢¿É¿¿ÐÔ£ºÏûÏ¢±»³Ö¾Ã»¯µ½±¾µØ´ÅÅÌ£¬²¢ÇÒÖ§³ÖÊý¾Ý±¸·Ý·ÀÖ¹Êý¾Ý¶ªÊ§
ÈÝ´íÐÔ£ºÔÊÐí¼¯ÈºÖнڵãʧ°Ü£¨Èô¸±±¾ÊýÁ¿Îªn,ÔòÔÊÐín-1¸ö½Úµãʧ°Ü£©
¸ß²¢·¢£ºÖ§³ÖÊýǧ¸ö¿Í»§¶Ëͬʱ¶Áд
Ó¦Óó¡¾°
Kafka¿ÉÒÔÔÚÐí¶àÓÃÀýÖÐʹÓᣠÆäÖÐһЩÁгöÈçÏ£º
ÈÕÖ¾ÊÕ¼¯£ºÒ»¸ö¹«Ë¾¿ÉÒÔÓÃKafka¿ÉÒÔÊÕ¼¯¸÷ÖÖ·þÎñµÄlog£¬Í¨¹ýkafkaÒÔͳһ½Ó¿Ú·þÎñµÄ·½Ê½¿ª·Å¸ø¸÷ÖÖconsumer£¬ÀýÈçhadoop¡¢Hbase¡¢SolrµÈ¡£
ÏûϢϵͳ£º½âñîºÍÉú²úÕߺÍÏû·ÑÕß¡¢»º´æÏûÏ¢µÈ¡£
Óû§»î¶¯¸ú×Ù£ºKafka¾³£±»ÓÃÀ´¼Ç¼webÓû§»òÕßappÓû§µÄ¸÷Öֻ£¬Èçä¯ÀÀÍøÒ³¡¢ËÑË÷¡¢µã»÷µÈ»î¶¯£¬ÕâЩ»î¶¯ÐÅÏ¢±»¸÷¸ö·þÎñÆ÷·¢²¼µ½kafka
µÄtopicÖУ¬È»ºó¶©ÔÄÕßͨ¹ý¶©ÔÄÕâЩtopicÀ´×öʵʱµÄ¼à¿Ø·ÖÎö£¬»òÕß×°ÔØµ½hadoop¡¢Êý¾Ý²Ö¿âÖÐ×öÀëÏß·ÖÎöºÍÍÚ¾ò¡£
ÔËÓªÖ¸±ê£ºKafkaÒ²¾³£ÓÃÀ´¼Ç¼ÔËÓª¼à¿ØÊý¾Ý¡£°üÀ¨ÊÕ¼¯¸÷ÖÖ·Ö²¼Ê½Ó¦ÓõÄÊý¾Ý£¬Éú²ú¸÷ÖÖ²Ù×÷µÄ¼¯Öз´À¡£¬±ÈÈ籨¾¯ºÍ±¨¸æ¡£
Á÷ʽ´¦Àí£º±ÈÈçspark streamingºÍstorm
ʼþÔ´
Kafka»ù±¾¸ÅÄî
KafkaÖз¢²¼¶©ÔĵĶÔÏóÊÇtopic¡£ÎÒÃÇ¿ÉÒÔΪÿÀàÊý¾Ý´´½¨Ò»¸ötopic£¬°ÑÏòtopic·¢²¼ÏûÏ¢µÄ¿Í»§¶Ë³Æ×÷producer£¬´Ótopic¶©ÔÄÏûÏ¢µÄ¿Í»§¶Ë³Æ×÷consumer¡£ProducersºÍconsumers¿ÉÒÔͬʱ´Ó¶à¸ötopic¶ÁдÊý¾Ý¡£Ò»¸ökafka¼¯ÈºÓÉÒ»¸ö»ò¶à¸öbroker·þÎñÆ÷×é³É£¬Ëü¸ºÔð³Ö¾Ã»¯ºÍ±¸·Ý¾ßÌåµÄkafkaÏûÏ¢¡£
Broker£¨¾¼ÍÈË£©£ºKafka½Úµã£¬Ò»¸öKafka½Úµã¾ÍÊÇÒ»¸öbroker£¬¶à¸öbroker¿ÉÒÔ×é³ÉÒ»¸öKafka¼¯Èº¡£
Topic£¨Ö÷Ì⣩£ºÒ»ÀàÏûÏ¢£¬ÏûÏ¢´æ·ÅµÄĿ¼¼´Ö÷Ì⣬ÀýÈçpage viewÈÕÖ¾¡¢clickÈÕÖ¾µÈ¶¼¿ÉÒÔÒÔtopicµÄÐÎʽ´æÔÚ£¬Kafka¼¯ÈºÄܹ»Í¬Ê±¸ºÔð¶à¸ötopicµÄ·Ö·¢¡£
Partition£ºtopicÎïÀíÉϵķÖ×飬һ¸ötopic¿ÉÒÔ·ÖΪ¶à¸öpartition£¬Ã¿¸öpartitionÊÇÒ»¸öÓÐÐòµÄ¶ÓÁС£
Segment£ºpartitionÎïÀíÉÏÓɶà¸ösegment×é³É£¬Ã¿¸öSegment´æ×ÅmessageÐÅÏ¢¡£
offset£ºÒ»ÌõÏûÏ¢ÔÚÏûϢϵͳÖÐµÄÆ«ÒÆÁ¿¡£
Producer : Éú²úmessage·¢Ë͵½topic¡£
Consumer : ¶©ÔÄtopicÏû·Ñmessage, consumer×÷Ϊһ¸öÏß³ÌÀ´Ïû·Ñ¡£
ConsumerGroup£ºÒ»¸öConsumerGroup°üº¬¶à¸öconsumer,Õâ¸öÊÇÔ¤ÏÈÔÚÅäÖÃÎļþÖÐÅäÖúõġ£¸÷¸öconsumer£¨consumerỊ̈߳©¿ÉÒÔ×é³ÉÒ»¸ö×飨Consumer
group£©£¬partitionÖеÄÿ¸ömessageÖ»Äܱ»×飨Consumer group£© ÖеÄÒ»¸öconsumer£¨consumer
Ị̈߳©Ïû·Ñ£¬Èç¹ûÒ»¸ömessage¿ÉÒÔ±»¶à¸öconsumer£¨consumer Ị̈߳© Ïû·ÑµÄ»°£¬ÄÇôÕâЩconsumer±ØÐëÔÚ²»Í¬µÄ×é¡£Kafka²»Ö§³ÖÒ»¸öpartitionÖеÄmessageÓÉÁ½¸ö»òÁ½¸öÒÔÉϵÄconsumer
threadÀ´´¦Àí£¬¼´±ãÊÇÀ´×Ô²»Í¬µÄconsumer groupµÄÒ²²»ÐС£Ëü²»ÄÜÏñAMQÄÇÑù¿ÉÒÔ¶à¸öBET×÷ΪconsumerÈ¥´¦Àímessage£¬ÕâÊÇÒòΪ¶à¸öBETÈ¥Ïû·ÑÒ»¸öQueueÖеÄÊý¾ÝµÄʱºò£¬ÓÉÓÚÒª±£Ö¤²»Äܶà¸öÏß³ÌÄÃͬһÌõmessage£¬ËùÒÔ¾ÍÐèÒªÐм¶±ð±¯¹ÛËø£¨for
update£©,Õâ¾Íµ¼ÖÂÁËconsumeµÄÐÔÄÜϽµ£¬ÍÌÍÂÁ¿²»¹»¡£¶økafkaΪÁ˱£Ö¤ÍÌÍÂÁ¿£¬Ö»ÔÊÐíÒ»¸öconsumerÏß³ÌÈ¥·ÃÎÊÒ»¸öpartition¡£Èç¹û¾õµÃЧÂʲ»¸ßµÄʱºò£¬¿ÉÒÔ¼ÓpartitionµÄÊýÁ¿À´ºáÏòÀ©Õ¹£¬ÄÇôÔÙ¼ÓеÄconsumer
threadÈ¥Ïû·Ñ¡£ÕâÑùûÓÐËø¾ºÕù£¬³ä·Ö·¢»ÓÁ˺áÏòµÄÀ©Õ¹ÐÔ£¬ÍÌÍÂÁ¿¼«¸ß¡£ÕâÒ²¾ÍÐγÉÁË·Ö²¼Ê½Ïû·ÑµÄ¸ÅÄî¡£

Éú²úÕߺÍÏû·ÑÕß
Õë¶ÔÉú²úÕߺÍÏû·ÑÕߣ¬ÐèҪעÒâÒÔϼ¸µã
·ÖÇøÔÚproducer¶Ë½øÐÐ
Ò»¸ö·ÖÇøÖ»»áÓÉÏû·ÑÕß×éÄÚµÄÒ»¸öconsumerÏû·Ñ£¬kafka»áͨ¹ý¸ºÔؾùºâ»úÖÆ×Ô¶¯·ÖÅä
offsetÓÉconsumer¶Ë½øÐÐά»¤£¬Ò»°ã½»¸øzookeeper½øÐÐά»¤
Ö»Äܱ£Ö¤Ò»¸ö·ÖÇøÄÚµÄÊý¾ÝÊÇÓÐÐòµÄ

¶þ¡¢ Apache Kafka - °²×°²½Öè
×¢£º°²×°kafkaǰÐèÒªÌáǰ°²×°JDKÓëzookeeper
Step 1: ÏÂÔØKafka²¢½âѹ
> tar -xzfkafka_2.9.2-0.8.1.1.tgz
> cdkafka_2.9.2-0.8.1.1 |
Step 2: ÅäÖû·¾³±äÁ¿£¨¿ÉÑ¡£©
vi/etc/profile
KAFKA_HOME=/opt/kafka_2.9.2-0.8.1.1
PATH=$PATH:$KAFKA_HOME/bin |
Step 3: ÐÞ¸ÄÅäÖÃÎļþÖеÄÒÔÏÂÄÚÈÝ
cd /opt/kafka_2.9.2-0.8.1.1/config
viserver.properties
broker.id=0 //ΪÒÀ´ÎÔö³¤µÄ£º0¡¢1¡¢2¡¢3¡¢4£¬¼¯ÈºÖÐΨһid
log.dirs=/opt/kafka_2.9.2-0.8.1.1/logs //ÈÕÖ¾µØÖ·
zookeeper.connect=localhost:2181 //zookeeperServersÁÐ±í£¬¸÷½ÚµãÒÔ¶ººÅ·Ö¿ª
cd /opt/kafka_2.9.2-0.8.1.1/config
vi zookeeper.properties
dataDir=/usr/local/kafka/zookeeper
dataLogDir=/usr/local/kafka/log/zookeeper |
Step 4: Æô¶¯µ¥½Úµã·þÎñ
ÔÚkafkaµÄbinÖдæÔںܶàshÎļþ£¬ÆäÖаüº¬¶ÔzookeeperµÄÆô¶¯ÓëÍ£Ö¹¡£Ê×ÏÈÆô¶¯zookeeperÔÙÆô¶¯kafkaµÄbroker¡£
./bin/zookeeper-server-start.shconfig/zookeeper.properties
&
./bin/kafka-server-start.shconfig/server.properties
& |
Step 5: ´´½¨topic
./bin/kafka-topics.sh
--create --zookeeper192.168.2.105:2181 --replication-factor
1 --partitions 1 --topic testlzy |
ÁгöËùÓÐtopic
./bin/kafka-topics.sh
--zookeeper 192.168.2.105:2181--list |
Step 5: ´´½¨Éú²úÕß
./bin/kafka-console-producer.sh--broker-list
192.168.2.105:9093 --topic testlzy |
Step 6: ´´½¨Ïû·ÑÕß
./bin/kafka-console-consumer.sh
--zookeeperlocalhost:2181 --topic testlzy --from-beginning
|
´ËʱÈç¹ûÔÚÉú²úÕß¿ØÖÆÌ¨Öз¢²¼ÏûÏ¢£¬Ïû·ÑÕß¶ËÄܽÓÊÕµ½£¬¾ÍËã³É¹¦ÁË¡£
kafka³£ÓÃÃüÁî
ÒÔÏÂÊÇkafka³£ÓÃÃüÁîÐÐ×ܽ᣺
0. ²é¿´ÓÐÄÄЩÖ÷Ì⣺
./kafka-topics.sh
--list --zookeeper192.168.0.201:2181 |
1. ²é¿´topicµÄÏêϸÐÅÏ¢
./kafka-topics.sh
-zookeeper 127.0.0.1:2181-describe -topic testKJ1
|
2. ΪtopicÔö¼Ó¸±±¾
./kafka-reassign-partitions.sh
-zookeeper127.0.0.1:2181 -reassignment-json-file
json/partitions-to-move.json -execute |
3. ´´½¨topic
./kafka-topics.sh
--create --zookeeperlocalhost:2181 --replication-factor
1 --partitions 1 --topic testKJ1 |
4. ΪtopicÔö¼Ópartition
./bin/kafka-topics.sh
¨Czookeeper127.0.0.1:2181 ¨Calter ¨Cpartitions 20
¨Ctopic testKJ1 |
5. kafkaÉú²úÕ߿ͻ§¶ËÃüÁî
./kafka-console-producer.sh
--broker-listlocalhost:9092 --topic testKJ1 |
6. kafkaÏû·ÑÕ߿ͻ§¶ËÃüÁî
./kafka-console-consumer.sh
-zookeeperlocalhost:2181 --from-beginning --topic
testKJ1 |
7. kafka·þÎñÆô¶¯
./kafka-server-start.sh
-daemon../config/server.properties |
8. ÏÂÏßbroker
./kafka-run-class.shkafka.admin.ShutdownBroker
--zookeeper 127.0.0.1:2181 --broker #brokerId#--num.retries
3 --retry.interval.ms 60
shutdown broker |
9. ɾ³ýtopic
./kafka-run-class.shkafka.admin.DeleteTopicCommand
--topic testKJ1 --zookeeper 127.0.0.1:2181
./kafka-topics.sh --zookeeperlocalhost:2181 --delete
--topic testKJ1 |
10. ²é¿´consumer×éÄÚÏû·ÑµÄoffset
./kafka-run-class.shkafka.tools.ConsumerOffsetChecker
--zookeeper localhost:2181 --group test--topic
testKJ1
./kafka-consumer-offset-checker.sh --zookeeper192.168.0.201:2181
--group group1 --topic group1 |
Èý¡¢ Apache Kafka ¨C ºËÐÄÔÀí
¸ºÔؾùºâ
¸ºÔؾùºâµÄÁ½ÖÖ²ßÂÔ£¨Ïû·Ñ¶ËÅäÖã©
partition.assignment.strategy=range|round-robin |
ÔÚkafkaÖÐpartition·Ö·¢ÏûÏ¢¸øÏû·ÑÕß²»ÊÇÒÑÏû·ÑΪÁ¦¶È½øÐзÖÅäµÄ£¬ÊÇÒÔÏû·ÑÕßÏß³ÌΪÁ¦¶È½øÐзÖÅäµÄ¡£

Range
kafkaÖеÄÿ¸ötopicµÄ·ÖÇøÊǶÀÁ¢½øÐзÖÅäµÄ£¬topic¼ä²»Êܵ½ÈκÎÓ°Ïì¡£
topicÖÐÏÈÊǶÔpartition½øÐÐÊý×ÖÅÅÐò£¬Ḭ̈߳´ÕÕ×ÖµäÅÅÐò¡£
½ÓÏÂÀ´Ó÷ÖÇøµÄÊýÁ¿³ýÒÔÏß³ÌÊýÁ¿¾ÍÊÇÿ¸öÏß³ÌÄܹ»·Öµ½µÄÏûÏ¢ÊýÁ¿
partition_per_thread= ·ÖÇøÊýÁ¿/Ïß³ÌÊýÁ¿
Èç¹ûÕû³ýÁË£¬ÄÇôÿ¸öÏß³ÌÒÀ´Î·ÖÅäpartition_per_thread¸ö·ÖÇø
Èç¹û²»Õû³ý£¬µÍλµÄ¼¸¸öthread»á¶àÏû·Ñ·ÖÇø
Èç¹û·ÖÇø¸öÊýÉÙÓÚÏß³ÌÊýÁ¿£¬¾Í»á³öÏÖÏ߳̿ÕÏеÄʱºò£¬ÒòΪkafka»á±£Ö¤Ò»¸ö·ÖÇøÖ»Äܱ»Ò»¸öÏû·ÑÕß½øÐÐÏû·Ñ¡£ËùÒÔ½¨ÒéÔÚÅäÖõÄʱºò·ÖÇøÊýÁ¿ºÍÏû·ÑÕßÏß³ÌÊýÁ¿ÏàµÈ×îºÃ¡£
Round-robin
ÔÚkafkaÖÐÒ»¸öÏû·ÑÕß×éÊÇ¿ÉÒÔ¶©ÔĶà¸ötopicµÄ¡£µ±¶©ÔÄÁ˶à¸ötopicºó£¬ËûÄÚ²¿»á°ÑËùÓÐtopic½øÐлìÂÒÒÔºóÔÙ°´ÕÕrange²ßÂÔ×ßÒ»±é£¬Ëû»á±£Ö¤Ã¿¸ötopicÔÚconsumerÖеÄÏß³ÌÊýÁ¿±ØÐëÏàµÈ¡£
±¸×¢
Ò»°ãÓ¦ÓÃrangeµÄ±È½Ï¶à£¬Èç¹ûconsumer×éÖÐÓиöÏß³ÌshutdownÁË£¬ÄÇôkafka»á×Ô¶¯µÄÖØÐ½øÐиºÔؾùºâµÄ·ÖÅä¡£Õâ¸ö¸ºÔؾùºâÔö¼ÓÁËÏÂÓεÄÏû·ÑÄÜÁ¦¡£¶øÇҷdz£·½±ãµÄ½øÐÐÏû·ÑÕßµÄÀ©Õ¹¡£µ±È»kafkaÒ²¿ÉÒÔÈ¥³ýÕâÑùµÄ¸ºÔؾùºâ²ßÂÔ£¬Ä¬ÈÏÏû·Ñ¶Ë·ÖΪhigh
levelµÄ¿Í»§¶Ë£¨ÆôÓøºÔؾùºâ»úÖÆ£©ºÍsimpleµÄ¿Í»§¶Ë£¨²»ÆôÓøºÔؾùºâ£¬ÐèÒª×Ô¼º¾ö¶¨Ïû·ÑÄĸö·ÖÇøµÄÏûÏ¢£©¡£
Ö÷´Ó¼°¸±±¾·Ö²¼
kafkaµÄÖ÷´ÓÖ÷ÒªÌṩÁË·ÖÇøÈÝ´íµÄÄÜÁ¦£¬¿ÉÒÔÅäÖÃÒ»¸öleaderºÍÈô¸Éfollower£¬leaderÊÇ´¦ÀíÏûÏ¢£¬¶øfollowerÖ»ÊÇleaderµÄÒ»¸ö±¸·Ý£¬Æ½³£µÄÁ¬½Ó¶¼ÊÇÁ¬ÔÚleaderÉϵġ£µ±leaderå´»úÒÔºó£¬kafka»á´ÓfollowerÖÐÑ¡¾Ùһ̨leaderÀ´½øÐзþÎñ¡£

¶ÔÓÚµÚR¸ö¸±±¾£¬ÏÈËæ»úȡһ¸öbroker·Å·ÖÇø0£¬È»ºó˳Ðò·ÅÆäËû·ÖÇø¡£ÕâÑù±£Ö¤ÁËleaderºÍfollower¾ùÔȵķֲ¼ÔÚÁËÿ¸öbrokerÉÏ¡£
ͨ¹ý-topicÃüÁî¿ÉÒԲ鿴ָ¶¨topicµÄ·ÖÇøºÍ¸±±¾µÄ·Ö²¼Çé¿ö

topic£ºtopicÃû³Æ
partition£º·ÖÇøÃû³Æ
leader£º´Ë·ÖÇøµÄleaderÔÚÄĸöbrokerÉÏ
replicas£ºËùÓеĸ±±¾·Ö²¼ÔÚÄĸöbrokerÉÏ
isr£ºreplicasÖÐËùÓÐin-syncµÄ½Úµã
¶ÔÓÚin-sync
½Úµã±ØÐë¿ÉÒÔά»¤ºÍzookeeperµÄÁ¬½Ó£¬zookeeperͨ¹ýÐÄÌø»úÖÆ¼ì²éÿ¸ö½ÚµãµÄÁ¬½Ó¡£
Èç¹û½ÚµãÊǸöfollower¡£Ëû±ØÐëÄܼ°Ê±µÄͬ²½leaderµÄд²Ù×÷£¬ÑÓʱ²»ÄÜÌ«¾Ã¡£
ÉèÖ÷½Ê½
replica.lag.max.messages£ºÂäºóµÄÏûÏ¢ÊýÁ¿
replica.lag.time.max.ms£º¿¨×¡µÄʱ¼ä
kafkaÊÇͨ¹ýÕâÁ½¸ö²ÎÊýÈ¥ÅжÏÊDz»ÊÇÒ»¸öÓÐЧµÄ¸±±¾follower¡£µ±leaderå´»úÒÔºó£¬ÊÇ´ÓÕâЩÓÐЧ¸±±¾ÖнøÐÐÑ¡¾ÙµÄ¡£ÎÞЧµÄÊDz»²Î¼ÓÑ¡¾ÙµÄ¡£
kafkaµÄ³Ö¾Ã»¯
ÏûÏ¢¸ñʽ
kafkaµÄÏûÏ¢¸ñʽÈçͼ

Îļþϵͳ
kafka»á½«ÏûÏ¢×éÖ¯µ½Ó²ÅÌÉÏ£¬ÔÚbrokerµÄÊý¾ÝĿ¼ÖлáÓÐÒÔtopicÃû³Æ-·ÖÇøºÅÃüÃûµÄÎļþ¼Ð£¬
ÔÚÎļþ¼ÐÖдæÔڳɶԳöÏÖµÄÎļþ¡£kafka²»Êǽ«ËùÓÐÏûÏ¢·Åµ½Ò»¸ö´óÎļþÀ¶øÊǸù¾ÝÏûÏ¢µÄoffset½øÐÐÁ˷ֶΡ£Ã¿Ò»¸ö¶ÎÄڷŶàÉÙÏûÏ¢ÊÇ¿ÉÒÔÅäÖõġ£ÎļþÃû×Ö´ú±í´ËÎļþÖеĵÚÒ»¸öÊý¾ÝµÄoffset¡£indexΪË÷ÒýÎļþ£¬logΪÊý¾ÝÎļþ£¬´æ·ÅµÄÏûÏ¢¸ñʽ¼ûÉÏͼ¡£¶ÔÓÚindexÎļþά»¤µÄÊÇÒ»¸öÏ¡ÊèË÷Òý£¬ÓÉÏûÏ¢µÄ±àºÅÖ¸ÏòÎïÀíÆ«ÒÆ£¬ÔËÐÐʱ»á±»¼ÓÔØµ½ÄÚ´æ¡£

¹ýÆÚÊý¾ÝÇåÀí
kafka¼ÈȻ֧³ÖÁ˳־û¯£¬Ëû¶Ô´ÅÅ̿ռäÊÇÓÐÒªÇóµÄ¡£¶ÔÓÚɾ³ý¹ýÆÚÊý¾ÝkafkaÌṩÁËÁ½ÖÖ²ßÂÔ
1¡¢Ä¬ÈϲßÂÔΪֱ½Óɾ³ý
l ³¬¹ýÖ¸¶¨µÄʱ¼äµÄÏûÏ¢£º
log.retention.hours=168
l ³¬¹ýÖ¸¶¨´óСºó£¬É¾³ý¾ÉµÄÏûÏ¢£º
log.retention.bytes=1073741824
2¡¢Ñ¹Ëõ£¨Ö»ÔÚÌØ¶¨µÄÒµÎñ³¡¾°ÏÂÓÐÒâÒ壩
È«¾Ö£ºlog.cleaner.enable=true
ÔÚÌØ¶¨µÄtopicÉÏ£ºlog.cleanup.policy=compact
±£Áôÿ¸ökey×îºóÒ»¸ö°æ±¾µÄÐÅÏ¢£¬Èô×îºóÒ»¸ö°æ±¾ÏûÏ¢ÄÚÈÝΪ¿Õ£¬Õâ¸ökey±»É¾³ý

|