΢·þÎñ¼Ü¹¹½â¾öÁ˺ܶàÎÊÌ⣬µ«ÊÇͬʱÒýÈëÁ˺ܶàÎÊÌâ¡£±¾ÎÄҪ̽ÌÖµÄÊÇÈçºÎ½â¾öÏÂÃæÕ⼸¸öÎÊÌâ¡£
ÓдóÁ¿µÄͬ²½ RPC ÒÀÀµ£¬ÈçºÎ±£Ö¤×ÔÉíµÄ¿É¿¿ÐÔ£¿
ÒÀÀµµÄ΢·þÎñµ÷ÓÃʧ°ÜÁË£¬ÎÒÓ¦¸Ãʧ°Ü£¬»¹Êdzɹ¦¡£ÒÀÀµºÜ¶àÍⲿ·þÎñÖ®ºó£¬×ÔÉíÈçºÎ±£ÕÏÎȶ¨ÐÔ¡£Èç¹ûËùÓÐÒÀÀµµÄ·þÎñ³É¹¦£¬ÎÒ²ÅËã³É¹¦£¬×ÔÉíµÄÎȶ¨ÐԾͿ°ÓÇÁË¡£

RPC µ÷ÓÃʧ°Ü£¬½µ¼¶´¦ÀíÖ®ºóÈçºÎ±£Ö¤Êý¾Ý¿ÉÐÞ¸´£¿
Èç¹ûµ÷ÓÃʧ°Üʱ£¬Ñ¡ÔñÌø¹ý¡£ÄÇôÒò´Ë²úÉúµÄÊý¾Ý²»Ò»ÖÂÐÔÎÊÌâÈçºÎÐÞ¸´£¿Æ½Ê±Ã«Ã«Ó꣬¿ÉÒÔºöÂÔ¡£µ«ÊÇ´ó¹ÊÕÏÖ®ºó£¬È˹¤»¹ÊÇÒªÀ´²Áƨ¹ÉµÄ£¬Õâ¸ö³É±¾¾ÍÌØ±ð¸ß¡£Ê¹ÓÃÏûÏ¢¶ÓÁеÄ×î´óµÄÒâÒåÊÇÔÚÈÃÏûÏ¢¿ÉÒÔÔÚ¹ÊÕϵÄʱºò¶Ñ»ýÆðÀ´£¬µÈ¹ÊÕϻָ´ÁËÔÙÂýÂýÀ´´¦Àí£¬¼õÉÙÈ˹¤½éÈëµÄ³É±¾¡£

ÏûÏ¢¶ÓÁÐÊÇÒ»¸öRPCÖ÷Á÷³ÌµÄÅÔ·Á÷³Ì£¬Ôõô±£Ö¤¿É¿¿ÐÔ£¿
ÒÀÀµÏûÏ¢¶ÓÁÐ×öϵͳ½âñîµÄʱºò£¬Ôõôȷ±£ÏûÏ¢×ÔÉíÊǿɿ¿Èë¶ÓÁеģ¿ÏûÏ¢ÊÇ·ñÐèÒªÏȿɿ¿Ð´Èë¶ÓÁУ¬È»ºóÔÙÌá½»Êý¾Ý¿âÊÂÎñ£¿Èç¹ûÏûÏ¢±ØÐëÏÈдÈë¶ÓÁУ¬±ÈÈç
kafka¡£µ«ÊÇ kafka ¹ÒÁËÔõô°ì£¿ÄÇÎÒÔÚÏßÒµÎñÆñ²»±»ÀëÏߵĶÓÁиøÁ¬ÀÛÁË£¿

