ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

kafkaѧϰ֮·(Ò»)¡ª¡ªÈëÃÅ
2018-11-13 16:36:57 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:146´Î
Tags£ºkafka Ï°Ö® ÈëÃÅ

Ò»¡¢ÈëÃÅ

1¡¢¼ò½é

Kafka ÊÇlinkedin ¹«Ë¾ÓÃÓÚÈÕÖ¾´¦ÀíµÄ·Ö²¼Ê½ÏûÏ¢¶ÓÁУ¬Í¬Ê±Ö§³ÖÀëÏߺÍÔÚÏßÈÕÖ¾´¦Àí¡£kafka ¶ÔÏûÏ¢±£´æʱ¸ù¾ÝTopic½øÐйéÀ࣬·¢ËÍÏûÏ¢Õß³ÉΪProducer,ÏûÏ¢½ÓÊÜÕß³ÉΪConsumer,´ËÍâkafka ¼¯ÈºÓжà¸ökafka ʵÀý×é³É£¬Ã¿¸öʵÀý(server)³ÆΪbroker¡£ÎÞÂÛÊÇkafka¼¯Èº£¬»¹ÊÇproducerºÍconsumer ¶¼ÒÀÀµÓÚzookeeper À´±£Ö¤ÏµÍ³¿ÉÓÃÐÔ£¬Îª¼¯Èº±£´æһЩmeta ÐÅÏ¢¡£

ÎÒÃÇÏÈÀ´¿´Ï¼¸¸öÏûÏ¢´«µÝϵͳµÄÊõÓ

¡¤Kafkaά»¤ÏûÏ¢Àà±ðµÄ¶«Î÷ÊÇÖ÷Ì⣨topic£©.

¡¤ÎÒÃdzƷ¢²¼ÏûÏ¢µ½KafkaÖ÷ÌâµÄ½ø³Ì½ÐÉú²úÕߣ¨producer£©.

¡¤ÎÒÃdzƶ©ÔÄÖ÷Ìâ¡¢»ñÈ¡ÏûÏ¢µÄ½ø³Ì½ÐÏû·ÑÕߣ¨consumer£©.

¡¤KafkaÊÇÓɶà¸ö·þÎñÆ÷×é³ÉµÄ»úÆ÷£¬Ã¿¸ö·þÎñÆ÷³Æ×÷´úÀí£¨broker£©

ÔڽϸߵIJã´ÎÉÏ¿´£¬Éú²úÕßͨ¹ýÍøÂç·¢ËÍÏûÏ¢µ½Kafka¼¯Èº£¬Kafka¼¯Èº½«ÕâЩÏûÏ¢Ìṩ¸øÏû·ÑÕߣ¬ÈçÏÂͼ£º

¼¼Êõ·ÖÏí

¿Í»§¶ËÓë·þÎñÆ÷Ö®¼äµÄͨÐÅͨ¹ýÒ»¸ö¼òµ¥µÄ¡¢¸ßÐÔÄܵġ¢ÓïÑÔÎ޹صÄTCP protocol. KafkaÓÐJava¿Í»§¶Ë£¬µ«Õâ¿Í»§¶ËÔںܶàÓïÑÔmany languagesÒ²ÊÇÓÐЧµÄ¡£


KafkaµÄÕûÌå¼Ü¹¹ÈçͼËùʾ¡£ÒòΪKafkaÄÚÔÚ¾ÍÊÇ·Ö²¼Ê½µÄ£¬Ò»¸öKafka¼¯ÈºÍ¨³£°üÀ¨¶à¸ö´úÀí¡£ÎªÁ˾ùºâ¸ºÔØ£¬½«»°Ìâ·Ö³É¶à¸ö·ÖÇø£¬Ã¿¸ö´úÀí´æ´¢Ò»»ò¶à¸ö·ÖÇø¡£¶à¸öÉú²úÕߺÍÏû·ÑÕßÄܹ»Í¬Ê±Éú²úºÍ»ñÈ¡ÏûÏ¢¡£



2¡¢Ö÷Ì⣨Topics£©¡¢ÈÕÖ¾£¨Logs£©


