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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎ´òÔì¸ß¿É¿¿¸ßÐÔÄܵÄÏûÏ¢¶ÓÁУ¨ZZMQ£©
 
  3499  次浏览      27
 2018-8-23
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚÌÚÑ¶ÔÆ£¬Ö÷Òª½éÉÜÁËתתZZMQÔڼܹ¹¡¢´æ´¢ÏµÍ³¡¢±£Ö¤ÏûÏ¢¿É¿¿´æ´¢£¬¿É¿¿Ïû·Ñ£¬ÒÔ¼°nettyµÄʹÓõȡ£

±³¾°

»¥ÁªÍø¹«Ë¾Ê¹ÓÃ×îÆµ·±µÄ·þÎñµ÷ÓÃ×é¼þÊÇRPC¿ò¼Ü£¬RPCͬ²½µ÷ÓÃÓÐЩ³¡¾°²¢²»ÊǺÜÊÊÓ㬶øÕâЩ³¡¾°¸ÕºÃÊÇÒ»¸ö¿É¿¿MQµÄÊÊÓó¡¾°¡£

ÎÒÃÇ¿´¿´RPCµ÷Óõij¡¾°¡£·þÎñAµ÷ÓÃÈçͼËùʾ·þÎñ¡£ÔÚÕý³£Çé¿öÏ£¬Ò»°ã¶¼²»»áÓÐÎÊÌâ¡£µ«ÊÇÔÚÒÔÏÂÇé¿ö£¬·þÎñAµ÷ÓûáÓöµ½ÎÊÌâ¡£

ÎÊÌâÒ»£ºÈç¹ûÓÐÁ÷Á¿¸ß·å£¬·þÎñBÏìÓ¦³¬Ê±£¬»á·¢ÉúʲôÇé¿ö£¿

Õû¸öRPCµ÷ÓÃÁ´Â·¶¼»áÊܵ½Ó°Ï죬ÉõÖÁ·¢ÉúÑ©±À¡£

ÎÊÌâ¶þ£º·þÎñAÂß¼­¸´ÔÓ£¬Âß¼­ñîºÏÑÏÖØ£¬Ôõô×ö²ð·Ö£¿

°ÑһЩµ÷ÓÃÁ´Â·ÖпÉÒÔÒì²½µ÷ÓõÄÂß¼­µ÷ÕûΪÏû·ÑMQÏûÏ¢¡£

ÎÊÌâÈý£ºRPCµ÷Óã¬jarÒÀÀµÎÊÌ⣿·þÎñBÉý¼¶£¬µ÷ÓÃBµÄÏà¹Ø·þÎñÊÇ·ñÐèÒªÉý¼¶£¿

RPC·þÎñÐèÒªÒÀÀµÉú³ÉµÄ½Ó¿ÚÃèÊöjar£¬·þÎñ½Ó¿ÚÉý¼¶Ò»°ãºÜÄÑ×öµ½Ïòǰ¼æÈÝ£¬ËùÒÔÏà¹Øµ÷Ó÷½Ò²ÐèÒªÉý¼¶¡£

MQÊÇÒÔÏûÏ¢ÎªÔØÌåµÄ¿É¿¿Òì²½µ÷ÓõĿò¼Ü£¬ÄܺܺõÄÓ¦¶ÔÉÏÃæÈý¸öÎÊÌâ¡£Á÷Á¿Ï÷·å£¬MQÊÇÌìȻ֧³ÖµÄ£¬ÒòΪMQÓпɿ¿´æ´¢£¬¿ÉÒÔÂ䵨¡£½âñîºÏ£¬½»¸øMQÒ²ºÜºÏÊÊ¡£ÒòΪMQµÄ½ÓÈë·½´¦ÀíµÄÊÇÏûÏ¢£¬×öµ½Ïòǰ¼æÈÝÒ²ÊDZȽÏÈÝÒ׵ġ£

ʹÓÃMQÖ®ºó£¬·þÎñA,Bͨ¹ýMQ×öµ½ËÉñîºÏ£¬Ò²ÄܺܺõÄÓ¦¶ÔÁ÷Á¿¸ß·å¡£