ÏûÏ¢¶ÓÁÐÔõô±£³ÖÓëÊý¾Ý¿âµÄÊÂÎñÒ»Ö£¿
Èç¹ûÏûÏ¢ÊÇÏÈдÈë¶ÓÁУ¬È»ºóÊý¾Ý¿âÌá½»ÊÂÎñ¡£ÄÇô¾Í»áÓÐÒòΪ²¢·¢Ð޸ĵÄÇé¿öÏ£¬Êý¾Ý¿âÌύʧ°Ü£¬µ«ÊÇÏûÏ¢ÒѾдÈëµ½¶ÓÁеÄÇé¿ö¡£Èç¹û¶ÓÁкóÃæ¹ÒÁ˽±ÀøµÈÒµÎñÁ÷³Ì£¬Õâ¸öʱºò¾Í»áµ¼ÖÂ´í·¢£¬»òÕßÒªÇó½±ÀøÄDZßÈ¥ÔÙ²éÒ»±éÊý¾Ý¿âµÄ״̬¡£µ«ÊÇÈç¹ûÏÈÌá½»Êý¾Ý¿âÊÂÎñ£¬ºóдÈë¶ÓÁУ¬ÓÖÎÞ·¨Ñϸñ±£Ö¤¶ÓÁÐÀïµÄÏûÏ¢ÊÇûÓжªÊ§µÄ¡£

ÕâЩÎÊÌâÊÇËùÓлìÓÃÁË RPC ºÍÒì²½¶ÓÁеÄÒµÎñ¶¼»áÓöµ½µÄÆÕ±éÎÊÌâ¡£ÕâÀïÎÒ¸øÒ»¸öÌá°¸À´½â¾öÒÔÉϵÄËùÓÐÎÊÌâ¡£
ͬ²½×ªÒì²½£¬½â¾öÎȶ¨ÐÔÎÊÌâ
ÔÚÆ½Ê±µÄʱºò£¬¶¼ÊÇ RPC ͬ²½µ÷Óá£Èç¹ûµ÷ÓÃʧ°ÜÁË£¬Ôò×Ô¶¯°Ñͬ²½µ÷Óýµ¼¶ÎªÒì²½µÄ¡£ÏûÏ¢´Ëʱ½øÈë¶ÓÁУ¬È»ºóÒì²½±»ÖØÊÔ¡£ËùÒÔ´¦ÀíÏÂÓÎÒÀÀµ¾Í±ä³ÉÁËÈýÖÖ¿ÉÄÜÐÔ
ÍêȫǿÒÀÀµ£¬ÏÂÓβ»ÄܹÒ
ÒòΪÎҵķµ»ØÖµÒÀÀµÁËij¸öÏÂÓεĴ¦Àí½á¹û£¬ÎÒ±ØÐëͬ²½µ÷ÓÃËü¡£µ«ÊDz»ÊÇÇ¿ÒÀÀµ£¬¿É½µ¼¶¡£½µ¼¶Ê±²»·µ»ØÕⲿ·ÖµÄÊý¾Ý¡£Í¬²½µ÷Óýµ¼¶Ê±×ªÎªÒì²½µÄ¡£
ÍêÈ«Òì²½»¯¡£ÏÂÓηþÎñÖ»ÊÇÏû·ÑÎÒдÈëµÄ¶ÓÁУ¬ÎÒ²»ÓëÖ®Ö±½ÓRPCͨÐÅ