Ò»¸öTopic¿ÉÒÔÈÏΪÊÇÒ»ÀàÏûÏ¢£¬Ã¿¸ötopic ½«±»·Ö³É¶à¸öpartition(Çø),ÿ¸öpartition ÔÚ´æ´¢²ãÃæÊÇappend log Îļþ¡£Èκη¢²¼µ½´Ëpartition µÄÏûÏ¢¶¼»á±»Ö±½Ó×·¼Óµ½log ÎļþµÄβ²¿£¬Ã¿ÌõÏûÏ¢ÔÚÎļþÖеÄλÖóÆΪoffset£¨Æ«ÒÆÁ¿£©£¬offset Ϊһ¸ölongÐÍÊý×Ö£¬ËüÊÇΨһ±ê¼ÇÒ»ÌõÏûÏ¢¡£kafka ²¢Ã»ÓÐÌṩÆäËû¶îÍâµÄË÷Òý»úÖÆÀ´´æ´¢offset£¬ÒòΪÔÚkafka Öм¸ºõ²»ÔÊÐí¶ÔÏûÏ¢½øÐС°Ëæ»ú¶Áд¡±¡£

Ò»¸öÖ÷Ìâ¾ÍÊÇÏûÏ¢µÄÀà±ð»òÃû³Æ¡£¶Ôÿ¸öÖ÷Ì⣬Kafka¼¯Èº¶¼¹ÜÀí×ÅÒ»¸ö±»·ÖÇøµÄÈÕÖ¾£¬ÈçÏ£º

ÿ¸ö·ÖÇø¾ÍÊÇÒ»¸öÌá½»ÈÕÖ¾£ºÃ¿¸ö·ÖÇøÉϱ£´æ×Ų»¶Ï±»×·¼ÓµÄÏûÏ¢£¬ÕâЩÏûÏ¢ÊÇÓÐÐòµÄÇÒ˳Ðò²»¿É¸Ä±ä£»·ÖÇøÉϵÄÿ¸öÏûÏ¢¶¼±»·ÖÅäÁËÒ»¸öÐòÁкÅoffset£¬offsetΨһ±êʶÁË·ÖÇøÉϵÄÏûÏ¢¡£

ÔÚkafka ÖУ¬¼´Ê¹ÏûÏ¢±»Ïû·Ñ,ÏûÏ¢ÈÔÈ»²»»á±»Á¢¼´É¾³ý¡£ÈÕÖ¾Îļþ½«»á¸ù¾Ýbroker ÖеÄÅäÖÃÒªÇó,±£ÁôÒ»¶¨µÄʱ¼äÖ®ºóɾ³ý;±ÈÈçlog Îļþ±£Áô2 Ìì,ÄÇôÁ½Ììºó,Îļþ»á±»Çå³ý,ÎÞÂÛÆäÖеÄÏûÏ¢ÊÇ·ñ±»Ïû·Ñ¡£kafka ͨ¹ýÕâÖÖ¼òµ¥µÄÊÖ¶Î,À´ÊÍ·Å´ÅÅÌ¿Õ¼ä,ÒÔ¼°¼õÉÙÏûÏ¢Ïû·ÑÖ®ºó¶ÔÎļþÄÚÈݸĶ¯µÄ´ÅÅÌIO ¿ªÖ§¡£

¶ÔÓÚconsumer ¶øÑÔ,ËüÐèÒª±£´æÏû·ÑÏûÏ¢µÄoffset,¶ÔÓÚoffsetµÄ±£´æºÍʹÓÃ, ÓÉconsumer À´¿ØÖÆ; µ±consumer Õý³£Ïû·ÑÏûϢʱ,offset ½«»á"ÏßÐÔ"µÄÏòÇ°Çý¶¯,¼´ÏûÏ¢½«ÒÀ´Î˳Ðò±»Ïû·Ñ¡£ÊÂʵÉÏconsumer ¿ÉÒÔʹÓÃÈÎÒâ˳ÐòÏû·ÑÏûÏ¢,ËüÖ»ÐèÒª½«offset ÖØÖÃΪÈÎÒâÖµ¡£(offset ½«»á±£´æÔÚzookeeper ÖÐ,²Î¼ûÏÂÎÄ)