MQºÜºÃºÜÇ¿´ó£¬ÊÇRPCµÄÓÐЧ²¹³ä£¬ÄÇÎÊÌâÀ´ÁËÔõôʵÏÖÒ»¸ö¿É¿¿MQ£¿±¾ÎĽáºÏ¶þÊÖ½»Òׯ½Ì¨µÄÌØµã£¬Ïêϸ½éÉÜתתZZMQ¼Ü¹¹Éè¼ÆÊµ¼ù¡£

תתÏûÏ¢¶ÓÁУ¨ZZMQ£©¼Ü¹¹Éè¼Æ

Éè¼ÆZZMQ£¬ÎÒÃÇ¿¼ÂǵÄÖØµãÊÇ£º¿É¿¿£¬¸ßÐÔÄÜ£¬ÔËάÓѺ㬽ÓÈë·½±ã£¬¿ÉÒÔÖ§³Ö´óÁ¿¶Ñ»ý£¬ÓÐЧ»º³åÒµÎñ¸ß·å£¬Õë¶ÔÕâЩÐèÇó£¬ÎÒÃÇ×öÁËһЩÉè¼ÆÉϵĿ¼ÂǺÍÈ¡Éᣬ×îÖÕÐγÉÁËÈçϵļܹ¹·½°¸¡£

RegisterCenter ×÷Ϊע²áÖÐÐÄ£¬¸ºÔð·ÓÉ·þÎñ£¬ÎÞ״̬£¬Ã¿¸öNameNode¶¼ÊǶԵȵģ¬NameNode ¿ÉÒÔÈÎÒâˮƽÀ©Õ¹¡£NameNode ÓëbrokerºÍClient¶¼½¨Á¢Á˳¤Á¬½Ó¡£Broker ÄÚÊÇÖ÷´ÓÁ½Ì¨»úÆ÷£¬slave´ÓmasterÀ­È¡ÏûÏ¢LogºÍÏû·ÑOffset£¬×öHA¡£BrokerÒ²¿ÉÒÔ·½±ãµØË®Æ½À©Õ¹£¬¼ÓÈëлúÆ÷£¬¸üÐÂtopicµÄ·ÓÉÐÅÏ¢£¬client»á¶¨Ê±¸üзÓÉÐÅÏ¢¡£Consumer ºÍProducer ¶¼ÐèÒªµ½×¢²áÖÐÐÄ×¢²á£¬Í¬Ê±À­È¡TopicµÄ·ÓÉÐÅÏ¢¡£Management Protal ÊÇÓÃÀ´¹ÜÀí¼¯Èº£¬Î¬»¤TopicµÄÏà¹ØÁªÏµÈËÐÅÏ¢¡£

´æ´¢Éè¼Æ

Ò»¸ö¸ßÐÔÄÜZZMQµÄÆ¿¾±ºÍÄѵã¾ÍÊǴ洢ϵͳ£¬´æ´¢ÏµÍ³¹Øºõµ½ÐÔÄÜ£¬Êý¾Ý¿É¿¿´æ´¢ÊµÏÖÊÇ·ñ¼òµ¥£¬Êý¾Ý±¸·Ý¿ØÖÆ£¬ÏûϢ״̬µÄ±íʾ¡£

Ŀǰ×î³£¼ûµÄÊÇÒÔKafkaΪ´ú±íµÄLog-append-file£¬Îļþ˳Ðòд£¬×·ÇóÍÌÍÂÁ¿£¬ÏûÏ¢Ïû·Ñ״̬ͨ¹ýoffsetÀ´¿ØÖÆ£¬»¹ÓÐÒÔ¸÷ÖÖ´æ´¢ÒýÇæÊµÏֵ쬱ÈÈçleveldb£¨activemq£©£¬rocksdbµÈ¡£

