| ǰÑÔ
TwitterÿÃë»á²úÉúÒÚ¼¶µÄʼþÊý¾Ý¡£ÈçºÎʵʱ¡¢¸ßЧµØ³Ö¾Ã»¯´æ´¢ºÍ´«µÝÕâЩÊý¾Ý³ÉΪһ¸ö¾Þ´óµÄÌôÕ½¡£Îª´Ë£¬TwitterÉè¼Æ²¿ÊðÁËÐÂÒ»´úµÄʵʱÊý¾Ýƽ̨¡£ÐµÄʵʱÊý¾Ýƽ̨ÓÉApache
DistributedLog À´Ö§³Å¡£Apache DistributedLogÊÇÒ»¸öµÍÑÓʱ£¨ºÁÃë¼¶£©¡¢¸ßÍÌ͵ķֲ¼Ê½¸´ÖÆÈÕÖ¾Á÷ϵͳ¡£
DistributedLogÒѾÔÚTwitterµÄÏßÉÏÔËÐÐÁËÈýËÄÄ֧꣬³Ö´Ó·Ö²¼Ê½Êý¾Ý¿â¡¢ÊµÊ±ËÑË÷ÒýÇæ¡¢¿ç»ú·¿Êý¾Ýͬ²½µ½ÊµÊ±Á÷¼ÆËãµÈ¶àÖÖÒµÎñ¡£DistributedLogÿÌìΪTwitter´«µÝ1.5
trillionÌõ¼Ç¼£¨ºÏ17.5 PBÊý¾Ý£©£¬²¢ÇÒÓÚ2016Äê5Ô¿ªÔ´£¬ÒýÆðÁËÉçÇøµÄ¹ã·º¹Ø×¢¡£
ΪʲôÑз¢DistributedLog£¿
TwitterµÄʵʱÊý¾ÝÔÚ2012ÄêµÄʱºòÖ÷ÒªÓÐÁ½Ì×ϵͳÀ´Ö§³Ö£¬Ò»¸öÊÇKestrel£¨Twitter×ÔÑеķֲ¼Ê½ÏûÏ¢¶ÓÁУ©£¬ÁíÒ»¸öÊÇKafka
0.7¡£Kestrel×÷ΪµÍÑÓʱµÄÏûÏ¢¶ÓÁУ¬Ö÷ÒªÓÃÔÚÏñTweets¡¢Timeline¡¢FanoutµÈÔÚÏߺËÐÄ·þÎñ£¬ÒÔ¼°TwitterµÄÊý¾Ý¿âÖмä¼þ£¨Gizzard£©ÖУ»
KafkaÖ÷ÒªÓÃÔÚÀëÏßµÄÈÕÖ¾¡¢Ê¼þµÄÊÕ¼¯ºÍ·ÖÎö£¬ÓëTwitter Storm½áºÏʹÓÃÓÚʵʱÁ÷¼ÆËã¡£³ýÁËKestrelºÍKafkaÖ®Í⣬»¹ÓÐһЩϵͳʹÓÃMySQL×÷ΪAppend-OnlyµÄÊý¾Ý±íÀ´½øÐÐÏûÏ¢µÄͶµÝ¡£
Ëæ×ÅTwitter¹æÄ£µÄÔö¼Ó£¬KestrelºÍKafka´øÀ´ÁËһЩÎÊÌâ¡£Ê×ÏÈ£¬ÕâÁ½¸öϵͳ¶¼Ê¹Óüòµ¥µÄÎļþ´æ´¢ÏûÏ¢¶ÓÁлòÕßTopicÖеÄÊý¾Ý£¬ÆäÐÔÄÜÑÏÖØÒÀÀµÓÚÎļþϵͳµÄPage
Cache¡£Ëæ×ŶÓÁлòÕßTopicÊýÁ¿µÄÔö¼Ó£¬»òÕßÔÚÏû·ÑÕßÂäºóÓÚÉú²úÕߵij¡¾°Ï£¬Ëæ»úI/OÒÔ¼°Page
CacheµÄ»»Èë»»³ö»áÑÏÖØÓ°ÏìÕû¸öϵͳµÄÐÔÄÜ£¬´Ó¶ø½«Õû¸ö¼¯Èº´øÈëÒ»¸öºÜÄѻָ´µÄ״̬¡£
Æä´Î£¬ÕâÁ½¸öϵͳ¶¼²»Ö§³ÖÑϸñÒâÒåÉϵij־û¯£¨Ò²¾ÍÊÇ£¬Êý¾Ý²»ÂäÅÌд£©ºÍ¶à¸±±¾¸´ÖÆ£¬´æÔÚ¶ªÊý¾ÝµÄ¿ÉÄÜÐÔ¡£×îºó£¬¶àÌ×ϵͳҲ´øÀ´ÁËÏà¶Ô±È½Ï·±ÖصÄά»¤´ú¼Û¡£
Ò²¾ÍÔÚÄÇʱ£¬ÎÒÃÇ¿ªÊ¼Ê¹ÓÃApache BookKeeperÀ´¹¹½¨¸´ÖÆÊ½ÈÕÖ¾À´ÊµÏÖMahattan£¨TwitterµÄ·Ö²¼Ê½Êý¾Ý¿â£©µÄǿһÖÂÐÔ²Ù×÷¡£Apache
BookKeeperÊÇÒ»¸öÕë¶ÔÓÚ¸ßÍÌ͵ÍÑÓʱÉè¼ÆµÄÈÕÖ¾·Ö¿é´æ´¢£¬ËüµÄ¶à¸±±¾¡¢Ç¿Ò»ÖÂÐԺ͵ÍÑÓʱµÈÌØÐԺܺõØÂú×ãÁËManhattanµÄÐèÇó¡£
ÎÒÃÇÔÚ´Ë»ù´¡ÉÏ£¬¹¹½¨ÁËApache DistributedLog¡£Ëæ×Ų»¶ÏµÄÑÝ»¯£¬Apache
DistributedLogÖð½¥Ñݱä³ÉTwitterʵʱÊý¾ÝµÄ»ù´¡¼Ü¹¹£¬¸²¸ÇÁËÊý¾Ý¿âÊÂÎñÈÕÖ¾¡¢ÊµÊ±ÏûÏ¢·¢²¼¶©ÔÄ£¨PubSub£©ÏµÍ³¡¢ÊµÊ±Á÷¼ÆË㣨Heron£©ºÍ¿çÊý¾ÝÖÐÐÄÊý¾Ý¸´ÖƵȶà¸öÓ¦Óá£
ÏîÄ¿¿ª·¢Öеļ¼ÊõÌôÕ½ºÍÓöµ½µÄ¿Ó
ÈçºÎÔÚ±£Ö¤Ç¿Ò»ÖÂÐÔºÍÑϸñ³Ö¾Ã»¯£¨ÂäÅÌд£©µÄͬʱ»¹ÄÜ×öµ½µÍÑÓʱºÍ¸ßÍÌÍ£¬ÕâÊÇÎÒÃÇÔÚ¿ª·¢Apache
DistributedLogµÄʱºòÓöµ½µÄ×î´óÌôÕ½£¬Ò²ÊÇÏà¶ÔÆäËûͬÀàϵͳ×öµÃ±È½ÏºÃµÄµØ·½¡£ºÃµÄI/O·ÖÀëÊÇÔÚ±£Ö¤³Ö¾Ã»¯µÄͬʱ×öµ½µÍÑÓʱµÄ¹Ø¼ü¡£
´ËÍ⣬Ïñ¶à×â»§Åä¶î¹ÜÀí¡¢Speculative Read¡¢¶Áд·ÖÀë¡¢¼ÆËãºÍ´æ´¢À©Õ¹·ÖÀë¡¢¿ç½»»»»úÒÔ¼°¿ç»ú·¿Êý¾Ý·ÅÖòßÂÔ¶¼ÊǺÜÓÐȤµÄÉè¼ÆºÍʵÏÖ¡£¸ÐÐËȤµÄͬѧ¿ÉÒÔÀ´Apache
DistributedLogµÄÓʼþÁбíÀ´ÌÖÂÛ£º
http://distributedlog.incubator.apache.org/community/#mailing-lists
µ±È»£¬ÎÒÃÇÒ²Ì˹ýһЩ¿Ó¡£
±ÈÈ磬ÔÚApache DistributedLogÖУ¬ÎÒÃdz¢ÊÔ½«·þÎñºÍ´æ´¢½øÐзÖÀ룬ʹÓÃApache
Mesos/AuroraÀ´ÔËÐк͹ÜÀíDistributedLogµÄ¶Á¡¢Ð´´úÀí¡£ÔÚÔçЩʱºò£¬MesosµÄÍøÂç¸ôÀë²»ÊǺÜÀíÏ룬ÎÒÃǵķþÎñ¾³£±»Í¬ÔÚÒ»¸öÎïÀí»úÉÏµÄÆäËû·þÎñÓ°Ï죬¶ª°ü¡¢Íø¿¨±»´ò±¬µÈÑÏÖØÓ°Ïì·þÎñµÄʱÑÓ¡£ÎÒÃÇÐèҪͨ¹ý¸ÄÉÆ×ÊÔ´µÄ·ÖÅäËã·¨£¬¸ÄÉÆÁ÷ÊôÖ÷µÄ´íÎó¼ì²âÀ´Ìá¸ßϵͳµÄÎȶ¨ÐÔ¡£
³ý´ËÖ®Í⣬ÒÔÏÂһЩ¾ÑéÎÒÃÇÈÏΪÊÇ×öϵͳ¼Ü¹¹Éè¼ÆÐèÒª¿¼Âǵġ£
Îļþϵͳ¼òµ¥Ò×Óᣵ«ÊÇÈç¹ûҪʹÓ̵̮¯ÁÁ£¬Ç뿼ÂÇPage CacheµÄ¸±×÷Óá£
I/O¸ôÀëºÍ¶à×â»§ÊÇÒ»¸öϵͳµÄÊ×Òª¿¼ÂǶÔÏó¡£·ñÔò£¬Ëæ×ÅϵͳµÄ¹æÄ£Ôö¼Ó£¬ËüÃǽ«±äµÃ²»¿É¿Ø¡£
¿¼ÂÇ·þÎñºÍ´æ´¢µÄ·ÖÀ룬¿¼ÂǶÁдµÄ·ÖÀë¡£
¿ç»ú·¿ºÍ¿ç»ú¼Ü±¾ÖÊÉÏûÓвî±ð¡£ºÏÀíµÄ´æ´¢ºÍ¸´±¾³éÏó¿ÉÒÔÈÃÒ»¸öϵͳ¸üÈÝÒ׵ؽøÐпç»ú·¿µÄÉè¼Æ¡£
ÍÆ¼öʹÓó¡¾°
Apache DistributedLogÔÚTwitterÄÚ²¿µÄÓ¦Óó¡¾°£¬Ö÷Òª°üÀ¨ÒÔÏÂÈýÀà¡£
¸´ÖÆ×´Ì¬»ú£¨Replicated State Machine£©- ÕâÒ»ÀàÓ¦ÓÃÖ÷ҪʹÓÃApache
DistributedLog×÷ΪÊÂÎñÈÕÖ¾¡£
ÔÚTwitterÄÚ²¿£¬Ëü°üÀ¨ - ManhattanʹÓÃDL×÷ΪǿһÖÂÐÔ²Ù×÷µÄÊÂÎñÈÕÖ¾£¬DeferredRPC£¨TwitterµÄ³Ö¾Ã»¯RPCϵͳ£©Ê¹ÓÃDL×÷ΪÄÚ´æ¶ÓÁеIJÙ×÷ÈÕÖ¾£¬Graph
StoreʹÓÃDL×÷Ϊ¸÷ÖÖmutationµÄ²Ù×÷ÈÕÖ¾µÈ¡£ÎÒÃÇĿǰҲÔÚ¸úHeronÍŶӺÏ×÷£¬Ê¹ÓÃDL×÷ΪHeronµÄState
StoreÀ´ÊµÏÖStateful ProcessingºÍExactly-Once¡£
ÏûÏ¢¶ÓÁС¢ÏûÏ¢·¢²¼¶©ÔÄ¡¢Á÷¼ÆËã - ÕâÒ»ÀàÓ¦ÓÃÖ÷ҪʹÓÃApache DistributedLogÀ´´æ´¢ºÍ´«µÝÏûÏ¢¡£ÔÚTwitterÄÚ²¿£¬ÎÒÃÇ»ùÓÚApache
DistributedLogʵÏÖÁËÒ»Ì×ÀàËÆÓÚKafkaµÄ·ÖÇøÊ½µÄÏûÏ¢·¢²¼¶©ÔÄϵͳ£»Í¬Ê±Ò²×÷ΪHeronµÄÊäÈëºÍÊä³ö£¬ÓÃÓÚʵʱÁ÷¼ÆËãµÄ³¡¾°¡£
Êý¾Ý¸´ÖÆ - ÕâÒ»ÀàÓ¦ÓÃÖ÷ҪʹÓÃApache DistributedLogÀ´½øÐÐÊý¾ÝµÄ¸´ÖÆ¡£Õâ¸öÊý¾Ý¸´ÖÆ¿ÉÄÜ·¢ÏÖÔÚ±¾µØ»ú·¿£¬Ò²¿ÉÄÜÊÇ¿ç»ú·¿¡£
Apache DistributedLogÊÊÓÃÓÚÉÏÊöÈýÖÖÓ¦Óó¡¾°£¬ÓÈÆä¶ÔÓÚÒ»ÖÂÐÔ¡¢³Ö¾Ã»¯£¨²»¶ªÊý¾Ý£©¡¢¿ÉÓÃÐÔµÈÒªÇó±È½Ï¸ßµÄÓ¦Óó¡¾°¡£
DistributedLogµÄ·¢Õ¹¹æ»®
ÔÚ¿ª·¢Apache DistributedLogµÄ¹ý³ÌÖУ¬ÎÒÃÇ´Óδ¼òµ¥µØ°ÑËü¶¨Î»ÎªÒ»¸öÏûϢϵͳ¡£¸´ÖÆÈÕÖ¾(Replicated
Log)ÊǸ´ÖÆ×´Ì¬»úÒÔ¼°Ò»ÖÂÐÔËã·¨µÄÒ»¸öºËÐijéÏó¡£Ò»¸ö¸´ÖÆÈÕÖ¾Á÷°ÑϵͳµÄ״̬±ä»¯´Ó¾Éµ½ÐÂÍêÕûµÄ¼Ç¼ÏÂÀ´¡£ÕâÀïÃæ¼È°üº¬Á˹ýÈ¥µÄÀúÊ·Êý¾ÝµÄ´æ´¢£¬Ò²°üº¬ÁË×îеÄʵʱÊý¾ÝµÄÁ÷¶¯¡£ÎÒÃÇÖ÷ÒªÊǰ´ÕÕʵʱÊý¾Ý´æ´¢µÄ¶¨Î»À´·¢Õ¹Apache
DistributedLog£¬°üÀ¨ÒÔϼ¸¸ö·½Ãæ ¡£
°²È«ÌØÐÔ - SSL¡¢Authentication¡¢AuthorizationµÈ¡£
ÊÂÎñµÄÖ§³Ö - ¿ÉÒÔÈÃÓû§¸üÈÝÒ׵ع¹½¨»ùÓÚ״̬¸´ÖÆ»úµÄÊý¾Ý·þÎñ£¬»òÕ߸üÈÝÒ××öÊý¾ÝµÄ¸´ÖÆ¡£
¶àÓïÑÔ¿Í»§¶ËµÄÖ§³Ö - ¿ÉÒÔÈò»Í¬ÓïÑÔµÄÓ¦ÓÿÉÒÔ·ÃÎʺÍʹÓÃDistributedLog¡£
ÔªÊý¾Ý´æ´¢²å¼þ»¯ - ¿ÉÒÔʹÓóýZooKeeperÒÔÍâµÄϵͳ×÷ΪԪÊý¾Ý´æ´¢£¬±ÈÈçEtcd¡¢ConsulµÈ¡£
²ã¼¶´æ´¢£¨Tier Storage£©- ÔÚÈÈÊý¾Ý·ÅÔÚÄÚ´æ»òÕßApache
BookKeeperÖУ¬Ëæ×ÅÈÕÖ¾·Ö¿é±äÀÏ£¬ÈÕÖ¾·Ö¿é±»ÎÞ·ìÇ¨ÒÆµ½HDFS¡¢S3¡¢GCSµÈ¡£
Stream Transformation - ±ÈÈçfilteringºÍprojection¡£
ÏëÒªÁ˽â¸ü¶àµÄApache DistributedLogµÄProject
Idea£¬¿ÉÒÔ·ÃÎÊÕâÀ
https://cwiki.apache.org/confluence/display/DL/Project+Ideas
DistributedLogºÍKafka¼¼Êõ¶Ô±È
´ó¼Ò³£³£ÎÊÆðµÄÎÊÌâÖ®Ò»¾ÍÊÇApache DistributedLog (incubating)ÓëApache
KafkaÏà¶Ô±È£¬¸÷ÓÐʲôÓÅÁÓ¡£´Ó¼¼ÊõÉÏÀ´½²DistributedLog²¢²»ÊÇÒ»¸öÏñApache KafkaÄÇô³ÉÊìµÄ¡¢ÓзÖÇø»úÖÆµÄ¹ã²¥/¶©ÔÄϵͳ¡£
DistributedLogÊÇÒ»¸ö¸´ÖÆÈÕÖ¾Á÷´æ´¢£¬ËüÓÃApache BookKeeperÀ´×öÈÕÖ¾·Ö¿é(Log
Segment)µÄ´æ´¢¡£Ëü¹Ø×¢µÄÊǹ¹½¨¿É¿¿µÄʵʱϵͳËùÐèÒªµÄ³Ö¾ÃÐÔ¡¢¶à¸±±¾ºÍǿһÖÂÐÔ¡£¿ÉÒÔ°ÑDistributedLogÓÃÓÚ¹¹½¨»ò³¢ÊÔ¸÷ÖÖ²»Í¬µÄÏûϢͨÐÅÄ£ÐÍ£¬±ÈÈç¶ÓÁС¢¹ã²¥/¶©Ôĵȡ£
ÒòΪÁ½Õß¶¼ÊÇ´¦ÀíÈÕÖ¾£¬Êý¾ÝÄ£ÐÍÒ²ÀàËÆ£¬ËùÒÔÕâÆªÎÄÕÂÖ÷Òª´Ó¼¼Êõ½Ç¶ÈÌÖÂÛApache
KafkaÓëDistributedLogµÄ²»Í¬µã¡£ÎÒÃǻᾡÁ¿×öµ½¿Í¹Û£¬µ«ÓÉÓÚÎÒÃDz»ÊÇApache KafkaµÄר¼Ò£¬Òò´ËÎÒÃÇ¿ÉÄÜ»á¶ÔApache
Kafka´æÔÚÎó½â¡£Èç¹û·¢ÏÖÓÐ´í£¬Ò²Çë´ó¼ÒÖ±½ÓÖ¸³ö¡£
Ê×ÏÈ£¬ÈÃÎÒÃǼòµ¥µØ½éÉÜÒ»ÏÂKafkaºÍDistributedLogµÄ¸Å¿ö¡£
KafkaÊÇʲô
KafkaÊÇ×î³õÓÉLinkedin¿ªÔ´³öÀ´µÄÒ»Ì×·Ö²¼Ê½ÏûϢϵͳ£¬ÏÖÔÚÓÉApacheÈí¼þ»ù½ð»á¹ÜÀí¡£ÕâÊÇÒ»Ì×»ùÓÚ·ÖÇøµÄ·¢²¼/¶©ÔÄϵͳ¡£KafkaÖеĹؼü¸ÅÄî¾ÍÊÇTopic¡£Ò»¸öTopicÏÂÃæ»áÓжà¸ö·ÖÇø£¬Ã¿¸ö·ÖÇø¶¼Óб¸·Ý£¬·Ö²¼ÔÚ²»Í¬µÄ´úÀí·þÎñÆ÷£¨Broker£©ÉÏ¡£Éú²úÕß»á°ÑÊý¾Ý¼Ç¼·¢²¼µ½Ò»¸öTopicÏÂÃæµÄ·ÖÇøÖУ¬¾ßÌ巽ʽÊÇÂÖѯ»òÕß»ùÓÚÖ÷¼ü×ö·ÖÇø£¬¶øÏû·ÑÕ߻ᴦÀíTopicÖз¢²¼³öÀ´µÄÊý¾Ý¼Ç¼¡£
ËùÓÐÊý¾Ý¶¼ÊÇ·¢²¼¸øÏàÓ¦·ÖÇøµÄÖ÷´úÀí½ø³Ì£¬ÔÙ¸´ÖƵ½´Ó´úÀí½ø³Ì£¬ËùÓеĶÁÊý¾ÝÇëÇóÒ²¶¼ÊÇÒÀ´ÎÓÉÖ÷´úÀí´¦ÀíµÄ¡£´Ó´úÀí½ö½öÓÃÓÚÊý¾ÝµÄÈßÓ౸·Ý£¬²¢ÔÚÖ÷´úÀíÎÞ·¨¼ÌÐøÌṩ·þÎñʱ¶¥ÉÏ¡£Í¼Ò»µÄ×ó±ß²¿·ÖÏÔʾÁËKafkaÖеÄÊý¾ÝÁ÷¡£
DistributedLogÊÇʲô
ÓëKafka²»Í¬£¬DistributedLog²¢²»ÊÇÒ»¸ö»ùÓÚ·ÖÇøµÄ·¢²¼/¶©ÔÄϵͳ£¬ËüÊÇÒ»¸ö¸´ÖÆÈÕÖ¾Á÷²Ö¿â¡£DistributedLogÖеĺËÐĸÅÄîÊdzÖÐøµÄ¸´ÖÆÈÕÖ¾Á÷¡£Ò»¸öÈÕÖ¾Á÷»á±»·Ö¶Î³É¶à¸öÈÕ־Ƭ¶Î¡£Ã¿¸öÈÕ־Ƭ¶Î¶¼ÔÚApache
BookKeeperÖд洢³ÉApache BooKeeperÖеÄÒ»¸öLedger£¬ÆäÖеÄÊý¾Ý»áÔÚ¶à¸öBookie£¨Bookie¾ÍÊÇApache
BookKeeperµÄ´æ´¢½Úµã£©Ö®¼ä¸´Öƺ;ùºâ·Ö²¼¡£
Ò»¸öÈÕÖ¾Á÷µÄËùÓÐÊý¾Ý¼Ç¼¶¼ÓÉÈÕÖ¾Á÷µÄÊôÖ÷ÅÅÐò£¬ÓÉÐí¶à¸öдÈë´úÀíÀ´¹ÜÀíÈÕÖ¾Á÷µÄÊôÖ÷¹ØÏµ¡£Ó¦ÓóÌÐòÒ²¿ÉÒÔʹÓúËÐÄ¿âÀ´Ö±½Ó×·¼ÓÈÕÖ¾¼Ç¼¡£Õâ¶ÔÓÚ¸´ÖÆ×´Ì¬»úÒ»Àà¶ÔÓÚ˳ÐòºÍÅÅËûдÓÐ×ŷdz£¸ßÒªÇóµÄ³¡¾°·Ç³£ÓÐÓá£Ã¿¸ö×·¼Óµ½ÈÕÖ¾Á÷ĩβµÄÈÕÖ¾¼Ç¼¶¼»á±»¸³ÓèÒ»¸öÐòÁкš£
¶ÁÕß¿ÉÒÔ´ÓÈκÎÖ¸¶¨µÄÐòÁкſªÊ¼¶ÁÈÕÖ¾Á÷µÄÊý¾Ý¡£¶ÁÇëÇóÒ²»áÔÚÄǸöÁ÷µÄËùÓд洢¸±±¾ÉÏ×ö¸ºÔؾùºâ¡£Í¼1µÄÓҰ벿·ÖÏÔʾÁËDistributedLogÖеÄÊý¾ÝÁ÷¡£

