±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcnblogs
,ÎÄÖнéÉÜÁËKafka¼Ü¹¹ÖÐÏ໥֮¼äµÄ¹ØÏµ£¬Ôõô·Ö²¼µÄ¡£
|
|
ÏûÏ¢Öмä¼þMessageQuene ½âñîÇÒ¿ÉÀ©Õ¹£ºÒµÎñ¸´ÔӶȵÄÌáÉý´øÀ´µÄÒ²ÊÇñîºÏ¶ÈµÄÌá¸ß£¬ÏûÏ¢¶ÓÁÐÔÚ´¦Àí¹ý³ÌÖмä²åÈëÁËÒ»¸öÒþº¬µÄ¡¢»ùÓÚÊý¾ÝµÄ½Ó¿Ú²ã£¬Á½±ßµÄ´¦Àí¹ý³Ì¶¼ÒªÊµÏÖÕâÒ»½Ó¿Ú¡£ÕâÔÊÐíÄã¶ÀÁ¢µÄÀ©Õ¹»òÐÞ¸ÄÁ½±ßµÄ´¦Àí¹ý³Ì£¬Ö»ÒªÈ·±£ËüÃÇ×ñÊØÍ¬ÑùµÄ½Ó¿ÚÔ¼Êø¡£ ÈßÓࣺÓÐЩҵÎñÔÚ´¦Àí¹ý³ÌÖÐÈç¹ûʧ°ÜÁË£¬Êý¾ÝÔÚδ½øÐг־û¯µÄʱºò¾ÍÒѾÏûʧ£¬ÏûÏ¢¶ÓÁаÑÊý¾Ý³Ö¾Ã»¯Ö±µ½ËûÃDZ»´¦Àí£¬±ÜÃâÁËÊý¾ÝµÄ¶ªÊ§ ´¦Àí²¢·¢£º´óÊý¾ÝÁ¿·ÃÎʵÄʱºòÎÒÃÇ¿ÉÒÔ½«ÏûÏ¢·ÅÈë¶ÓÁÐÖУ¬È»ºóÔÚ¶ÓÁÐÀïÃæ°´ÕÕϵͳµÄÍÌÍÂÄÜÁ¦À´½øÐÐÎȶ¨µÄ³éÈ¡Êý¾Ý²¢½øÐÐÒµÎñ´¦Àí¡£ ¿É»Ö¸´£ºÒ»²¿·Öϵͳ³öÏÖÎÊÌ⣬¿ÉÄÜÓ°ÏìÕû¸ö³ÌÐòÎȶ¨£¬ÏûÏ¢¶ÓÁÐÓÉÓÚ½«Êý¾Ý³Ö¾Ã»¯£¬ËùÒÔÔÚ³öÏÖÎÊÌâµÄʱºò¿ÉÒÔÆðµ½Ò»¸ö±¸·ÝµÄ×÷Óã¬ÏµÍ³Îȶ¨Ö®ºó¿ÉÒÔ½øÐÐÊý¾ÝÖØÐÂÏû·Ñ¡£ ËÍ´ï±£Ö¤£º´ó¶àÊýÏûÏ¢¶ÓÁж¼ÓÐÒ»Ì××Ô¼ºµÄÏûÏ¢´¦Àí»úÖÆ£¬Ò»°ã·ÖΪÏûÏ¢´¦Àí¶à´Î£¬ÏûÏ¢ÖÁÉÙ±»´¦ÀíÒ»´ÎµÈÇé¿ö£¬ÕâʹµÃÎÒÃÇ´¦ÀíÒµÎñ¼õÉÙÁËÊý¾Ý¶ªÊ§Çé¿öµÄ·¢Éú¡£ ˳Ðò´¦Àí£º°´ÕÕÒ»¶¨µÄ˳Ðò·¢ËÍÏûÏ¢£¬Ê¹µÃÏûÏ¢ÔÚ¶ÓÁÐÖÐÊÇÓÐÐò´æÔڵģ¬ËùÒÔÔÚÏû·ÑÊý¾ÝµÄʱºòÎÒÃÇÒ²ÊÇÓÐÐò´¦ÀíµÄ£¨ÏȽøÏȳö£©¡£ Ò첽ͨÐÅ£ººÜ¶àʱºò£¬Äã²»ÏëÒ²²»ÐèÒªÁ¢¼´´¦ÀíÏûÏ¢¡£ÏûÏ¢¶ÓÁÐÌṩÁËÒì²½´¦Àí»úÖÆ£¬ÔÊÐíÄã°ÑÒ»¸öÏûÏ¢·ÅÈë¶ÓÁУ¬µ«²¢²»Á¢¼´´¦ÀíËü¡£ÄãÏëÏò¶ÓÁÐÖзÅÈë¶àÉÙÏûÏ¢¾Í·Å¶àÉÙ£¬È»ºóÔÚÄãÀÖÒâµÄʱºòÔÙÈ¥´¦ÀíËüÃÇ¡£
³£ÓÃMQ¶Ô±È
RedisMQ£ºRedisÊÇ»ùÓÚKey-ValueµÄNoSqlÊý¾Ý¿â£¬±¾ÉíÖ§³ÖMQ¶ÓÁвÙ×÷£¬ÊÇÒ»¸öÇáÁ¿¼¶µÄ¶ÓÁзþÎñ£¬ÔÚʹÓÃRedis×÷Ϊ»º´æµÄÏîÄ¿ÖУ¬¿ÉÒÔÓÅÏÈʹÓÃRedisMQ×÷ΪÏûÏ¢¶ÓÁнøÐÐÒµÎñ´¦Àí¡£Óŵ㣺ÇáÁ¿¼¶£¬ÈÝÒ׿ª·¢¡£È±µã£ºÊý¾Ý´óµÄʱºòÈë¶ÓËٶȽÏÂý ActiveMQ£ºApacheµÄÒ»¸ö¿ªÔ´×ÓÏîÄ¿£¬Ö§³Ö¶àÖÖÓïÑÔÒÔ¼°ÍøÂçÐÒé¡£Óŵ㣺ÈÝÒ׿ª·¢£¬²¢ÇÒÓÐ×Ô´øÖØÁ¬»úÖÆ¡£È±µã£º´«ÈëÎļþ²»·½±ã£¬Êý¾Ý´óµÄʱºòЧÂÊÒ»°ã£¬Ïû·Ñʧ°ÜµÄÊý¾Ý½«»á¶ªÊ§¡£ Kafka£ºApacheµÄÒ»¸ö¿ªÔ´×ÓÏîÄ¿£¬¸ßÐÔÄÜ´óÍÌÍÂÁ¿²¢ÇÒÄܹ»Âú×ã¿çÓïÑÔÆ½Ì¨·Ö²¼Ê½¡£Óŵ㣺¿ìËٳ־û¯£¬´óÍÌÍÂÁ¿£¬Ö§³ÖhadoopÊý¾Ý²¢ÐмÓÔØ£¬¿ÉÒÔ½øÐÐÀëÏßÏûÏ¢´¦Àí¡£È±µã£º¿ª·¢À§ÄÑ£¬ÅäÖÃÎļþ¸´ÔÓ£¬¿ªÔ´´úÂë½ÏÉÙ¡£
KafkaÔªËØ½éÉÜ
broker£ºkafka´î½¨µÄ¼¯Èº·þÎñÆ÷³ÆÎªbroker£¬¼¯ÈºÖÐһ̨·þÎñÆ÷¿ÉÒÔ´îÔØ¶à¸öbroker¡£ Topic£ºÃ¿Ìõ·¢²¼µ½Kafka¼¯ÈºµÄÏûÏ¢¶¼ÓÐÒ»¸öÀà±ð£¬Õâ¸öÀà±ð±»³ÆÎªtopic¡£ÎÒÃÇ¿ÉÒÔÈÏΪͬһÖÖÀàÐ͵ÄÏûÏ¢´æµ½Í¬Ò»¸ötopicÏ£¬ÕâµãºÍMapµÄkeyÖµÓÐÏàËÆÖ®´¦¡£ Partiton£ºparitionÊÇÎïÀíÉϵĸÅÄÿ¸ötopic°üº¬Ò»¸ö»ò¶à¸öpartition£¬´´½¨topicµÄʱºò¿ÉÒÔÖ¸¶¨partitonµÄÊýÁ¿¡£Ã¿Ò»¸öpartition¶ÔÓ¦Ò»¸öÎļþ¼Ð¡£Îļþ¼ÐÀïÃæ´æ·ÅË÷ÒýÎļþÒÔ¼°Êý¾ÝÎļþ¡£ Producer£º¸ºÔð·¢²¼ÏûÏ¢µ½BrokerÖÐ Consumer£ºÃ¿¸öÏû·ÑÕßÊôÓÚÌØ¶¨µÄÏû·ÑÕß×飬ÿ¸öÏû·ÑÕß×éÖ»ÄÜÏû·ÑÒ»¸öpartitionµÄÊý¾Ý£¬¶à¸ö×é¿ÉÒÔͬʱÏû·Ñͬһ¸öpartitionµÄÊý¾Ý¡£
KafkaµÄ¼Ü¹¹