´ÓÕâÕÅͼ£¨http://queue.acm.org/detail.cfm?id=1563874£©£¬ÎÒÃÇÄÜ¿´µ½´ÅÅÌ˳Ðò¶ÁдµÄÐÔÄÜÉõÖÁ³¬¹ýÁËÄÚ´æËæ»ú·ÃÎʵÄÐÔÄÜ£¬ÄÜ´ïµ½50¶àM/s¡£²¢ÇÒ£¬Ïà¶ÔÀ´Ëµ£¬Log-append-file¼òµ¥Ò»Ð©¡£×îºóÑ¡ÔñÁËÀàËÆkafkaµÄlog-append-file¡£

Kafkatopic·Ö³Épartition£¬Ë³Ðò¶Áд£¬partitionÓÐÒ»¸öСµÄÎÊÌ⣬µ¥»ú²»ÄÜÖ§³Å´óÁ¿µÄtopic£¬µ¥»úÄÜÖ§³Ö¼¸°Ù·ÖÇø£¬Ëæ×Å·ÖÇøÊýÁ¿µÄÔö¼Ó£¬ÐÔÄÜÓÐËùϽµ¡£¶øÎÒÃǵij¡¾°µÄÊÇ£ºÒµÎñ´ó²¿·ÖtopicµÄqps²¢²»Ïñkafka´¦ÀíµÄÈÕÖ¾ÎļþÄÇô¸ß£¬Ï£ÍûÄܵ¥»úÖ§³Å¸ü¶àµÄtopicÊýÁ¿¡£

Õë¶ÔÕâÒ»µã£¬ÎÒÃÇ×öÁËһЩµ÷Õû£¬topicÏûÏ¢±¾Éí²»ÔÙ·ÖÇø£¬Í³Ò»´æ´¢£¬Ê¹Óøü¼ÓÇáÁ¿µÄConsumer QueueʵÏÖpartitionµÄ¹¦ÄÜ¡£Consumer Queue´æ´¢µÄÖ»ÊÇλÖÃÐÅÏ¢£¬¸ü¼ÓÇáÁ¿£¬ÄÜ×öµ½Ö§³Ö¸ü¶àµÄtopic¡£

ÏûϢдÈëpageCache£¬ÔÙDispatchµ½¶ÔÓ¦µÄConsumer QueueÖÐÈ¥£¬Consumer QueueÖ»ÓÐÏûÏ¢LogµÄoffsetÐÅÏ¢£¬ÒÔ¼°´óСºÍÆäËûµÄһЩԪÊý¾Ý£¬Õ¼ÓúÜСµÄ¿Õ¼ä¡£ÕâÑùÉè¼Æ£¬¾­¹ýÑéÖ¤£¬µ¥»úÄܹ»Ö§³Ö¼¸Ç§¶ÓÁС£

ÕâÑùµÄÉè¼ÆÒ²´øÀ´ÁËÒ»¸ö¸±×÷Óã¬ÒòΪÏûÏ¢±¾ÉíÊÇͳһ´æ´¢£¬topicÊýÁ¿¶àµÄʱºò£¬ÏûÏ¢µÄ¶ÁÈ¡ÊÇËæ»ú¶Á£¬ÐÔÄÜÓÐЩÐíϽµ£¬Ä¿Ç°£¬ÎÒÃÇͨ¹ýÓÅ»¯linuxpageCacheºÍIOµ÷¶È£¬¿ªÆôϵͳԤ¶Á£¬ÐÔÄÜÏà¶Ô˳Ðò¶ÁûÓÐÌ«´óϽµ¡£

ZZMQÏûÏ¢¶©ÔÄÄ£ÐÍ

Consumergroup A ÓÐÁ½¸öÏû·ÑÕßʵÀý£¬BÒ²ÓÐÁ½¸öÏû·ÑÕßʵÀý£¬Í¬Ê±¶©ÔÄÁËTopic-A£¬ËûÃÇÖ®¼äµÄÏû·Ñ½ø¶ÈÊǶÀÁ¢µÄ¡£Group´¦ÀíÏàͬtopic£¬Ïû·ÑÂß¼­Ò»ÖµÄÒ»¸öÕûÌ壬°üº¬²»Í¬µÄÏû·ÑʵÀý¡£