°ÑÏûÏ¢¶ÓÁзÅÈëµ½Ö÷Á÷³Ì
Èç¹ûÒª°ÑÖØÒªµÄÒµÎñÂß¼¹ÒÔÚÏûÏ¢¶ÓÁкóÃæ¡£±ØÐëÒª±£Ö¤ÏûÏ¢¶ÓÁÐÀïµÄÊý¾ÝµÄÍêÕûÐÔ£¬²»ÄÜÓжªÊ§µÄÇé¿ö¡£ËùÒÔ²»ÄÜÊǰÑÏûÏ¢¶ÓÁеÄдÈë×÷Ϊһ¸öÅÔ·µÄÂß¼¡£Èç¹ûÏûÏ¢¶ÓÁÐдÈëʧ°Ü»òÕß³¬Ê±£¬¶¼Ó¦¸ÃÖ±½Ó·µ»Ø´íÎ󣬶ø²»ÊÇÔÊÐí¼ÌÐøÖ´ÐС£
Kafka µÄÎȶ¨ÐÔºÍÑÓ³Ùʱ³£²»ÄÜÂú×ãÔÚÏß·þÎñµÄÐèÒª¡£±ÈÈçÈç¹ûÒª¿É¿¿Ð´ÈëÈý¸±±¾£¬Kafka
ÐèÒªµÈ´ý¶à¸ö broker µÄÓ¦´ð£¬Õâ¸öÑÓ³Ù¿ÉÄÜ»áÓбȽϴóµÄ²¨¶¯¡£ÔÚÎÞ·¨¼°Ê±Ð´ÈëµÄÇé¿ö£¬ÎÒÃÇÐèҪʹÓñ¾µØÎļþ³äµ±Ò»¸ö»º³å¡£Êµ¼ÊÉÏÊÇͨ¹ýÒýÈë±¾µØÎļþ¶ÓÁнáºÏÔ¶³Ì·Ö²¼Ê½¶ÓÁй¹³ÉÒ»¸ö¿ÉÓÃÐÔ¸ü¸ß£¬ÑÓ³Ù¸üµÍµÄ×éºÏ¶ÓÁз½°¸¡£Õâ¸ö±¾µØµÄ¶ÓÁÐÈç¹ûÄÜ·â×°µ½Ò»¸ö
Kafka µÄ Agent ×÷Ϊ±¾µØÐ´ÈëµÄ´úÀí£¬ÄÇÊÇ×îÀíÏëµÄʵÏÖ·½Ê½¡£