ͼ1 Apache KafkaÓëApache DistributedLog
KafkaÓëDistributedLogÓÐʲô²»Í¬
ÒòΪͬÀàÊÂÎï²ÅÓпɱȽϵĻù´¡£¬ËùÒÔÎÒÃÇÖ»ÔÚ±¾ÎÄÖаÑKafka·ÖÇøºÍDistributedLogÁ÷Ïà¶Ô±È¡£Ï±íÁгöÁËÁ½Ì×ϵͳ֮¼ä×îÏÔÖøµÄ²»Í¬µã¡£


Êý¾ÝÄ£ÐÍ
Kafka·ÖÇøÊÇ´æ´¢ÔÚ´úÀí·þÎñÆ÷´ÅÅÌÉϵÄÒÔÈô¸É¸öÎļþÐÎʽ´æÔÚµÄÈÕÖ¾¡£Ã¿Ìõ¼Ç¼¶¼ÊÇÒ»¸ö¼ü-Öµ¶Ô£¬µ«¶ÔÓÚÂÖѯʽµÄÊý¾Ý·¢²¼¿ÉÒÔÊ¡ÂÔÊý¾ÝµÄÖ÷¼ü¡£Ö÷¼üÓÃÓÚ¾ö¶¨¸ÃÌõ¼Ç¼»á±»´æ´¢µ½Äĸö·ÖÇøÉÏÒÔ¼°ÓÃÓÚÈÕ־ѹËõ¹¦ÄÜ¡£Ò»¸ö·ÖÇøµÄËùÓÐÊý¾ÝÖ»´æ´¢ÔÚÈô¸É¸ö´úÀí·þÎñÆ÷ÉÏ£¬²¢´ÓÖ÷´úÀí·þÎñÆ÷¸´ÖƵ½´Ó´úÀí·þÎñÆ÷¡£
DistributedLogÁ÷ÊÇÒÔһϵÁÐÈÕÖ¾·ÖƬµÄÐÎʽ´æÔÚµÄÐéÄâÁ÷¡£Ã¿¸öÈÕÖ¾·ÖƬ¶¼ÒÔÒ»ÌõBookKeeper
LedgerµÄÐÎʽ´æÔÚ£¬²¢±»¸´ÖƵ½¶à¸öBookieÉÏ¡£ÔÚÈÎÒâʱ¿Ì¶¼Ö»ÓÐÒ»¸ö»îÔ¾µÄÈÕÖ¾·ÖƬ½ÓÊÜдÈëÇëÇó¡£
ÔÚÌØ¶¨µÄʱ¼ä¶Î¹ýºó£¬»òÕß¾ÉÈÕÖ¾·ÖƬ´ïµ½ÅäÖôóС£¨ÓÉÅäÖõÄÈÕÖ¾·ÖƬ²ßÂÔ¾ö¶¨£©Ö®ºó£¬»òÕßÈÕÖ¾µÄÊôÖ÷³ö¹ÊÕÏÖ®ºó£¬¾ÉµÄÈÕÖ¾·ÖƬ»á±»·â´æ£¬Ò»¸öеÄÈÕÖ¾·ÖƬ»á±»¿ªÆô¡£
Kafka·ÖÇøºÍDistributedLogÁ÷ÔÚÊý¾Ý·ÖƬºÍ·Ö²¼µÄ²»Í¬µã¾ö¶¨ÁËËüÃÇÔÚÊý¾Ý³Ö¾Ã»¯²ßÂԺͼ¯Èº²Ù×÷£¨±ÈÈ缯ȺÀ©Õ¹£©ÉϵIJ»Í¬¡£
ͼ2ÏÔʾÁËDistributedLogºÍKafkaÊý¾ÝÄ£Ð͵IJ»Í¬µã¡£

ͼ2 Kafka·ÖÇøÓëDistributedLogÁ÷
Êý¾Ý³Ö¾Ã»¯
Ò»¸öKafka·ÖÇøÖеÄËùÓÐÊý¾Ý¶¼±£´æÔÚÒ»¸ö´úÀí·þÎñÆ÷ÉÏ£¨²¢±»¸´ÖƵ½±ðµÄ´úÀí·þÎñÆ÷ÉÏ£©¡£ÔÚÅäÖõÄÓÐЧÆÚ¹ýºóÊý¾Ý»áʧЧ²¢±»É¾³ý¡£ÁíÍ⣬Ҳ¿ÉÒÔÅäÖòßÂÔÈÃKafkaµÄ·ÖÇø±£Áôÿ¸öÖ÷¼üµÄ×îÐÂÖµ¡£
ÓëKafkaÏàËÆ£¬DistributedLogÒ²¿ÉÒÔΪÿ¸öÁ÷ÅäÖÃÓÐЧÆÚ£¬²¢ÔÚ³¬Ê±Ö®ºó½«ÏàÓ¦µÄÈÕÖ¾·ÖƬʧЧ»òɾ³ý¡£³ý´ËÖ®Í⣬DistributedLog»¹ÌṩÁËÏÔʾµÄ½Ø¶Ï»úÖÆ¡£Ó¦ÓóÌÐò¿ÉÒÔÏÔʽµØ½«Ò»¸öÈÕÖ¾Á÷½Ø¶Ïµ½Á÷µÄij¸öÖ¸¶¨Î»Öá£Õâ¶ÔÓÚ¹¹½¨¿É¸´ÖƵÄ״̬»ú·Ç³£ÓÐÓã¬ÒòΪ¿É¸´ÖƵÄ״̬»úÐèÒªÔÚɾ³ýÈÕÖ¾¼Ç¼֮ǰÏȽ«×´Ì¬³Ö¾Ã»¯¡£Manhattan¾ÍÊÇÒ»¸öÓõ½ÁËÕâ¸ö¹¦ÄܵĵäÐÍϵͳ¡£
²Ù×÷
Êý¾Ý·ÖƬºÍ·Ö²¼»úÖÆµÄ²»Í¬Ò²µ¼ÖÂÁËά»¤¼¯Èº²Ù×÷ÉϵIJ»Í¬£¬À©Õ¹¼¯Èº²Ù×÷¾ÍÊÇÒ»¸öÀý×Ó¡£
À©Õ¹Kafka¼¯ÈºÊ±£¬Í¨³£ÏÖÓзÖÇø¶¼Òª×öÖØÐ·ֲ¼¡£ÖØÐ·ֲ¼²Ù×÷»á½«Kafka·ÖÇøÅ²¶¯µ½²»Í¬µÄ¸±±¾ÉÏ£¬ÒÔ´Ë´ïµ½¾ùºâ·Ö²¼¡£Õâ¾ÍÒª°ÑÕû¸öÁ÷µÄÊý¾Ý´ÓÒ»¸ö¸±±¾¿½µ½ÁíÒ»¸ö¸±±¾ÉÏ¡£ÎÒÃÇҲ˵¹ýºÜ¶à´ÎÁË£¬Ö´ÐÐÖØÐ·ֲ¼²Ù×÷ʱ±ØÐë·Ç³£Ð¡ÐÄ£¬±ÜÃâºÄ¾¡´ÅÅ̺ÍÍøÂç×ÊÔ´¡£
¶øÀ©Õ¹DistributedLog¼¯ÈºµÄ¹¤×÷·½Ê½Ôò½ØÈ»²»Í¬¡£DistributedLog°üº¬Á½²ã£º´æ´¢²ã£¨Apache
BooKeeper£©ºÍ·þÎñ²ã£¨Ð´ÈëºÍ¶Á³ö´úÀí£©¡£ÔÚÀ©Õ¹´æ´¢²ãʱ£¬ÎÒÃÇÖ»ÐèÒªÌí¼Ó¸ü¶àµÄBookie¾ÍºÃÁË¡£ÐµÄBookieÂíÉϻᱻдÈë´úÀí·¢ÏÖ£¬²¢Á¢¿ÌÓÃÓÚдÈëеÄÈÕÖ¾·ÖƬ¡£
ÔÚÀ©Õ¹Êý¾Ý´æ´¢²ãʱ²»»áÓÐÈκεÄÖØÐ·ֲ¼²Ù×÷¡£Ö»ÔÚÔö¼Ó·þÎñ²ãʱ»áÓÐÖØÐ·ֲ¼²Ù×÷£¬µ«Õâ¸öÖØÐ·ֲ¼Ò²Ö»ÊÇÒÆ¶¯ÈÕÖ¾Á÷µÄÊôÖ÷Ȩ£¬ÒÔÊ¹ÍøÂç´ú¿í¿ÉÒÔÔÚ¸÷¸ö´úÀíÖ®¼ä¾ùºâ·Ö²¼¡£
Õâ¸öÖØÐ·ֲ¼µÄ¹ý³ÌÖ»ÓëÊôÖ÷ȨÏà¹Ø£¬Ã»ÓÐÊý¾ÝÇ¨ÒÆ²Ù×÷¡£ÕâÖÖ´æ´¢²ãºÍ·þÎñ²ãµÄ¸ôÀë²»½ö½öÊÇÈÃϵͳ¾ß±¸ÁË×Ô¶¯À©Õ¹µÄ»úÖÆ£¬¸üÈø÷ÖÖ²»Í¬ÀàÐ͵Ä×ÊÔ´¿ÉÒÔ¶ÀÁ¢À©Õ¹¡£
дÓëÉú²úÕß
Èçͼ1Ëùʾ£¬KafkaÉú²úÕß°ÑÊý¾ÝÒ»ÅúÅúµØÐ´µ½Kafka·ÖÇøµÄÖ÷´úÀí·þÎñÆ÷ÉÏ¡£¶øISR£¨Í¬²½¸´ÖÆ£©¼¯ºÏÖеĴӴúÀí·þÎñÆ÷»á´ÓÖ÷´úÀíÉϰѼǼ¸´ÖÆ×ß¡£Ö»ÓÐÔÚÖ÷´úÀí´ÓËùÓеÄISR¼¯ºÏÖеĸ±±¾É϶¼ÊÕµ½Á˳ɹ¦µÄÏìÓ¦Ö®ºó£¬Ò»Ìõ¼Ç¼²Å»á±»ÈÏΪÊdzɹ¦Ð´ÈëµÄ¡£¿ÉÒÔÅäÖÃÈÃÉú²úÕßÖ»µÈ´ýÖ÷´úÀíµÄÏìÓ¦£¬»¹ÊǵȴýISR¼¯ºÏÖеÄËùÓдúÀíµÄÏìÓ¦¡£
DistributedLogÖÐÔòÓÐÁ½ÖÖ·½Ê½°ÑÊý¾ÝдÈëDistributedLogÁ÷£¬Ò»ÊÇÓÃÒ»¸öThriftµÄÊݿͻ§¶Ëͨ¹ýд´úÀí£¨ÖÚËùÖÜÖªµÄ¶àдÈ룩дÈ룬¶þÊÇͨ¹ýDistributedLogµÄºËÐÄ¿âÀ´Ö±½ÓÓë´æ´¢½Úµã½»»¥£¨ÖÚËùÖÜÖªµÄµ¥¶ÀдÈ룩¡£µÚÒ»ÖÖ·½Ê½ºÜÊʺÏÓÚ¹¹½¨ÏûϢϵͳ£¬µÚ¶þÖÖÔòÊÊÓÃÓÚ¹¹½¨¸´ÖÆ×´Ì¬»ú¡£Äã¿ÉÒÔ²éÔÄDistributedLogÎĵµµÄÏà¹ØÕ½ÚÀ´»ñÈ¡¸ü¶àµÄÐÅÏ¢ºÍ²Î¿¼£¬ÒÔÕÒµ½ÄãÐèÒªµÄ·½Ê½¡£
ÈÕÖ¾Á÷µÄÊôÖ÷»á²¢·¢µØÒÔBookKeeperÌõÄ¿µÄÐÎʽÏòBookieÖÐдÈëÒ»Åú¼Ç¼£¬²¢µÈ´ý¶à¸öBookieµÄQuorum½á¹û¡£QuorumµÄ´óСȡ¾öÓÚBookKeeperÕËÄ¿µÄack_quorum_size²ÎÊý£¬²¢ÇÒ¿ÉÒÔÅäÖõ½DistributedLogÁ÷µÄ¼¶±ð¡£ËüÌṩÁ˺ÍKafkaÉú²úÕßÏàËÆµÄÔÚ³Ö¾ÃÐÔÉϵÄÁé»îÐÔ¡£ÔÚ½ÓÏÂÀ´µÄ¡°¸´ÖÆ¡±Ò»½ÚÎÒÃÇ»á¶Ô±ÈÁ½ÕßÔÚ¸´ÖÆËã·¨Éϵĸü¶à²»Í¬Ö®´¦¡£
KafkaºÍDistributedLog¶¼Ö§³Ö¶Ëµ½¶ËµÄÅúÁ¿²Ù×÷ºÍѹËõ»úÖÆ¡£µ«Á½ÕßÖ®¼äµÄÒ»µã΢ÃîÇø±ðÊǶÔDistributedLogµÄдÈë²Ù×÷¶¼ÊÇÔÚÊÕµ½ÏìӦ֮ǰ¶¼ÏÈͨ¹ýfsyncË¢µ½Ó²ÅÌÉϵ쬶øÎÒÃDz¢Ã»·¢ÏÖKafkaÒ²ÌṩÁËÀàËÆµÄ¿É¿¿ÐÔ±£Ö¤¡£
¶ÁÓëÏû·ÑÕß
KafkaÏû·ÑÕß´ÓÖ÷´úÀí·þÎñÆ÷É϶Á³öÊý¾Ý¼Ç¼¡£Õâ¸öÉè¼ÆµÄǰÌá¾ÍÊÇÖ÷´úÀíÉÏÔÚ´ó¶àÊýÇé¿öÏÂ×îеÄÊý¾Ý¶¼»¹ÔÚÎļþϵͳҳ»º´æÖС£´Ó³ä·ÖÀûÓÃÎļþϵͳҳ»º´æºÍ»ñµÃ¸ßÐÔÄܵĽǶÈÀ´ËµÕâÊÇÒ»¸öºÃ°ì·¨¡£
DistributedLogÔò²ÉÓÃÁËÍêÈ«²»Í¬µÄ·½·¨¡£ÒòΪ¸÷¸ö´æ´¢½ÚµãÖ®¼äûÓÐÃ÷È·µÄÖ÷´Ó¹ØÏµ£¬DistributedLog¿ÉÒÔ´ÓÈÎÒâ´æ´¢×ÅÏà¹ØÊý¾ÝµÄ´æ´¢½ÚµãÉ϶Á³öÊý¾Ý¡£ÎªÁË»ñµÃ¿ÉÔ¤ÆÚµÄµÍÑÓ³Ù£¬DistributedLogÒýÈëÁËÒ»¸öÍÆÀíʽ¶Á»úÖÆ£¬¼´ÔÚ³¬³öÁËÅäÖõĶÁ²Ù×÷ʱÏÞÖ®ºó£¬Ëü»áÔÚ²»Í¬µÄ¸±±¾ÉÏÔٴγ¢ÊÔ»ñÈ¡Êý¾Ý¡£
Õâ¾Í¿ÉÄÜ»á¶Ô´æ´¢½Úµãµ¼Ö±ÈKafka¸ü¸ßµÄ¶ÁѹÁ¦¡£²»¹ý£¬Èç¹û½«¶Á³¬Ê±Ê±¼äÅä³É¿ÉÒÔÈÃ99%µÄ´æ´¢½ÚµãµÄ¶Á²Ù×÷¶¼²»»á³¬Ê±£¬ÄǾͿÉÒÔ¼«´ó³Ì¶ÈµØ½â¾öÑÓ³ÙÎÊÌ⣬ֻ´øÀ´1%µÄ¶îÍâ¶ÁѹÁ¦¡£
¶ÔÓÚ¶ÁµÄ¿¼ÂǺͻúÖÆÉϵIJ»Í¬Ö÷ÒªÔ´ÓÚ¸´ÖÆ»úÖÆºÍ´æ´¢½ÚµãµÄI/OϵͳµÄ²»Í¬£¬ÔÚÏÂÎÄ»á¼ÌÐøÌÖÂÛ¡£
¸´ÖÆ
KafkaÓõÄÊÇISR¸´ÖÆËã·¨£º½«Ò»¸ö´úÀí·þÎñÆ÷ѡΪÖ÷¡£ËùÓÐд²Ù×÷¶¼±»·¢Ë͵½Ö÷´úÀíÉÏ£¬ËùÓд¦ÓÚISR¼¯ºÏÖеĴӴúÀí¶¼´ÓÖ÷´úÀíÉ϶ÁÈ¡ºÍ¸´ÖÆÊý¾Ý¡£Ö÷´úÀí»áά»¤Ò»¸ö¸ßˮλÏߣ¨HW£¬High
Watermark£©£¬¼´Ã¿¸ö·ÖÇø×îÐÂÌá½»µÄÊý¾Ý¼Ç¼µÄÆ«ÒÆÁ¿¡£
¸ßˮλÏ߻᲻¶Ïͬ²½µ½´Ó´úÀíÉÏ£¬²¢ÖÜÆÚÐÔµØÔÚËùÓдúÀíÉϼǼ¼ì²éµã£¬ÒÔ±¸»Ö¸´Ö®Óá£ÔÚËùÓÐISR¼¯ºÏÖеĸ±±¾¶¼°ÑÊý¾ÝдÈëÁËÎļþϵͳ£¨²¢²»±ØÐëÊÇ´ÅÅÌ£©²¢ÏòÖ÷´úÀí·¢»ØÁËÏìÓ¦Ö®ºó£¬Ö÷´úÀí²Å»á¸üиßˮλÏß¡£
ISR»úÖÆÈÃÎÒÃÇ¿ÉÒÔÔö¼Ó»ò¼õÉÙ¸±±¾µÄÊýÁ¿£¬ÔÚ¿ÉÓÃÐÔºÍÐÔÄÜÖ®¼ä×ö³öȨºâ¡£¿ÉÊÇÀ©´ó»òËõС¸±±¾µÄ¼¯ºÏµÄ¸±×÷ÓÃÊÇÔö´óÁ˶ªÊ§Êý¾ÝµÄ¿ÉÄÜÐÔ¡£
DistributedLogʹÓõÄÊÇQuorumͶƱ¸´ÖÆËã·¨£¬ÕâÔÚZab¡¢RaftÒÔ¼°Viewstamped
ReplicationµÈÒ»ÖÂÐÔËã·¨Öж¼ºÜ³£¼û¡£ÈÕÖ¾Á÷µÄÊôÖ÷»á²¢·¢µØ°ÑÊý¾Ý¼Ç¼дÈëËùÓд洢½Úµã£¬²¢Ôڵõ½³¬¹ýÅäÖÃÊýÁ¿µÄ´æ´¢½ÚµãͶƱȷÈÏÖ®ºó£¬²ÅÈÏΪÊý¾ÝÒѳɹ¦Ìá½»¡£
´æ´¢½ÚµãÒ²Ö»ÔÚÊý¾Ý±»ÏÔʽµØµ÷ÓÃflush²Ù×÷Ë¢Èë´ÅÅÌÖ®ºó²Å»áÏìӦдÈëÇëÇó¡£ÈÕÖ¾Á÷µÄÊôÖ÷Ò²»áά»¤Ò»¸öÈÕÖ¾Á÷µÄ×îÐÂÌá½»µÄÊý¾Ý¼Ç¼µÄÆ«ÒÆÁ¿£¬¾ÍÊÇ´ó¼ÒÖªµÀµÄApache
BookKeeperÖеÄLAC£¨LastAddConfirmed£©¡£LACÒ²»á±£´æÔÚÊý¾Ý¼Ç¼ÖУ¨À´½ÚÊ¡¶îÍâµÄRPCµ÷ÓÿªÏú£©£¬²¢²»¶Ï¸´ÖƵ½±ðµÄ´æ´¢½ÚµãÉÏ¡£
DistributedLogÖи´±¾¼¯ºÏµÄ´óСÊÇÔÚÿ¸öÁ÷µÄÿ¸öÈÕÖ¾·ÖƬ¼¶±ð¿ÉÅäÖõġ£¸Ä±ä¸´ÖƲÎÊýÖ»»áÓ°ÏìеÄÈÕÖ¾·ÖƬ£¬²»»áÓ°ÏìÒÑÓеġ£
´æ´¢
ÿ¸öKafka·ÖÇø¶¼ÒÔÈô¸É¸öÎļþµÄÐÎʽ±£´æÔÚ´úÀíµÄ´ÅÅÌÉÏ¡£ËüÀûÓÃÎļþϵͳµÄÒ³»º´æºÍI/Oµ÷¶È»úÖÆÀ´µÃµ½¸ßÐÔÄÜ¡£KafkaÒ²ÊÇÒò´ËÀûÓÃJavaµÄsendfile
APIÀ´¸ßЧµØ´Ó´úÀíÖÐдÈë¶Á³öÊý¾ÝµÄ¡£²»¹ý£¬ÔÚijЩÇé¿öÏ£¨±ÈÈçÏû·ÑÕß´¦Àí²»¼°Ê±¡¢Ëæ»ú¶ÁдµÈ£©£¬Ò³»º´æÖеÄÊý¾ÝÌÔÌºÜÆµ·±£¬ËüµÄÐÔÄÜÒ²ÓкܴóµÄ²»È·ÐÔÐÔ¡£
DistributedLogÓõÄÔòÊDz»Í¬µÄI/OÄ£ÐÍ¡£Í¼3±íʾÁËBookie£¨BookKeeperµÄ´æ´¢½Úµã£©µÄI/O»úÖÆ¡£Ð´È루À¶Ïߣ©¡¢Ä©Î²¶Á£¨ºìÏߣ©ºÍÖмä¶Á£¨×ÏÏߣ©ÕâÈýÖÖ³£¼ûµÄI/O²Ù×÷¶¼±»¸ôÀëµ½ÁËÈýÖÖÎïÀíÉϲ»Í¬µÄI/O×ÓϵͳÖС£ËùÓÐдÈë¶¼±»Ë³ÐòµØ×·¼Óµ½´ÅÅÌÉϵÄÈÕÖ¾Îļþ£¬ÔÙÅúÁ¿Ìá½»µ½Ó²ÅÌÉÏ¡£
ÔÚд²Ù×÷³Ö¾Ã»¯µ½´ÅÅÌÉÏÖ®ºó£¬ËüÃǾͻá·Åµ½Ò»¸öMemtableÖУ¬ÔÙÏò¿Í»§¶Ë·¢»ØÏìÓ¦¡£MemtableÖеÄÊý¾Ý»á±»Ò첽ˢе½½»²æ´æÈ¡µÄË÷ÒýÊý¾Ý½á¹¹ÖУº¼Ç¼±»×·¼Óµ½ÈÕÖ¾ÎļþÖУ¬Æ«ÒÆÁ¿ÔòÔÚ·ÖÀàÕËÄ¿µÄË÷ÒýÎļþÖиù¾Ý¼Ç¼IDË÷ÒýÆðÀ´¡£
×îеÄÊý¾Ý¿Ï¶¨ÔÚMemtableÖУ¬¹©Ä©Î²¶Á²Ù×÷ʹÓá£Öмä¶Á»á´Ó¼Ç¼ÈÕÖ¾ÎļþÖлñÈ¡Êý¾Ý¡£ÓÉÓÚÎïÀí¸ôÀëµÄ´æÔÚ£¬Bookie½Úµã¿ÉÒÔ³ä·ÖÀûÓÃÍøÂçÁ÷Èë´ø¿íºÍ´ÅÅ̵Ä˳ÐòдÈëÌØÐÔÀ´Âú×ãдÇëÇó£¬ÒÔ¼°ÀûÓÃÍøÂçÁ÷³ö´ú¿íºÍ¶à¸ö´ÅÅ̹²Í¬ÌṩµÄIOPS´¦ÀíÄÜÁ¦À´Âú×ã¶ÁÇëÇ󣬱˴ËÖ®¼ä²»»áÏ໥¸ÉÈÅ¡£