kafka¼¯Èº¼¸ºõ²»ÐèҪά»¤ÈκÎconsumerºÍproducer ״̬ÐÅÏ¢,ÕâЩÐÅÏ¢ÓÉzookeeper ±£´æ;Òò´ËproducerºÍconsumer µÄ¿Í»§¶ËʵÏַdz£ÇáÁ¿¼¶,ËüÃÇ¿ÉÒÔËæÒâÀ뿪,¶ø²»»á¶Ô¼¯ÈºÔì³É¶îÍâµÄÓ°Ïì¡£partitionsµÄÉè¼ÆÄ¿µÄÓжà¸ö¡£×î¸ù±¾Ô­ÒòÊÇkafka»ùÓÚÎļþ´æ´¢¡£Í¨¹ý·ÖÇø,¿ÉÒÔ½«ÈÕÖ¾ÄÚÈÝ·ÖÉ¢µ½¶à¸öserver ÉÏ,À´±ÜÃâÎļþ³ß´ç´ïµ½µ¥»ú´ÅÅ̵ÄÉÏÏÞ,ÿ¸öpartiton¶¼»á±»µ±Ç°server(kafkaʵÀý)±£´æ;¿ÉÒÔ½«Ò»¸ötopic ÇзֶàÈÎÒâ¶à¸öpartitionsÀ´±£´æÏûÏ¢¡£´ËÍâÔ½¶àµÄpartitions Òâζ×Å¿ÉÒÔÈÝÄɸü¶àµÄconsumer,ÓÐЧÌáÉý²¢·¢Ïû·ÑµÄÄÜÁ¦¡£(¾ßÌåÔ­Àí²Î¼ûÏÂÎÄ)¡£ÕâЩÌØÐÔ±íÃ÷£¬KafkaµÄÏû·ÑÕßÊǷdz£Á®¼ÛµÄ£¬Ò»¸öÏû·ÑÕߵĴ´½¨¡¢Ïú»Ù²»»á¶Ô¼¯Èº»òÆäËûÏû·ÑÕß²úÉú¶à´óµÄÓ°Ïì¡£

¶ÔÈÕÖ¾½øÐзÖÇøÓм¸¸öÄ¿µÄ£º

1¡¢À©ÈÝ£¬Ò»¸öÖ÷Ìâ¿ÉÒÔÓжà¸ö·ÖÇø£¬ÕâʹµÃ¿ÉÒÔ±£´æ±ÈÒ»¸ö»úÆ÷±£´æµÄ¶àµÄ¶àµÄÊý¾Ý¡£

2¡¢²¢ÐÐ


3¡¢·Ö²¼Ê½£¨Distribution£©

Ò»¸öTopic µÄ¶à¸öpartitions,±»·Ö²¼ÔÚkafka ¼¯ÈºÖеĶà¸öserver ÉÏ;ÿ¸öserver(kafka ʵÀý)¸ºÔðpartitionsÖÐÏûÏ¢µÄ¶Áд²Ù×÷;´ËÍâkafka »¹¿ÉÒÔÅäÖÃpartitions ÐèÒª±¸·ÝµÄ¸öÊý(replicas),ÿ¸öpartition ½«»á±»±¸·Ýµ½¶ą̀»úÆ÷ÉÏ,ÒÔÌá¸ß¿ÉÓÃÐÔ¡£

»ùÓÚreplicated£¨ÈßÓࣩ ·½°¸,ÄÇô¾ÍÒâζ×ÅÐèÒª¶Ô¶à¸ö±¸·Ý½øÐе÷¶È;ÿ¸öpartition¶¼ÓÐÒ»¸ö»úÆ÷Ϊ"leader";Áã¸ö»ò¶à¸ö»úÆ÷×÷Ϊfollower¡£leader ¸ºÔðËùÓеĶÁд²Ù×÷,followerÖ´ÐÐleaderµÄÖ¸Áî¡£Èç¹ûleader ʧЧ,ÄÇô½«»áÓÐÆäËûfollower À´½Ó¹Ü(³ÉΪеÄleader);followerÖ»Êǵ¥µ÷µÄºÍleader ¸ú½ø,ͬ²½ÏûÏ¢¼´¿É¡£Óɴ˿ɼû×÷Ϊleader µÄserver ³ÐÔØÁËÈ«²¿µÄÇëÇóѹÁ¦,Òò´Ë´Ó¼¯ÈºµÄÕûÌ忼ÂÇ,ÓжàÉÙ¸öpartitions¾ÍÒâζ×ÅÓжàÉÙ¸ö"leader",kafka»á½«"leader"¾ùºâµÄ·ÖÉ¢ÔÚÿ¸öʵÀýÉÏ,À´È·±£ÕûÌåµÄÐÔÄÜÎȶ¨¡£