ConsumerGroup»ù±¾ÉÏÊǸúkafkaµÄGroupÒ»Ö£¬Óɲ»Í¬µÄConsumerGroupÀ´Çø·Ö²»Í¬µÄÏû·Ñ×飬ά»¤Group¶ÔÓ¦µÄÏû·Ñ״̬£¬Äܷܺ½±ãµÄʵÏÖ¡£

ÍøÂç

»ùÓÚnettyʵÏÖÁËÍøÂç²ãµÄЭÒé¡£Netty¶Ônio£¬ºÍreactor×öÁ˺ܺõķâ×°£¬netty4.x ¶Ôdirect bufferµÄÀûÓã¬ÒÔ¼°¸ßЧµÄbuffer·ÖÅäºÍ»ØÊÕËã·¨£¬nettyÒ²½â¾öÁËTCPЭÒéµÄ°ë°üÎÊÌ⣬ʹÓ÷½²»ÐèÒª×Ô¼º×éTCP°ü¡£ÓÃnettyʵÏÖÍøÂç²ãЭÒé£¬ÍøÂç²ãµÄ¿É¿¿ÓÉnettyÀ´×ö£¬¼õÉÙÁ˸´ÔÓ¶È¡£

Push »¹ÊÇPull

Õâ¸öÉè¼ÆµÄ¿¼ÂÇÖ÷ÒªÊÇÁ½¸ö·½Ã棺ÂýÏû·Ñ£¬ÒÔ¼°Ïû·ÑÑÓ³Ù¡£Ö÷¶¯PushÄÜ×öµ½µÍµÄÏû·ÑÑÓ³Ù£¬µ«ÊǶÔÓÚÂýÏû·Ñ£¬²»ÄܺܺõÄÓ¦¶Ô£¬Ö÷¶¯PushÐèÒª¸ÐÖªÏû·ÑÕßµÄËÙÂÊ£¬²»ÖÁÓÚpush Ì«¿ì£¬°ÑÏû·ÑÕßѹ¿åÁË¡£Pullģʽ£¬ÓÉÏû·ÑÕß¿ØÖÆÀ­È¡µÄËÙ¶È£¬ÄܺܺõÄÓ¦¶ÔÂýÏû·ÑµÄÎÊÌ⣬µ«ÊÇ£¬Pullģʽ¶ÔÏû·ÑÑÓ³Ù²»Ãô¸Ð£¬À­È¡µÄƵÂʲ»ºÃ¿ØÖÆ£¬´¦Àí²»ºÃÓпÉÄÜÔì³ÉCPUʹÓÃÂÊì­Éý¡£²ÎÕÕkafkaµÄpull£¬ÊµÏÖÁËlongpull¡£Consumer ÓëBroker½¨Á¢³¤Á¬½Ó£¬Consumer·¢ÆðÀ­È¡ÇëÇó£¬Èç¹ûÓÐÏûÏ¢£¬Broker ·µ»ØÏûÏ¢£¬Èç¹ûûÓÐÏûÏ¢£¬broker holdסÕâ¸öÇëÇóÒ»¶Îʱ¼ä£¬µÈÓÐÏûÏ¢ÔÙnotifyÕâ¸öÇëÇ󣬷µ»Ø¸ø¿Í»§¶Ë¡£»ùÓÚlong pull£¬Ïû·ÑÑÓ³ÙÄܽµµ½¸úpush²î²»¶à£¬Í¬Ê±ÓÖÄÜÓÉConsumer ¿ØÖÆÀ­È¡ËÙ¶È¡£

ÖØ¸´ÏûÏ¢ºÍ˳ÐòÏûÏ¢

ÏûÏ¢ÖØ¸´ÔÚÒ»¸ö¸´ÔÓÍøÂçÌõ¼þϺÜÄѱÜÃâµÄ£¬Èç¹ûÓÉMQ±¾ÉíÀ´×öÈ¥ÖØ£¬´ú¼ÛÌ«´ó£¬ËùÒÔÎÒÃÇÒªÇó½ÓÈëMQµÄÂß¼­×öºÃÃݵȣ¨×´Ì¬»ú»òÕß°æ±¾ºÅµÄһЩ»úÖÆ£©¡£Ë³ÐòÏûÏ¢£¬¸úkafkaÒ»Ñù£¬Consumer queue¸úpartitionÀàËÆ£¬Ò»¸öQueueÄÚ²¿£¬Ïû·ÑÊÇÓÐÐòµÄ¡£Èç¹ûÒª×öµ½ÍêÈ«ÓÐÐò£¬Ö»ÄÜÒ»¸öProducer£¬Ò»¸öConsumer¡£