±£ÕÏÊý¾Ý¿âÓë¶ÓÁеÄÊÂÎñÒ»ÖÂÐÔ
ÐèÇóÊǵ±Êý¾Ý¿âµÄÊÂÎñ³É¹¦Ê±£¬ÏûÏ¢Ò»¶¨Òª±£Ö¤Ð´ÈëÁ˶ÓÁÐÀï¡£Èç¹ûÊý¾Ý¿âµÄÊÂÎñʧ°Ü£¬ÏûÏ¢²»Ó¦¸Ã³öÏÖÔÚ¶ÓÁÐÀï¡£ËùÒԿ϶¨²»ÄÜÏÈд¶ÓÁУ¬ÔÙдÊý¾Ý¿â£¬·ñÔòÒªÈÃ
Kafka Ö§³ÖÏûÏ¢µÄ»Ø¹ö£¬Õâ»áÊÇÒ»¸öºÜÂé·³µÄÊÂÇé¡£ÄÇô¾ÍÒª·À·¶ÕâôÁ½ÖÖÇé¿ö
Êý¾Ý¿âдÈë³É¹¦¡£È»ºóд¶ÓÁУ¬µ«ÊǶÓÁÐдÈëʧ°Ü¡£·µ»Ø´íÎó£¬ÈÃÉÏÓÎÖØÊÔ¡£µ«ÊÇÉÏÓοÉÄÜ»á·ÅÆú£¬µ¼ÖÂÏûÏ¢¶ªÊ§¡£
Êý¾Ý¿âдÈë³É¹¦¡£È»ºóÈ«»ú·¿¶ÏµçÁË¡£
ÕâÁ½ÖÖÇé¿ö϶¼»á³öÏÖÏûϢûÓÐдÈë¶ÓÁеÄÇé¿ö¡£ÈçºÎ½ö½öÒÀ¿¿ Kafka ºÍ Mysql ÕâÁ½¸ö×é¼þ£¬ÊµÏÖÊý¾Ý¿âÓë¶ÓÁеÄÊÂÎñÒ»ÖÂÐÔÄØ£¿¹¹ÏëÈçÏÂ
ËùÓÐÇëÇó£¬ÏÈдÈëµ½ write-ahead-queue Õâ¸ö topic¡£Èç¹ûÕâ¸öÏûÏ¢¾ÍдÈëʧ°Ü£¬Ö±½Ó·µ»Ø´íÎó¸øµ÷Ó÷½£¬ÈÃÆäÖØÊÔ¡£
´¦ÀíÊý¾Ý¿âÊÂÎñ
Èç¹ûÊý¾Ý¿âÊÂÎñʧ°Ü¡£ÔòÒÆ¶¯ write-ahead-queue µÄ offset£¬´ú±íÕâ¸öÇëÇóÒѾ±»´¦ÀíÍê±Ï¡£
Èç¹ûÊý¾Ý¿âÊÂÎñ³É¹¦¡£Ôò½ÓÏÂÀ´Ð´ business-event-queue Õâ¸ö topic
Èç¹ûдÈë¶ÓÁгɹ¦¡£ÔòÒÆ¶¯ write-ahead-queue µÄ offset£¬´ú±íÕâ¸öÇëÇóÒѾ±»´¦ÀíÍê±Ï¡£
Èç¹ûдÈë¶ÓÁÐʧ°Ü£¬·µ»Ø³É¹¦¸øµ÷Ó÷½¡£È»ºóÒì²½È¥ÖØÊÔдÈë business-event-queue Õâ¸ö
topic
ÔÚÊý¾Ý¿âÊÂÎñ³É¹¦µ½ÏûϢдÈëµ½business-event-queueÕâ¸ötopicÖм䣬write-ahead-queue
µÄ offset ¶¼ÊÇûÓб»Òƶ¯µÄ¡£Ò²¾ÍÊÇÈç¹ûÕâ¸ö¹ý³Ì±»Öжϣ¬¿ÉÒÔ´Ó write-ahead-queue
»Ö¸´»ØÀ´¡£
¾¹ýÖØÊÔ£¬×îÖÕ business-event-queue дÈë³É¹¦¡£Õâ¸öʱºòÒÆ¶¯ write-ahead-queue
µÄ offset£¬±ê¼ÇÕâ¸öÇëÇó±»´¦ÀíÍê±Ï
Ò²¾ÍÊÇ˵£¬Í¨¹ýÒýÈë write-ahead-queue£¬ÒÔ¼°¿ØÖÆÕâ¸ö
topic µÄ offset λÖã¬À´±ê¼ÇÍêÕûµÄ·Ö²¼Ê½ÊÂÎñÊÇ·ñÒѾ±»´¦ÀíÍê³É¡£ÔÚ¹ýÈ¥£¬Õâ¸ö´¦ÀíÊÇ·ñÍê³ÉÊÇÒÔÊý¾Ý¿âµÄÊÂÎñΪ±ê×¼µÄ£¬Ã»Óа취±£ÕÏÊý¾Ý¿âÊÂÎñÖ®ºó·¢ÉúµÄÊÂÇéµÄ±ØÈ»·¢Éú¡£
 ËäÈ»¿´ÉÏÈ¥ºÜ¸´ÔÓ¡£µ«ÊÇÕâ¸öÁ¬Á½½×¶ÎÌá½»¶¼²»ÊÇ£¬ÒòΪûÓлعöµÄÐèÇó£¬Ö»ÒªÊý¾Ý¿âдÈë³É¹¦£¬ÏûÏ¢¶ÓÁÐдÈëÎÞÂÛÈçºÎ¶¼Òª³É¹¦¡£Õû¸ö·½°¸µÄ¹Ø¼üÊÇͨ¹ý
write-ahead-queue µÄдÈëºÍoffsetµÄÒÆ¶¯ÕâÁ½¸ö¶¯×÷£¬±ê¼ÇÁËÒ»¸ö·Ö²¼Ê½ÊÂÎñµÄ·¶Î§¡£Ö»ÒªÕâ¸ö¹ý³ÌûÓÐÍêÈ«×öÍ꣬¾Í»áͨ¹ý²»¶ÏÖØÊÔ
write-ahead-queue µÄ·½Ê½±£Ö¤Æä×îÖջᱻÍêÕûÖ´ÐС£
ÔÚûÓÐ write-ahead-queue µÄʱºò£¬ÎÒÃÇµÄ RPC Ö´Ðйý³ÌÊÇÕâÑùµÄ

Õâ¸ö´®Ðйý³Ì£¬ÒòΪûÓб£»¤£¬ËùÒÔ¿ÉÄܱ»Öжϣ¬²»Äܱ»È·±£ÍêÕûÖ´ÐС£ÒýÈë write-ahead-queue
µÄÄ¿µÄ¾ÍÊÇÈÃÕâ¸ö¹ý³Ì±äµÃ¿É¿¿

Write-Ahead-Queue µÄ Offset ¹ÜÀí
Ç°ÃæµÄÊÂÎñ·½°¸µÄ¼ÙÉèÊÇÕû¸ö´¦Àí¹ý³Ì£¬¶ÔÓÚÒ»¸ö Kafka µÄPartition ÊǶÀÕ¼µÄ¡£ÕâÒ²¾ÍÒâζ×ÅÓжàÉÙ¸ö
RPC µÄ²¢·¢´¦ÀíỊ̈߳¨»òÕßг̣©¾ÍÐèÒªÓжàÉÙ¸ö¶ÔÓ¦µÄ Partition À´¸ú×Ù¶ÔÓ¦Ï̵߳Ĵ¦Àí״̬¡£ÕâÑù¾Í»á±äµÃºÜ²»¾¼Ã£¬ÐèÒª¿ª´óÁ¿µÄ
Kafka Partition¡£µ«ÊÇÈç¹ûÈöà¸ö RPC Ï̹߳²ÏíÒ»¸ö Kafka Partition£¬ÄÇôÓÉËÀ´Òƶ¯
Offset À´±ê¼ÇÊÂÎñµÄÖ´Ðгɹ¦ÄØ£¿ÕâÀï¾ÍÐèÒªÒýÈëÒ»¸ö Offset ¹ÜÀíÕߣ¬À´È¥Ðµ÷¶à¸ö RPC Ï̵߳Ä
Offset µÄÒÆ¶¯¡£
RPC Ïß³Ì1£¬Ð´ÈëÁË WAL1 (Write-Ahead-Log)£¬Æä Offset Ϊ 1
RPC Ïß³Ì2£¬Ð´ÈëÁË WAL2£¬Æä Offset Ϊ 2
RPC Ïß³Ì3£¬Ð´ÈëÁË WAL3£¬Æä Offset Ϊ 3
RPC Ïß³Ì3Ö´ÐÐÍê±Ï£¬Óû°ÑWAL3±ê¼ÇΪִÐгɹ¦£¬Òƶ¯Offsetµ½3¡£µ«ÊÇÒòÎªÇ°Ãæ1ºÍ2£¬»¹Ã»ÓÐÖ´Ðгɹ¦£¬Õâ¸öʱºòOffset²»Äܱ»Òƶ¯¡£
RPC Ïß³Ì1Ö´ÐÐÍê±Ï£¬Óû°ÑWAL1±ê¼ÇΪִÐгɹ¦£¬Òƶ¯Offsetµ½1¡£ÒòÎªÇ°ÃæÃ»ÓÐÉÐδִÐÐÍê³ÉµÄWAL£¬ËùÒÔÕâ¸öʱºòOffset±»Òƶ¯µ½1³É¹¦¡£
RPC Ïß³Ì2Ö´ÐÐÍê±Ï£¬Óû°ÑWAL2±ê¼ÇΪִÐгɹ¦£¬Òƶ¯Offsetµ½2¡£ÒòΪºóÃæµÄ3ÒѾ±»Ö´ÐÐÍêÁË£¬ËùÒÔOffset±»Ö±½Ó¸üÐÂΪ3¡£
Õâ¸ö´¦ÀíÂß¼ºÍ TCP µÄ´°¿ÚÒÆ¶¯Âß¼ÊǷdz£ÀàËÆµÄ¡£ÓÃÕâÖÖ·½Ê½£¬´ó¸Å¾ÍÊÇÒ»¸öRPCµÄ½ø³Ì£¬¶ÔÓ¦Ò»¸ökafkaµÄpartitionÈ¥¸ú×ÙËüµÄ´¦ÀíÁ÷³Ì¡£Ï൱ÓÚ¸ø
RPC ¿ò¼Ü£¬¼ÓÁËÒ»¸ö WAL µÄ±£»¤£¬ÓÃÓÚ±£Ö¤ RPC Á÷Á¿»á±»ÍêÕûµØÅÜÍê¡£
 ÆäËû·½°¸