1.·¢Ë͵½partitions ÖеÄÏûÏ¢½«»á°´ÕÕËü½ÓÊÕµÄ˳Ðò×·¼Óµ½ÈÕÖ¾

ÖС£

2.¶ÔÓÚÏû·ÑÕ߶øÑÔ,ËüÃÇÏû·ÑÏûÏ¢µÄ˳ÐòºÍÈÕÖ¾ÖÐÏûϢ˳ÐòÒ»Ö¡£

3.Èç¹ûTopic µÄ"replicationfactor"£¨±¸·ÝÒò×Ó£©ÎªN,ÄÇôÔÊÐíN-1 ¸ökafka

ʵÀýʧЧ¡£


4¡¢Éú²úÕߣ¨Producers£©

Producer ½«ÏûÏ¢·¢²¼µ½Ö¸¶¨µÄTopicÖÐ,ͬʱProducer Ò²Äܾö

¶¨½«´ËÏûÏ¢¹éÊôÓÚÄĸöpartition;Õâ¿ÉÒÔͨ¹ý¼òµ¥µÄÑ­»·µÄ·½Ê½À´ÊµÏÖ£¬»òÕßʹÓÃһЩ·ÖÇø·½·¨£¨±ÈÈç¸ù¾ÝÏûÏ¢µÄkeyÀ´·ÖÇø£©


5¡¢Ïû·ÑÕߣ¨Consumers£©

´«Í³µÄÏûÏ¢´«µÝÓÐÁ½ÖÖ·½Ê½£º ¶ÓÁз½Ê½£¨queuing£©¡¢·¢²¼-¶©ÔÄ£¨publish-subscribe£©·½Ê½.

¶ÓÁз½Ê½£ºÒ»×éÏû·ÑÕß´Ó»úÆ÷É϶ÁÏûÏ¢£¬Ã¿¸öÏûÏ¢Ö»´«µÝ¸øÕâ×éÏû·ÑÕßÖеÄÒ»¸ö¡£

·Ö²¼-¶©ÔÄ·½Ê½£ºÏûÏ¢±»¹ã²¥µ½ËùÓеÄÏû·ÑÕß¡£KafkaÌṩÁËÒ»¸öÏû·Ñ×飨consumer group£©µÄ˵·¨À´¸ÅÀ¨ÕâÁ½ÖÖ·½Ê½¡£

Ïû·ÑÕ߶¼ÊôÓÚÒ»¸öÏû·Ñ×é;·´¹ýÀ´Ëµ,ÿ¸öÏû·Ñ×éÖпÉÒÔÓжà¸öÏû·ÑÕß¡£·¢Ë͵½TopicµÄÏûÏ¢,Ö»»á±»¶©ÔÄ´ËTopicµÄÿ¸öÏû·Ñ×éÖеÄÒ»¸öÏû·Ñ×éÏû·Ñ¡£Èç¹ûËùÓеÄÏû·ÑÕ߶¼¾ßÓÐÏàͬµÄÏû·Ñ×é,ÕâÖÖÇé¿öºÍqueueģʽºÜÏñ;ÏûÏ¢½«»áÔÚconsumersÖ®¼ä¸ºÔؾùºâ¡£Èç¹ûËùÓеÄconsumer ¶¼¾ßÓв»Í¬µÄgroup,ÄÇÕâ¾ÍÊÇ"·¢²¼-¶©ÔÄ"£¬ÏûÏ¢½«»á¹ã²¥¸øËùÓеÄÏû·ÑÕß¡£

ÔÚkafka ÖÐ,Ò»¸öpartition ÖеÄÏûÏ¢Ö»»á±»group ÖеÄÒ»¸öconsumer Ïû·Ñ;ÿ¸ögroup ÖÐconsumer ÏûÏ¢Ïû·Ñ»¥Ïà¶ÀÁ¢;ÎÒÃÇ¿ÉÒÔÈÏΪһ¸ögroup ÊÇÒ»¸ö"¶©ÔÄ"Õß,Ò»¸öTopic ÖеÄÿ¸öpartions,Ö»»á±»Ò»¸ö"¶©ÔÄÕß"ÖеÄÒ»¸öconsumerÏû·Ñ,²»¹ýÒ»¸öconsumer ¿ÉÒÔÏû·Ñ¶à¸öpartitions ÖеÄÏûÏ¢¡£kafkaÖ»Äܱ£Ö¤Ò»¸öpartitionÖеÄÏûÏ¢±»Ä³¸öconsumer Ïû·Ñʱ,ÏûÏ¢ÊÇ˳ÐòµÄ¡£ÊÂʵÉÏ,´ÓTopic ½Ç¶ÈÀ´Ëµ,ÏûÏ¢ÈÔ²»ÊÇÓÐÐòµÄ¡£kafka µÄÉè¼ÆÔ­Àí¾ö¶¨,¶ÔÓÚÒ»¸ötopic,ͬһ¸ögroup Öв»ÄÜÓжàÓÚpartitions ¸öÊýµÄconsumer ͬʱÏû·Ñ,·ñÔò½«Òâζ×ÅijЩconsumer ½«ÎÞ·¨µÃµ½ÏûÏ¢¡£


¼¼Êõ·ÖÏí

1.Kafka½«Ö÷ÌâϵķÖÇø·ÖÅä¸øÏû·Ñ×éÀïµÄÏû·ÑÕߣ¬Ã¿¸ö·ÖÇø±»Ò»¸öÏû·ÑÕßÏû·Ñ

2.Ïû·ÑÕßµÄÊýÁ¿²»Äܳ¬¹ý·ÖÇøÊý

3.KafkaÖ»Äܱ£Ö¤·ÖÇøÄÚµÄÏûÏ¢ÊÇÓÐÐòµÄ

4.Èç¹ûÄãÏëÒªÏûÏ¢ÊÇÈ«¾ÖÓÐÐòµÄ£¬Äã¿ÉÒÔÉèÖÃÖ÷ÌâÖ»ÓÐÒ»¸ö·ÖÇø£¬Í¬Ê±ÕâÒâζ×ÅÖ»ÄÜÓÐÒ»¸öÏû·ÑÕß

Éú²úÕß·¢Ë͵ÄÏûÏ¢°´ÕÕËüÃÇ·¢Ë͵Ä˳Ðò×·¼Óµ½Ö÷Ìâ

Ïû·ÑÕß¿´µ½ÏûÏ¢µÄ˳Ðò¾ÍÊÇÏûÏ¢ÔÚÈÕÖ¾Öд洢µÄ˳Ðò

ÓÉ´Ë¿ÉÒԵõ½ KafkaÓ봫ͳÏûϢϵͳÏà±È£¬ÓÐÒÔϲ»Í¬£º

¡¤Ëü±»Éè¼ÆΪһ¸ö·Ö²¼Ê½ÏµÍ³£¬Ò×ÓÚÏòÍâÀ©Õ¹£»

¡¤ËüͬʱΪ·¢²¼ºÍ¶©ÔÄÌṩ¸ßÍÌÍÂÁ¿£»

¡¤ËüÖ§³Ö¶à¶©ÔÄÕߣ¬µ±Ê§°ÜʱÄÜ×Ô¶¯Æ½ºâÏû·ÑÕߣ»

¡¤Ëü½«ÏûÏ¢³Ö¾Ã»¯µ½´ÅÅÌ£¬Òò´Ë¿ÉÓÃÓÚÅúÁ¿Ïû·Ñ£¬ÀýÈçETL£¬ÒÔ¼°ÊµÊ±Ó¦ÓóÌÐò¡£



Ô­Îijö´¦£ºhttp://blog.csdn.net/tanggao1314/article/details/51927081

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºStorm 0.9.3µÄÐÂÌØÐÔ ÏÂһƪ£ºKafkaѧϰ±Ê¼Ç1£º¸ÅÄî

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