¸ß¿ÉÓÃ

Broker×éÓÉÖ÷´ÓÁ½Ì¨»úÆ÷¹¹³É£¬¿ÉÒÔÅäÖõIJßÂÔÓÐͬ²½Ë«Ð´ºÍÒì²½¸´ÖÆ¡£Ä¬ÈÏÇé¿ö£¬²ÉÓõÄÒì²½¸´ÖÆ£¬ÓÉslaveÈ¥À­È¡masterÉÏÃæµÄÏûÏ¢LogºÍoffset¡£Broker ½ÓÈëÁËÄÚ²¿µÄ¼à¿ØÏµÍ³£¬Ã¿·ÖÖÓÉϱ¨topicµÄÏû·ÑÇé¿öºÍbroker״̬£¬ÄÜ×öµ½·ÖÖÓ¼¶±ð·¢ÏÖÒì³£Ïû·Ñ¡£ÏûϢдÈëPageCacheÖ®ºó£¬Ä¬ÈÏÊÇÒ첽ˢÅÌ¡£Ò²¿ÉÒÔÅäÖÃΪͬ²½Ë¢ÅÌ£¬Ö»ÓÐË¢Å̳ɹ¦²Å»á·µ»Ø¡£

BrokerµÄĬÈÏÅäÖÃÒ첽ˢÅÌ£¬Master-SlaveÒì²½¸´ÖÆ¡£ClientÏû·ÑÏû·ÑÏûÏ¢µÄ¿É¿¿ÊÇͨ¹ýConsume queueµÄoffsetÀ´±£Ö¤µÄ£¬Client»á¶¨Ê±Éϱ¨ÒѾ­Ïû·Ñ³É¹¦µÄOffsetÐÅÏ¢¡£Èç¹ûClient±»Òì³£killµô£¬Ã»ÓÐÈ·ÈϵÄÏûÏ¢»á±»Client ÖØÐÂÀ­È¡£¬Ïû·Ñ¡£

Ò»ÌõÏûÏ¢µÄÉúÃü¹ý³Ì

Proudcerͨ¹ýÓëNameNodeµÄ·ÓÉÕÒµ½topicµÄbrokerµØÖ·£¬producer·¢ÏûÏ¢£¬nettyÐòÁл¯£¬Í¨¹ýTCP´«Êäµ½¶ÔÓ¦µÄbroker£¬brokerдlogµÄpageCache£¬·µ»Ø¡£Broker DispatchÏûÏ¢µ½¶ÔÓ¦µÄConsumer queue£¬broker»½ÐÑË¢ÅÌỊ̈߳¬broker»½ÐÑslaveͬ²½Ị̈߳¬slaveÀ­È¡ÏûÏ¢¡£

NotifyConsumer À­È¡ÇëÇ󣬾­¹ýnettyÐòÁл¯£¬Í¨¹ýtcpµ½´ïConsumer£¬ConsumerÏû·Ñ³É¹¦£¬ClientÉϱ¨Ïû·Ñ³É¹¦offset¡£

Broker³Ö¾Ã»¯Offset£¬slaveͬ²½offset¡£ÈýÌìÖ®ºó£¬brokerɾ³ýÏûÏ¢¡£

×ܽá

±¾ÎÄÖ÷Òª½éÉÜÁËתתZZMQÔڼܹ¹¡¢´æ´¢ÏµÍ³¡¢±£Ö¤ÏûÏ¢¿É¿¿´æ´¢£¬¿É¿¿Ïû·Ñ£¬ÒÔ¼°nettyµÄʹÓõȾ­Ñé

   
3499 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù