Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Twitter¿ªÔ´DistributedLog£¬¶Ô±ÈKafkaºÍÑÅ»¢Pulsar
 
×÷Õߣº¹ù˹½Ü À´Ô´£ºINFOQ ·¢²¼ÓÚ£º 2016-11-15
  10867  次浏览      28
 

ǰÑÔ

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·½ÃæÒ²×öÁ˺ܴóµÄ¹±Ïס£

   
10867 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Óû§¹ÊÊÂÓëÓÃÀý
½»»¥Éè¼ÆÊ¦Ö®¾«Òæ»­²¼Æª
Êý¾Ý·ÖÎöÖ®Óû§»­Ïñ·½·¨Óëʵ¼ù
ÈçºÎ¿ìËÙ½¨Á¢Óû§Ä£ÐÍ£¿
 
Ïà¹ØÎĵµ

Óû§½çÃæÉè¼Æ
¸øÆóÒµ×ö´óÊý¾Ý¾«×¼Óû§»­Ïñ
Óû§ÌåÑéºÍ½»»¥Éè¼Æ
´óÊý¾ÝϵÄÓû§»­Ïñ
Ïà¹Ø¿Î³Ì

Óû§ÌåÑé&½çÃæÉè¼Æ
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
Óû§Ñо¿ÓëÓû§½¨Ä£
Óû§ÌåÑéµÄÈí¼þUIÉè¼Æ×î¼Ñʵ¼ù
×îл¼Æ»®
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ 12-11[±±¾©]
LLM´óÄ£ÐÍÓëÖÇÄÜÌ忪·¢ÊµÕ½ 12-18[±±¾©]
ǶÈëʽÈí¼þ²âÊÔ 12-25[±±¾©]
AIÔ­ÉúÓ¦ÓõÄ΢·þÎñ¼Ü¹¹ 1-9[±±¾©]
AI´óÄ£Ðͱàд¸ßÖÊÁ¿´úÂë 1-14[±±¾©]
ÐèÇó·ÖÎöÓë¹ÜÀí 1-22[±±¾©]

´ÓÊÖ»úµÇÂ¼Ò³ÃæÉè¼ÆÏëµ½µÄ
ÈçºÎ°ÑÎÞÒâʶÒýÈë½»»¥Éè¼ÆÖÐ
½»»¥Éè¼ÆµÄÕæÏà
µ±ÊÓ¾õÉè¼ÆÊ¦ÓöÉϲúÆ·¾­Àí
ÊÖ»ú½»»¥Éè¼ÆÔ­Ôò
Óû§ÌåÑéÖ®ÍøÒ³°å¿éÉè¼Æ

ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
¿ÉÓÃÐÔÆÀ¹À
Desktop¼°Web-basedÊÓ¾õÉè¼Æ
ÈÏÖªÔ­ÀíÓëÉè¼ÆÓ¦ÓÃ
ÊÖ»úÓû§½çÃæÉè¼Æ

±±¾© ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ
±±¾© Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉϺ£ »ªÎª Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉîÛÚ Óû§ÌåÑé& ½çÃæÉè¼Æ
°®Á¢ÐÅ ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
±±¾© Óû§ÌåÑéÓë½çÃæÉè¼Æ
¸£ÖÝ ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