Ò»¸öµäÐ͵Äkafka¼¯ÈºÖаüº¬Èô¸Éproducer£¬Èô¸Ébroker£¨KafkaÖ§³ÖˮƽÀ©Õ¹£¬Ò»°ãbrokerÊýÁ¿Ô½¶à£¬¼¯ÈºÍÌÍÂÂÊÔ½¸ß£©£¬
Èô¸Éconsumer group£¬ÒÔ¼°Ò»¸ö Zookeeper ¼¯Èº¡£Kafkaͨ¹ýZookeeper¹ÜÀí¼¯ÈºÅäÖã¬Ñ¡¾Ùleader£¬ÒÔ¼°ÔÚconsumer
group·¢Éú±ä»¯Ê±½øÐÐrebalance¡£producerʹÓÃpushģʽ½«ÏûÏ¢·¢²¼µ½broker£¬consumerʹÓÃpullģʽ´Ó
broker¶©ÔIJ¢Ïû·ÑÏûÏ¢¡£
Kafka´¦ÀíÏûÏ¢µÄ»úÖÆ
producer£ºProducerÏòBrokerÍÆËÍÏûÏ¢£¨push£© consumer£ºconsumer´ÓbrokerÀÈ¡ÏûÏ¢£¨pull£© pushģʽϺÜÄÑÊÊÓ¦²»Í¬Ïû·ÑËÙÂʵÄÏû·ÑÕß´¦ÀíÏûÏ¢£¬ÒòΪ·¢ËÍÏûÏ¢µÄËÙ¶ÈÊÇÓÉbroker¾ö¶¨µÄ¡£pushģʽµÄÄ¿µÄÊÇΪÁ˾¡¿ìµÄÏû·Ñ£¬µ«ÊÇÕâÑùÈÝÒ×Ôì³ÉconsumerÀ´²»¼°´¦ÀíÏûÏ¢¡£µäÐ͵ıíÏÖ¾ÍÊÇÍøÂç×èÈûºÍ¾Ü¾ø·þÎñ¡£ pullģʽ¿ÉÒÔ¸ù¾ÝÏû·ÑÕßÏû·ÑËÙÂʶø×¥È¡ÏûÏ¢£¬ÕâÑù±ÜÃâÁËÍøÂç×èÈûµÄÇé¿ö·¢Éú¡£
TopicÓëPartitionÈÏʶ¡ª¡ª¼òµ¥·Ö²¼
Partition·Ö²¼ÎÒÃÇÖ÷Òª·Ö³Éµ¥BrokerºÍ¶à¸öBroker£º
µ¥¸öBroker£º
´´½¨Ò»¸öpartitionΪ3£¬ReplicaΪ1£¬TopicÃû×ÖΪorderµÄtopic¡£ÎÒÃǵõ½µÄ·Ö²¼Ê½ÔÚÅäÖúõÄLOGÎļþ¼ÐÖÐÉú³ÉÈý¸ö·Ö±ðΪ£ºorder-0¡¢order-1¡¢order-2µÄÎļþ¼ÐÓÃÀ´´æ´¢PartitionϵÄÐÅÏ¢µÄ.indexÎļþ.logÎļþºÍ.timeindexÎļþ¡£
¶à¸öBroker£º
´´½¨Ò»¸öpartitionΪ3£¬ReplicaΪ1£¬TopicÃû×ÖΪorderµÄtopic¡£ÎÒÃÇÔÚBroker0ÖжÔÓ¦µÄLOGÎļþ¼ÐÖÐÖ»ÊÇ·¢ÏÖÁËorder-0µÄÎļþ¼Ð£¬ÔÚÆäËûBrokerÖзֱð·¢ÏÖÁËPartitionµÄÎļþ¼Ð¡£Èç¹ûBrokerÊý´óÓÚPartitionÊý£¬ÄÇôÓÐBrokerÖÐûÓжÔÓ¦µÄPartition£»Èç¹ûBrokerСÓÚPartitionÊý£¬BrokerÖÐ»á´æÔÚ¶à¸öPartition¡£
ÏÂÃæÒÔÒ»¸öKafka¼¯ÈºÖÐ4¸öBroker¾ÙÀý£¬´´½¨1¸ötopic°üº¬4¸öPartition£¬2¸ö
Replication£º