ʵÏÖ¿çÊý¾Ý¿âºÍÏûÏ¢¶ÓÁеÄÊÂÎñÒ»ÖÂÐÔ£¬»¹ÓÐÁ½ÖÖ×ö·¨£º
È¥ÄĶùÍø£¬ÀûÓÃÊý¾Ý¿â×÷Ϊ¶ÓÁУ¬È»ºóÓÃÊý¾Ý¿âµÄ¶à±íÊÂÎñÀ´±£ÕÏÒ»ÖÂÐÔ£ºÉè¼ÆÏûÏ¢Öмä¼þʱÎÒ¹ØÐÄʲô?(½âÃܵçÉÌÊý¾ÝÒ»ÖÂÐÔÓëÍêÕûÐÔʵÏÖ,º¬PPT)
ÌÔ±¦ Notify£¬ÀûÓÃÁ½½×¶ÎÌá½»µÄÏûÏ¢ broker À´ÊµÏÖ£ºÌÔ±¦µÄÏûÏ¢Öмä¼þ(2013) - taowen
- SegmentFault
Á½ÖÖʵÏÖ¶¼ÐèÒªÓà mysql À´×÷ΪÏûÏ¢Öмä¼þ£¬ÒýÈëÁ˱ȽϸߵÄÔËά³É±¾¡£
×ܽá
Ç°Ãæ¸øÁËÈý¸ö¶ÀÁ¢µÄ¼¼Êõ·½°¸
ʹÓÃͬ²½×ªÒì²½µÄ·½°¸£¬Ìá¸ßͬ²½ RPC µÄ¿ÉÓÃÐÔ£¬Í¬Ê±Ìá¸ßÊý¾ÝÒ»ÖÂÐÔ¡£
ÒýÈë±¾µØ¶ÓÁÐ×÷Ϊ¶µµ×£¬Ìá¸ßÏûÏ¢¶ÓÁеÄ×ÜÌå¿ÉÓÃÐÔ£¬ÒÔ¼°½µµÍÑÓ³Ù¡£
ͨ¹ýÒýÈëÁ½¼¶¶ÓÁУ¬Èà Write-Ahead-Queue À´±£Ö¤ Business-Event-Queue
Ò»¶¨»áÔÚÊý¾Ý¿âÊÂÎñ³É¹¦Ö®ºó±»Ð´Èë¡£
ÎÒÃÇÖ»ÐèÒª°ÑÕâÈý¸ö¶ÀÁ¢µÄ·½°¸½áºÏµ½Ò»Æð£¬¾Í¿ÉÒ԰ѶÓÁм¼ÊõÓ¦Óõ½´¿ RPC ͬ²½×éºÏµÄ΢·þÎñ¼¯ÈºÀÓÃÓÚÌá¸ß¿ÉÓÃÐÔºÍÊý¾ÝµÄÒ»ÖÂÐÔ¡£Í¬Ê±¿ÉÒÔ±£Ö¤Õâ·ÝÏûÏ¢Êý¾ÝÊǿɿ¿µÄ£¬´Ó¶ø¸øÆäËûµÄÒµÎñÂß¼°Ñ×Ô¼º·ÅÔÚ¶ÓÁкóÃæ£¬½¨Á¢ÁËǰÌáÌõ¼þ¡£
|