ͼ3 BookKeeperµÄI/O¸ôÀë
С½á
KafkaºÍDistributedLog¶¼ÊÇÉè¼ÆÀ´´¦ÀíÈÕÖ¾Á÷Ïà¹ØÎÊÌâµÄ¡£ËüÃÇÓÐÏàËÆÐÔ£¬µ«ÔÚ´æ´¢ºÍ¸´ÖÆ»úÖÆÉÏÓÐ×Ų»Í¬µÄÉè¼ÆÀíÄÒò´ËÓÐÁ˲»Í¬µÄʵÏÖ·½Ê½¡£Ï£ÍûÕâÆªÎÄÕÂÄÜ´Ó¼¼Êõ½Ç¶È½âÊÍÇå³þËüÃǵÄÇø±ð£¬»Ø´ðһЩÎÊÌâ¡£ÎÒÃǽÓÏÂÀ´Ò²»áÔÙ¶àдһЩÎÄÕÂÀ´½²½²DistributedLogµÄÐÔÄÜÖ¸±ê¡£
DistributedLogºÍÑÅ»¢Pulsar¼¼Êõ¶Ô±È
´Ó²úÆ·ºÍ¼Ü¹¹µÄ½Ç¶ÈÀ´Ëµ£¬ÑÅ»¢PulsarÊÇÒ»¸ö¸üÀàËÆÓÚApache KafkaµÄÏûÏ¢·¢²¼¶©ÔÄϵͳ¡£Ëü¸úApache
Kafka×î´óµÄÁ½¸ö²î±ðÊÇÔÚÆäÏûÏ¢Ïû·ÑÄ£ÐͺÍÏûÏ¢µÄ´æ´¢·½Ê½¡£
ÏûÏ¢µÄÏû·ÑÄ£ÐÍ£ºApache KafkaÌṩµÄÊÇ»ùÓÚ·ÖÇøµÄPub/Subģʽ£¬Ò»¸öÏûÏ¢·ÖÇøÖ»ÄÜÑϸñµØÓÉÒ»¸öÏû·ÑÕß½øÐÐÏû·Ñ¡£KafkaµÄÏû·ÑÕß¿ÉÒÔͨ¹ýÏû·ÑÕßȺ£¨Consumer
Group£©À´¹²Í¬Ïû·Ñ¶à¸ö·ÖÇø¡£
²»Í¬ÓÚApache Kafka£¬ÑÅ»¢µÄPulsarÌṩ¸ü¼ÓÁé»îµÄÏû·ÑÄ£ÐÍ
- ¶ÔÓÚͬһ¸öTopic£¬Ïû·ÑÕß¿ÉÒÔÖ¸¶¨Ê¹ÓöÀÕ¼£¨Exclusive£©¡¢·ÖÏí£¨Shared/Round-Robin)ºÍFailoverµÈÈý¸ö²»Í¬·½Ê½Ïû·Ñ¡£
¶ÀռʽµÄÏû·ÑÓëKafkaµÄÏû·ÑÊÇÏàͬµÄ£¬·ÖÏíʽµÄÏû·Ñ¸ü½Ó½üÓÚ´«Í³µÄProduer-Consumer
QueueÏû·Ñģʽ¡£ËäÈ»ÀíÂÛÉÏKafka¿ÉÒÔͨ¹ýÔö¼Ó·ÖÇøµÄÊýÁ¿ºÍÏû·ÑÕßµÄÊýÁ¿£¬À´´ïµ½ÀàËÆµÄЧ¹û£¬µ«ÊÇÎÞ·¨×öµ½ÏûÏ¢¼¶±ðµÄϸÁ£¶È¡£
ÏûÏ¢µÄ´æ´¢Ä£ÐÍ£ºApache KafkaµÄ´æ´¢·½Ê½ÔÚÓëDLµÄ±È½ÏÖÐÒѾÓÐËù½éÉÜ¡£ÓëDLÀàËÆµÄÊÇ£¬ÑÅ»¢PulsarҲʹÓÃApache
BookKeeper½øÐÐÏûÏ¢µÄ´æ´¢£¨¾ßÌåµÄ´æ´¢·½Ê½ÓÐËù²»Í¬£¬ÔÚÏÂÃæ»áÉÔ¼ÓÌÖÂÛ£©¡£
ËùÒÔPulsarµÄBrokerÏà¶ÔÓÚKafkaµÄBrokerÊÇÒ»¸öÎÞ״̬µÄBroker£¬ËùÒÔ¸üÈÝÒ×½øÐÐFailover¡£ÒòΪPulsarÒ²ÊÇÓÃApache
BookKeeper½øÐд洢£¬ËùÒÔ´Ë´¦PulsarºÍKafkaµÄÇø±ð¿ÉÒԲο¼ÉÏÃæDLºÍKafkaÔÚÊý¾Ý´æ´¢ºÍ¶à¸±±¾¸´ÖÆÉϵIJî±ð¡£
PulsarºÍDistributedLogÓкܶàÏàËÆµØµØ·½£¬Ò²Óв»Í¬Ö®´¦¡£Èç¹ûÒª½«DistributedLog¸úPulsar½øÐбȽϣ¬Ó¦¸Ã±È½ÏµÄµÄ¶ÔÏóÊÇPulsarÖлùÓÚBookKeeper×öµÄManagedLedger¡£ManagedLedger¸úDistributedLog
StreamÀàËÆ£¬Ò²ÊÇÓÉÒ»×éBookKeeper Ledger×é³É¡£µ«ÆäºËÐĵÄÇø±ðÔÚÓÚ£º
ManagedLedgerÊÇÒ»¸öµäÐ͵ÄÈÕ־ʵÏÖ£¬ËüÌṩSingle-Writer-Single-ReaderµÄÓïÒå¡£Ò»¸öManagedLedgerÖ»ÄÜÓÐÒ»¸öBroker´ò¿ª½øÐжÁд¡£¶øDistributedLogµÄStreamÊÇÒ»¸öÃæÏòÁ÷µÄʵÏÖ£¬ÌṩµÄÊÇSingle-Writer-Multiple-ReadersµÄÓïÒå¡£
Ò²ÊÇÒòΪÔÚÕâ¸öÈÕ־ʵÏֵIJîÒ죬µ¼ÖÂÁ˼ܹ¹µÄÒ»¸ö²îÒ죺ÔÚPulsarÖУ¬¶Áд¶¼ÓÐTopicµÄÊôÖ÷Broker½øÐзþÎñ£»¶øÔÚDistributedLogÖУ¬¶Áд±»·ÖÀëÔÚ¶Á´úÀíºÍд´úÀíÖнøÐзþÎñ¡£´ËÍ⣬ManagedLedgerÒ²½øÐмǼÏû·ÑµÄÆ«ÒÆ£»¶øDistributedLog½«Æ«ÒÆÁ¿µÄ¼Ç¼½»ÓÉÉϲãÓ¦ÓùÜÀí¡£
ÕâÑùÉè¼ÆÉϵIJîÒìµ¼ÖÂÁ˲úÆ·ÀíÄîÉϵIJ»Í¬£¬Yahoo PulsarÊÇÒ»¸öÏûϢϵͳ£¬¶øDistributedLogÔòÊÇÒ»¸ö»ùÓÚ¸´ÖÆÈÕÖ¾µÄʵʱÊý¾Ý´æ´¢¡£YahooºÍTwitter×÷ΪApache
BookKeeperÉçÇøµÄÁ½¸ö±È½Ï´óµÄʹÓÃÕߣ¬ÔڸĽøApache BookKeeper·½ÃæÒ²×öÁ˺ܴóµÄ¹±Ïס£ |