µ±¼¯ÈºÖÐÐÂÔö2½Úµã£¬PartitionÔö¼Óµ½6¸öʱ·Ö²¼Çé¿ö£º

TopicÓëPartitionÈÏʶ¡ª¡ª·Ö²¼Âß¼ ¸±±¾·ÖÅäÂß¼£º
ÔÚkafka¼¯ÈºÖУ¬Ã¿¸öBroker·ÖÅäPartitionµÄleader»ú»áÊǾùµÈµÄ ÿ¸öBroker£¨°´ÕÕbrokeridÓÐÐò£©ÒÀ´Î·ÖÅäleaderµÄPartition£¬ÏÂÒ»¸öBrokerΪ¸±±¾£¬Èç´ËÑ»·µü´ú·ÖÅ䣬¶à¸±±¾Ò²×ñѴ˹æÔò¡£ ¸±±¾·ÖÅäËã·¨£º
½«ËùÓеÄBrokerºÍ´ý·ÖÅäµÄPartition½øÐÐÅÅÐò ½«µÚi¸öPartition·ÖÅäµ½µÚ(i mod n)¸öBrokerÉÏ ½«µÚi¸öPartitionµÄµÚj¸ö¸±±¾·ÖÅäµ½µÚ((i + j) mod n)¸öBrokerÉÏ.
Partition¡ª¡ªLeaderÓëFollower
LeaderºÍFollower£º
opicµÄReplication²»ÊDZØÑ¡ Èç¹ûReplicationÖеÄLeaderå´»úÁË£¬ÄÇô¸±±¾Follower½«×÷ΪLeader FollowerµÄÊý¾ÝÊÇ´ÓLeaderÖÐÀÈ¡µÄ£¬¶ø²»ÊÇLeader·¢Ë굀 ÅжϽڵãÊÇ·ñalive£ºÊ×ÏÈ½Úµã±ØÐë¿ÉÒÔά»¤ºÍzookeeperµÄÁ¬½Ó£¬zookeeperͨ¹ýÐÄÌø»úÖÆ¼ì²éÿ¸ö½ÚµãµÄÁ´½Ó£»Æä´ÎÊÇÈç¹ûÕâ¸ö½ÚµãÊÇfollower£¬±ØÐëÄܹ»Í¬²½leaderµÄд²Ù×÷£¬ÑÓʱ²»ÄÜÌ«¾Ã¡££¨·ûºÏÌõ¼þµÄ½ÚµãΪͬ²½ÖÐ״̬£¬Èç¹û³öÏÖÉÏÊöÎÊÌâµÄ½Úµã£¬leader½«»á°Ñ½ÚµãÒÆ³ý£¬Ê±¼äÓÉreplica.lag.time.max.ms¾ö¶¨£¬ÏûÏ¢ÓÉreplica.lag.max.messages¾ö¶¨£© Èç¹ûÓи±±¾£¬ÄÇôµ±ËùÓи±±¾¶¼¼ÓÈëÈÕÖ¾ÖвÅËãÕâÌõÐÅÏ¢commited£¬Ö»ÓÐÏûÏ¢ÊÇcommited״̬µÄ²ÅÄܱ»Ïû·ÑÕßÏû·Ñ¡££¨Producer¿ÉÒÔ¸ù¾Ýacks²ÎÊýÀ´¾ö¶¨ÊÇ·ñµÈ´ýÏûÏ¢Ìύ֪ͨ·´À¡£© KafkaÖ»Òª±£Ö¤ÓÐÒ»¸ö½ÚµãÊÇͬ²½Öеģ¬ÒѾcommitedµÄÏûÏ¢¾Í²»»á¶ªÊ§¡£
Partition¡ª¡ªLeaderÑ¡¾Ù
·Ö²¼Ê½LeaderÑ¡¾Ù»úÖÆÓÐFollowerͶƱ£¬ÒÔ¼°FollowerÃüÖÐÂÊ»úÖÆÀ´µÈ£¬ÕâÁ½ÖÖ»úÖÆ¶¼ÊǸù¾Ý¸±±¾½ÚµãµÄ״̬À´¶¯Ì¬Ñ¡ÔñµÄ¡£¶økafka²¢²»Ê¹ÓÃÕâÁ½ÖÖ¡£ ËäÈ»kafkaʹÓÃzookeeper½øÐÐleaderÑ¡Ôñ£¬µ«ÊÇËü²ÉÓÃFastLeaderElectionµÄ·½Ê½ºÍ´«Í³·½Ê½ÓÐËù²»Í¬¡£ kafka×Ô¼ºÎ¬»¤Í¬²½×´Ì¬µÄ¸±±¾¼¯ºÏ£¨ISR£©£¬Õâ¸öÀïÃæµÄ½Úµã¶¼ÊǺÍLeaderÊý¾Ý±£³Ö¸ß¶ÈÒ»Öµģ¬ÈκÎÒ»ÌõÏûÏ¢±£Ö¤Ã¿¸ö½ÚµãµÄÏûÏ¢×·¼Óµ½ÈÕÖ¾ÖÐ²Å»á¸æËßLeaderÕâ¸öÏûÏ¢ÒѾcommited£¬ËùÒÔÈκÎFollower½ÚµãÔÚLeaderå´µôÖ®ºò¶¼¿ÉÄܱ»Ñ¡ÔñΪLeader£¬²¢ÇÒÕâЩ½Úµã¶¼ÊÇͨ¹ýzookeeper¹ÜÀíά»¤¡£ Follower½ÚµãΪN£¬Èç¹ûN-1¸ö½Úµã¶¼å´£¬kafkaÒÀÈ»¿ÉÒÔÕý³£¹¤×÷£¬Èç¹ûijһ¸öå´µô½ÚµãÓÖÖØÐÂalive£¬ÓÉ»á±»ÖØÐ¼ÓÈëµ½ISRÖС£ Èç¹ûN¸ö½Úµã¶¼å´µôÁË£¬¾Í»áµÈ´ýISRÖÐÈκÎÒ»¸öÖØÐÂaliveµÄ½Úµã×÷ΪLeader£¬»òÕßÑ¡ÔñËùÓнڵãÖÐÖØÐÂaliveµÄ½Úµã×÷ΪLeader£¨Ã²ËÆÐ°汾kafkaÖпÉÒÔÅäÖÃLeaderÑ¡¾ÙµÄÕâÖÖÇé¿öµÄÑ¡Ôñ·½Ê½£©
Partition¡ª¡ªÎļþ´æ´¢·½Ê½
ÿ¸öpartion(Ŀ¼)Ï൱ÓÚÒ»¸ö¾ÞÐÍÎļþ±»Æ½¾ù·ÖÅäµ½¶à¸ö´óСÏàµÈsegment(¶Î)Êý¾ÝÎļþÖС£µ«Ã¿¸ö¶Îsegment
fileÏûÏ¢ÊýÁ¿²»Ò»¶¨ÏàµÈ£¬ÕâÖÖÌØÐÔ·½±ãold segment file¿ìËÙ±»É¾³ý¡£ ÿ¸öpartitonÖ»ÐèÒªÖ§³Ö˳Ðò¶Áд¾ÍÐÐÁË£¬segmentÎļþÉúÃüÖÜÆÚÓÉ·þÎñ¶ËÅäÖòÎÊý¾ö¶¨¡£ ´ÅÅÌÔÚ½øÐзÇÏßÐÔдÈëµÄЧÂʺܵͣ¬ÔÚÖªµÀ¶Áд˳ÐòµÄÇé¿öÏÂЧÂʺܸߣ¬ÕâÊÇkafkaЧÂʸߣ¬Âú×ã¸ßÍÌÍÂÁ¿µÄÌõ¼þ¡£
Partition¡ª¡ªÎļþ
¶ÎÂäÎļþÓÉÈý²¿·Ö×é³É£º.indexÎļþ¡¢.logÎļþÒÔ¼°.timeindexÎļþ¡££¨0.8°æ±¾Ö®Ç°µÄkafkaûÓÐtimeindexÎļþ£© indexÎļþΪË÷ÒýÎļþ£¬ÃüÃû¹æÔòΪ´Ó0¿ªÊ¼µ½£¬ºóÐøµÄÓÉÉÏÒ»¸öÎļþµÄ×î´óµÄoffsetÆ«ÒÆÁ¿À´¿ªÍ·£¨19λÊý×Ö×Ö·û³¤¶È£© .logÎļþΪÊý¾ÝÎļþ£¬´æ·Å¾ßÌåÏûÏ¢Êý¾Ý .timeindexÎļþ£¬ÊÇkafkaµÄ¾ßÌåʱ¼äÈÕÖ¾ Èç¹ûÉèÖÃlogʧЧʱ¼ä±È½Ï¶Ì£¬¾Í»á³öÏÖÏÂÃæÕâÖÖ×´¿ö

Partition¡ª¡ªindexºÍlogµÄÆ¥Åä¹ØÏµ

Ë÷ÒýÎļþ´æ´¢´óÁ¿ÔªÊý¾Ý£¬Êý¾ÝÎļþ´æ´¢´óÁ¿ÏûÏ¢£¬Ë÷ÒýÎļþÖÐÔªÊý¾ÝÖ¸Ïò¶ÔÓ¦Êý¾ÝÎļþÖÐmessageµÄÎïÀíÆ«ÒÆµØÖ·¡£ÆäÖÐÒÔË÷ÒýÎļþÖÐ
ÔªÊý¾Ý3,497ΪÀý£¬ÒÀ´ÎÔÚÊý¾ÝÎļþÖбíʾµÚ3¸ömessage(ÔÚÈ«¾Öpartiton±íʾµÚ368772¸ömessage)¡¢ÒÔ¼°¸ÃÏûÏ¢µÄÎïÀíÆ«ÒÆ
µØÖ·Îª497¡£
Partition¡ª¡ªMessageµÄÎïÀí½á¹¹


Partition¡ª¡ªÍ¨¹ýOffset²éÕÒMessage ¶ÁÈ¡OffsetΪ368776µÄMessage£º
1.²éѯ¶ÎÂäÎļþ£º
¼ÙÉèpartitionÓÐÁ½¸öindexÎļþ£¬·Ö±ðΪ:0...0.indexÎļþºÍ0...383562.indexÎļþ£¬ÓÉÓÚÎÒÃǵڶþ¸öµÄÆ«ÒÆÁ¿³õʼֵΪ383562+1£¬¶øÒª²éѯµÄÎļþΪ368776£¬ËùÒÔÎÒÃDzéѯµÄMessageÔÚµÚÒ»¸ö0...0.logÖС£Ê¹ÓÃoffset
**¶þ·Ö²éÕÒ**ÎļþÁÐ±í£¬¾Í¿ÉÒÔ¿ìËÙ¶¨Î»µ½¾ßÌåÎļþ¡£
2.¶ÎÂäÎļþË÷ÒýÓëMessageÎļþ½øÐÐÆ¥Å䣺
ͨ¹ýsegment file²éÕÒmessageͨ¹ýµÚÒ»²½¶¨Î»µ½segment file£¬µ±offset=368776ʱ£¬ÒÀ´Î¶¨Î»µ½0...000.indexµÄÔªÊý¾ÝÎïÀíλÖúÍ
0..000.logµÄÎïÀíÆ«ÒÆµØÖ·£¬È»ºóÔÙͨ¹ý0...0.log˳Ðò²éÕÒÖ±µ½ offset=368776Ϊֹ
Consumer¡ª¡ªHigh Level ºÜ¶àʱºò£¬¿Í»§³ÌÐòÖ»ÊÇÏ£Íû´ÓKafka¶ÁÈ¡Êý¾Ý£¬²»Ì«¹ØÐÄÏûÏ¢offsetµÄ´¦Àí¡£Í¬Ê±Ò²Ï£ÍûÌṩһЩÓïÒ壬ÀýÈçͬһÌõÏûÏ¢Ö»±»Ä³Ò»¸öConsumerÏû·Ñ£¨µ¥²¥£©»ò±»ËùÓÐConsumerÏû·Ñ£¨¹ã²¥£©¡£Òò´Ë£¬Kafka
Hight Level ConsumerÌṩÁËÒ»¸ö´ÓKafkaÏû·ÑÊý¾ÝµÄ¸ß²ã³éÏ󣬴ӶøÆÁ±ÎµôÆäÖеÄϸ½Ú²¢Ìṩ·á¸»µÄÓïÒå¡£
Consumer¡ª¡ªConsumer Group ÿһ¸öconsumerʵÀý¶¼ÊôÓÚÒ»¸öconsumer group£¬Ã¿Ò»ÌõÏûÏ¢Ö»»á±»Í¬Ò»¸öconsumer
groupÀïµÄÒ»¸öconsumerʵÀýÏû·Ñ¡££¨²»Í¬consumer group¿ÉÒÔͬʱÏû·ÑͬһÌõÏûÏ¢£©

Consumer¡ª¡ªRebalance Kafka±£Ö¤Í¬Ò»Consumer GroupÖÐÖ»ÓÐÒ»¸öConsumer»áÏû·ÑijÌõÏûÏ¢£¬Êµ¼ÊÉÏ£¬Kafka±£Ö¤µÄÊÇÎȶ¨×´Ì¬ÏÂÿһ¸öConsumerʵÀýÖ»»áÏû·Ñijһ¸ö»ò¶à¸öÌØ¶¨PartitionµÄÊý¾Ý£¬¶øÄ³¸öPartitionµÄÊý¾ÝÖ»»á±»Ä³Ò»¸öÌØ¶¨µÄConsumerʵÀýËùÏû·Ñ¡£
Kafka¶ÔÏûÏ¢µÄ·ÖÅäÊÇÒÔPartitionΪµ¥Î»·ÖÅäµÄ¡£ÕâÑùÉè¼ÆµÄÁÓÊÆÊÇÎÞ·¨±£Ö¤Í¬Ò»¸öÏû·ÑÕß×éÀïµÄConsumer¾ùÔÈÏû·ÑÊý¾Ý£¬ÓÅÊÆÊÇÿ¸öConsumer²»Óö¼¸ú´óÁ¿µÄBrokerͨÐÅ£¬¼õÉÙͨÐÅ¿ªÏú£¬Í¬Ê±Ò²½µµÍÁË·ÖÅäÄѶȣ¬ÊµÏÖÒ²¸ü¼òµ¥¡£ÁíÍ⣬ÒòΪͬһ¸öPartitionÀïµÄÊý¾ÝÊÇÓÐÐòµÄ£¬ÕâÖÖÉè¼Æ¿ÉÒÔ±£Ö¤Ã¿¸öPartitionÀïµÄÊý¾Ý¿ÉÒÔ±»ÓÐÐòÏû·Ñ¡£
Èç¹ûijConsumer GroupÖÐConsumerÊýÁ¿ÉÙÓÚPartitionÊýÁ¿£¬ÔòÖÁÉÙÓÐÒ»¸öConsumer»áÏû·Ñ¶à¸öPartitionµÄÊý¾Ý£¬Èç¹ûConsumerµÄÊýÁ¿ÓëPartitionÊýÁ¿Ïàͬ£¬ÔòÕýºÃÒ»¸öConsumerÏû·ÑÒ»¸öPartitionµÄÊý¾Ý¡£¶øÈç¹ûConsumerµÄÊýÁ¿¶àÓÚPartitionµÄÊýÁ¿Ê±£¬»áÓв¿·ÖConsumerÎÞ·¨Ïû·Ñ¸ÃTopicÏÂÈκÎÒ»ÌõÏûÏ¢¡£
kafkarµÄRebalanceµÄËã·¨£º
½«Ä¿±êTopicϵÄËùÓÐPartirtionÅÅÐò£¬´æÓÚPT ¶ÔijConsumer GroupÏÂËùÓÐConsumerÅÅÐò£¬´æÓÚCG µÚi¸öConsumer¼ÇΪCi N=size(PT)/size(CG)£¬ÏòÉÏÈ¡Õû ½â³ýCi¶ÔÔÀ´·ÖÅäµÄPartitionµÄÏû·ÑȨ£¨i´Ó0¿ªÊ¼£© ½«µÚi?Nµ½£¨i+1£©?N?1¸öPartition·ÖÅ䏸Ci ·ÖÇøµÄËã·¨£º
·ÖÇøÊý=Tt/Max(Tp,Tc)
Tp:producerÍÌÍÂÁ¿ Tc:consumerÍÌÍÂÁ¿ TtÄ¿±êµÄÍÌÍÂÁ¿
Consumer¡ª¡ªLow Level ʹÓÃLow Level£¨Simple Consumer£©ÔÒòÊÇÓû§Ï£Íû±ÈConsumerGroup¸üºÃµÄ¿ØÖÆÊý¾ÝµÄÏû·Ñ£º
ͬһÌõÏûÏ¢Ïû·Ñ¶à´Î Ö»¶Áijһ¸ötopicϵĹ̶¨·ÖÇøÊý¾Ý ¹ÜÀíÊÂÎñ£¬Ä³Ò»ÌõÏûÏ¢½ö±»Ïû·ÑÒ»´Î ¶îÍ⹤×÷£º
±ØÐëÔÚÓ¦ÓóÌÐòÖиú×Ùoffset£¬´Ó¶øÈ·¶¨ÏÂÒ»ÌõÓ¦¸ÃÏû·ÑÄÄÌõÏûÏ¢ Ó¦ÓóÌÐòÐèҪͨ¹ý³ÌÐò»ñ֪ÿ¸öPartitionµÄLeaderÊÇË ±ØÐë´¦ÀíLeaderµÄ±ä»¯ ÓÉÓÚ²Ù×÷±È½Ï¸´ÔÓ£¬ËùÒÔÎÒÃÇÔÚÂú×ãÐèÇóµÄͬʱѡÔñʹÓÃHigh Level Consumer |