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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
µÎµÎ³öÐлùÓÚRocketMQ¹¹½¨ÆóÒµ¼¶ÏûÏ¢¶ÓÁзþÎñµÄʵ¼ù
 
  1996  次浏览      28
 2018-11-26
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚÍøÂ磬ÎĽéÉÜÁ˵εγöÐÐΪʲôѡÔñ RocketMQ ×÷Ϊ³öÐÐÒµÎñµÄÏûÏ¢¶ÓÁнâ¾ö·½°¸ÒÔ¼°ÈçºÎ¹¹½¨×Ô¼ºµÄÏûÏ¢¶ÓÁзþÎñµÈ¡£

µÎµÎ³öÐеÄÏûÏ¢¼¼ÊõÑ¡ÐÍ

1.1 ÀúÊ·

³õÆÚ£¬¹«Ë¾ÄÚ²¿Ã»ÓÐרÃŵÄÍŶÓά»¤ÏûÏ¢¶ÓÁзþÎñ£¬ËùÒÔÏûÏ¢¶ÓÁÐʹÓ÷½Ê½½Ï¶à£¬Ö÷ÒªÒÔKafkaΪÖ÷£¬ÓÐÒµÎñÖ±Á¬µÄ£¬Ò²ÓÐͨ¹ý¶ÀÁ¢µÄ·þÎñת·¢ÏûÏ¢µÄ¡£ÁíÍâÓÐһЩÍŶÓÒ²»áÓÃRocketMQ¡¢RedisµÄlist£¬ÉõÖÁ»áÓñȽϷÇÖ÷Á÷µÄbeanstalkkd¡£µ¼ÖµĽá¹û¾ÍÊÇ£¬±È½Ï»ìÂÒ£¬ÎÞ·¨Î¬»¤£¬×ÊԴʹÓÃÒ²ºÜÀË·Ñ¡£

1.2 ΪʲôÆúÓà Kafka

Ò»¸öºËÐÄÒµÎñÔÚʹÓÃKafkaµÄʱºò£¬³öÏÖÁ˼¯ÈºÊý¾ÝдÈë¶¶¶¯·Ç³£ÑÏÖØµÄÇé¿ö£¬¾­³£»áÓÐÊý¾Ýдʧ°Ü¡£

Ö÷ÒªÓÐÁ½µãÔ­Òò£º

Ëæ×ÅÒµÎñÔö³¤£¬TopicµÄÊý¾ÝÔö¶à£¬¼¯Èº¸ºÔØÔö´ó£¬ÐÔÄÜϽµ£»

ÎÒÃÇÓõÄÊÇKafka0.8.2ÄǸö°æ±¾£¬Óиöbug£¬»áµ¼Ö¸±±¾ÖØÐ¸´ÖÆ£¬¸´ÖƵÄʱºòÓдóÁ¿µÄ¶Á£¬ÎÒÃÇ´æ´¢ÅÌÓõÄÊÇ»úеÅÌ£¬µ¼Ö´ÅÅÌIO¹ý´ó£¬Ó°ÏìдÈë¡£

ËùÒÔÎÒÃǾö¶¨×ö×Ô¼ºµÄÏûÏ¢¶ÓÁзþÎñ¡£

Ê×ÏÈÐèÒª½â¾öÒµÎñ·½ÏûÏ¢Éú²úʧ°ÜµÄÎÊÌâ¡£ÒòΪÕâ¸öKafkaÓõÄÊÇ·¢²¼/¶©ÔÄģʽ£¬Ò»¸ötopicµÄ¶©ÔÄ·½»áÓÐºÜ¶à£¬Éæ¼°µ½µÄÏÂÓÎÒµÎñÒ²¾Í·Ç³£¶à£¬Ã»°ì·¨Ò»¿ÚÆøÖ±½ÓÌæ»»Kafka£¬Ç¨ÒƵ½ÐµÄÒ»¸öÏûÏ¢¶ÓÁзþÎñÉÏ¡£ËùÒÔÎÒÃǵ±Ê±µÄ·½°¸ÊǼÓÁËÒ»²ã´úÀí£¬È»ºóÀûÓÃcodis×÷Ϊ»º´æ£¬½â¾öÁËKafka²»¶¨ÆÚдÈëʧ°ÜµÄÎÊÌ⣬ÈçÉÏͼ¡£µ±ºóÃæµÄKafka³öÏÖ²»¿ÉдÈëµÄʱºò£¬ÎÒÃǾͻáÏȰÑÊý¾ÝдÈëµ½codisÖУ¬È»ºóÑÓʱ½øÐÐÖØÊÔ£¬Ö±µ½Ð´³É¹¦ÎªÖ¹¡£

1.3 ΪʲôѡÔñ RocketMQ

¾­¹ýһϵÁеĵ÷ÑкͲâÊÔÖ®ºó£¬ÎÒÃǾö¶¨²ÉÓÃRocketMQ£¬¾ßÌåÔ­ÒòÔÚºóÃæ»á½éÉÜ¡£

ΪÁËÖ§³Ö¶àÓïÑÔ»·¾³¡¢½â¾öÒ»Ð©Ç¨ÒÆºÍijЩҵÎñµÄÌØÊâÐèÇó£¬ÎÒÃÇÓÖÔÚÏû·Ñ²à¼ÓÉÏÁËÒ»¸ö´úÀí·þÎñ¡£È»ºóÐγÉÁËÕâôһ¸öºËÐÄ¿ò¼Ü¡£ÒµÎñ¶ËÖ»¸ú´úÀí²ã½»»¥¡£ÖмäµÄÏûÏ¢ÒýÇæ£¬¸ºÔðÏûÏ¢µÄºËÐÄ´æ´¢¡£ÔÚ֮ǰµÄ»ù±¾¿ò¼ÜÖ®ºó£¬ÎÒÃǺóÃæ¾ÍÖ÷ÒªÎ§ÈÆÈý¸ö·½Ïò×ö¡£

Ç¨ÒÆ£¬°Ñ֮ǰÌáµ½µÄËùÓÐÎ廨°ËÃŵĶÓÁл·¾³£¬È«²¿Ç¨ÒƵ½ÎÒÃÇÉÏÃæ¡£ÕâÀïÃæµÄÇ¨ÒÆ·½°¸ºóÃæ»á¸ú´ó¼Ò½éÉÜһϡ£

¹¦Äܵü´úºÍ³É±¾ÐÔÄÜÉϵÄÓÅ»¯¡£

·þÎñ»¯£¬ÒµÎñÖ±½Óͨ¹ýƽ̨½çÃæÀ´ÉêÇë×ÊÔ´£¬ÉêÇëµ½Ö®ºóÖ±½ÓʹÓá£

1.4 ÑݽøÖеļܹ¹

ÕâÕÅͼÊÇÎÒÃÇÏûÏ¢¶ÓÁзþÎñµÄÒ»¸ö±È½ÏеÄÏÖ×´¡£ÏÈ×ÝÏò¿´£¬ÉÏÃæÊÇÉú²úµÄ¿Í»§¶Ë£¬°üÀ¨ÁË7ÖÖÓïÑÔ¡£È»ºóÊÇÎÒÃǵÄÉú²ú´úÀí·þÎñ¡£ÔÚÖмäµÄÊÇÎÒÃǵÄÏûÏ¢´æ´¢²ã¡£Ä¿Ç°Ö÷ÒªµÄÏûÏ¢´æ´¢ÒýÇæÊÇRocketMQ¡£È»ºó»¹ÓÐһЩÔÚÇ¨ÒÆ¹ý³ÌÖеÄKafka¡£ÁíÒ»¸öÊÇChronos£¬ËüÊÇÎÒÃÇÑÓ³ÙÏûÏ¢µÄÒ»¸ö´æ´¢ÒýÇæ¡£

ÔÙÏÂÃæ¾ÍÊÇÏû·Ñ´úÀí¡£Ïû·Ñ´úÀíͬÑùÌṩÁ˶àÖÖÓïÑԵĿͻ§¶Ë£¬»¹Ö§³Ö¶àÖÖЭÒéµÄÏûÏ¢Ö÷¶¯ÍÆË͹¦ÄÜ£¬°üÀ¨HTTP ЭÒé RESTful·½Ê½¡£½áºÏÎÒÃǵÄgroovy½Å±¾¹¦ÄÜ£¬»¹ÄÜʵÏÖ½«ÏûÏ¢Ö±½Óת´æµ½Redis¡¢HbaseºÍHDFSÉÏ¡£´ËÍ⣬ÎÒÃÇ»¹ÔÚÂ½Ðø½ÓÈë¸ü¶àµÄÏÂÓδ洢¡£

³ýÁ˴洢ϵͳ֮Í⣬ÎÒÃÇÒ²¶Ô½ÓÁËʵʱ¼ÆËãÆ½Ì¨£¬ÀýÈçFlink£¬Spark£¬Storm£¬×ó±ßÊÇÎÒÃǵÄÓû§¿ØÖÆÌ¨ºÍÔËά¿ØÖÆÌ¨¡£Õâ¸öÊÇÎÒÃÇ·þÎñ»¯µÄÖØµã¡£Óû§ÔÚÐèҪʹÓöÓÁеÄʱºò£¬¾Íͨ¹ý½çÃæÉêÇëTopic£¬Ìîд¸÷ÖÖÐÅÏ¢£¬°üÀ¨Éí·ÝÐÅÏ¢£¬ÏûÏ¢µÄ·åÖµÁ÷Á¿£¬ÏûÏ¢´óС£¬ÏûÏ¢¸ñʽµÈµÈ¡£È»ºóÏû·Ñ·½Í¨¹ýÎÒÃǵĽçÃæ£¬¾Í¿ÉÒÔÉêÇëÏû·Ñ¡£

ÔËά¿ØÖÆÌ¨£¬Ö÷Òª¸ºÔðÎÒÃǼ¯ÈºµÄ¹ÜÀí£¬×Ô¶¯»¯²¿Êð£¬Á÷Á¿µ÷¶È£¬×´Ì¬ÏÔʾ֮ÀàµÄ¹¦ÄÜ¡£×îºóËùÓÐÔËάºÍÓû§²Ù×÷»áÓ°ÏìÏßÉϵÄÅäÖ㬶¼»áͨ¹ýZooKeeper½øÐÐͬ²½¡£

ΪʲôѡÔñRocketMQ

ÎÒÃÇÎ§ÈÆÒÔÏÂÁ½¸öγ¶È½øÐÐÁ˶ԱȲâÊÔ£¬½á¹ûÏÔʾRocketMQµÄЧ¹û¸üºÃ¡£

2.1 ²âÊÔ-topicÊýÁ¿µÄÖ§³Ö

²âÊÔ»·¾³£ºKafka 0.8.2£¬RocketMQ 3.4.6£¬1.0 Gbps Network£¬16 threads

²âÊÔ½á¹ûÈçÏ£º

ÕâÕÅͼÊÇKafkaºÍRocketMQÔÚ²»Í¬topicÊýÁ¿ÏµÄÍÌͲâÊÔ¡£ºá×ø±êÊÇÿÃëÏûÏ¢Êý£¬×Ý×ø±êÊDzâÊÔcase¡£Í¬Ê±¸²¸ÇÁËÓÐÎÞÏû·Ñ£¬ºÍ²»Í¬ÏûÏ¢ÌåµÄ³¡¾°¡£Ò»¹²8×é²âÊÔÊý¾Ý£¬Ã¿×éÊý¾Ý·Ö±ðÔÚTopic¸öÊýΪ16¡¢32¡¢64¡¢128¡¢256ʱ»ñµÃµÄ£¬Ã¿¸ötopic°üÀ¨8¸öPartition¡£ÏÂÃæËÄ×éÊý¾ÝÊÇ·¢ËÍÏûÏ¢´óСΪ128×Ö½ÚµÄÇé¿ö£¬ÉÏÃæËÄÖÖÊÇ·¢ËÍ2kÏûÏ¢´óСµÄÇé¿ö¡£on ±íʾÏûÏ¢·¢Ë͵Äʱºò£¬Í¬Ê±½øÐÐÏûÏ¢Ïû·Ñ£¬off±íʾ½ö½øÐÐÏûÏ¢·¢ËÍ¡£

ÏÈ¿´×îÉÏÃæÒ»×éÊý¾Ý£¬ÓõÄÊÇKafka£¬¿ªÆôÏû·Ñ£¬Ã¿ÌõÏûÏ¢´óСΪ2048×Ö½Ú¿ÉÒÔ¿´µ½£¬Ëæ×ÅTopicÊýÁ¿Ôö¼Ó£¬µ½256 TopicÖ®ºó£¬ÍÌͼ«¾ßϽµ¡£µÚ¶þ×éÊÇÊÇRocketMQ¡£¿ÉÒÔ¿´µ½£¬TopicÔö´óÖ®ºó£¬Ó°Ïì·Ç³£Ð¡¡£µÚÈý×éºÍµÚËÄ×飬ÊÇÉÏÃæÁ½×鹨±ÕÁËÏû·ÑµÄÇé¿ö¡£½áÂÛ»ù±¾ÀàËÆ£¬ÕûÌåÍÌÍÂÁ¿»á¸ßÄÇôһµãµã¡£

ÏÂÃæµÄËÄ×é¸úÉÏÃæµÄÇø±ðÊÇʹÓÃÁË128×Ö½ÚµÄСÏûÏ¢Ìå¡£¿ÉÒÔ¿´µ½£¬KafkaÍÌÍÂÊÜTopicÊýÁ¿µÄÓ°ÏìÌØ±ðÃ÷ÏÔ¡£¶Ô±ÈÀ´¿´£¬ËäÈ»topic±È½ÏСµÄʱºò£¬RocketMQÍÌͽÏС£¬µ«ÊÇ»ù±¾·Ç³£Îȶ¨£¬¶ÔÓÚÎÒÃÇÕâÖÖ¹²Ïí¼¯ÈºÀ´Ëµ±È½ÏÓѺá£

2.2 ²âÊÔ-ÑÓ³Ù

Kafka

²âÊÔ»·¾³£ºKafka 0.8.2.2£¬topic=1/8/32£¬Ack=1/all£¬replica=3

²âÊÔ½á¹û£º

£¨ºá×ø±ê¶ÔÓ¦ÍÌÍ£¬×Ý×ø±ê¶ÔÓ¦ÑÓ³Ùʱ¼ä£©

ÉÏÃæµÄÒ»×éµÄ3ÌõÏß¶ÔÓ¦Ack=3£¬ÐèÒª3¸ö±¸·Ý¶¼È·ÈϺó²ÅÍê³ÉÊý¾ÝµÄдÈë¡£ÏÂÃæµÄÒ»×éµÄ3ÌõÏß¶ÔÓ¦Ack=1£¬ÓÐ1¸ö±¸·ÝÊÕµ½Êý¾Ýºó¾Í¿ÉÒÔÍê³ÉдÈë¡£¿ÉÒÔ¿´µ½ÏÂÃæÒ»×éÖ»ÐèÒªÖ÷±¸·ÝÈ·ÈϵÄдÈ룬ÑÓ³ÙÃ÷ÏԽϵ͡£Ã¿×éµÄÈýÌõÏßÖ®¼äÖ÷ÒªÊÇTopicÊýÁ¿µÄÇø±ð£¬TopicÊýÁ¿Ôö¼Ó£¬ÑÓ³ÙÒ²Ôö´óÁË¡£

RocketMQ

²âÊÔ»·¾³£º

RocketMQ 3.4.6£¬brokerRole=ASYNC/SYNC_MASTER, 2 Slave£¬

flushDiskType=SYNC_FLUSH/ASYNC_FLUSH

²âÊÔ½á¹û£º

ÉÏÃæÁ½ÌõÊÇͬ²½Ë¢Å̵ÄÇé¿ö£¬ÑÓ³ÙÏà¶Ô±È½Ï¸ß¡£ÏÂÃæµÄÊÇÒ첽ˢÅÌ¡£³ÈÉ«µÄÏßÊÇͬ²½Ö÷´Ó£¬À¶É«µÄÏßÊÇÒì²½Ö÷´Ó¡£È»ºó¿ÉÒÔ¿´µ½ÔÚ¸±±¾Í¬²½¸´ÖƵÄÇé¿öÏ£¬¼´³ÈÉ«µÄÏߣ¬4wµÄTPSÖ®ÄÚ¶¼²»³¬¹ý1ms¡£ÓÃÕâÌõ³ÈÉ«µÄÏߺÍÉÏÃæKafkaµÄͼÖеÄÉÏÃæÈýÌõÏߺáÏò±È½ÏÀ´¿´£¬Kafka³¬¹ý1w TPS ¾Í³¬¹ý1msÁË¡£KafkaµÄÑÓ³ÙÃ÷ÏÔ¸ü¸ß¡£

ÈçºÎ¹¹½¨×Ô¼ºµÄÏûÏ¢¶ÓÁÐ

3.1 ÎÊÌâÓëÌôÕ½

ÃæÁÙµÄÌôÕ½£¨Ë³Ê±Õë¿´£©

¿Í»§¶ËÓïÑÔ£¬ÐèÒªÖ§³ÖPHP¡¢Go¡¢Java¡¢C++£»

Ö»ÓÐ3¸ö¿ª·¢ÈËÔ±£»

¾ö¶¨ÓÃRocketMQ£¬µ«ÊÇû¿´¹ýÔ´Â룻

ÉÏÏßʱ¼ä½ô£¬ÏßÉϵÄKafka»¹ÓÐÎÊÌ⣻

¿ÉÓÃÐÔÒªÇó¸ß¡£

 

ʹÓÃRocketMQʱµÄÁ½¸öÎÊÌ⣺

¿Í»§¶ËÓïÑÔÖ§³Ö²»È«£¬ÒÔJavaΪÖ÷£¬¶øÎÒÃÇ»¹ÐèÒªÖ§³ÖPHP¡¢Go¡¢C++£»

¹¦ÄÜÌØ±ð¶à£¬Èçtag¡¢property¡¢Ïû·Ñ¹ýÂË¡¢RETRYtopic¡¢ËÀÐŶÓÁС¢ÑÓ³ÙÏû·ÑÖ®ÀàµÄ¹¦ÄÜ£¬µ«Õâ¶ÔÎÒÃÇÎȶ¨ÐÔά»¤À´Ëµ£¬ÌôÕ½·Ç³£´ó¡£

Õë¶ÔÒÔÉÏÁ½¸öÎÊÌâµÄ½â¾ö°ì·¨£¬ÈçÏÂͼËùʾ£º

ʹÓÃThriftRPC¿ò¼ÜÀ´½â¾ö¿çÓïÑÔµÄÎÊÌ⣻

¼ò»¯µ÷Óýӿڡ£¿ÉÒÔÈÏΪֻÓÐÁ½¸ö½Ó¿Ú£¬sendÓÃÀ´Éú²ú£¬pullÓÃÀ´Ïû·Ñ¡£

Ö÷Òª²ßÂÔ¾ÍÊǼá³ÖKISSÔ­Ôò£¨Keep it simple, stupid£©£¬±£³Ö¼òµ¥£¬ÏȽâ¾ö×îÖ÷ÒªµÄÎÊÌ⣬ÈÃÏûÏ¢Äܹ»Á÷תÆðÀ´¡£È»ºóÎÒÃÇ°ÑÆäËûÖ÷ÒªÂß¼­¶¼·ÅÔÚÁËproxyÕâÒ»²ãÀ´×ö£¬±ÈÈçÏÞÁ÷¡¢È¨ÏÞÈÏÖ¤¡¢ÏûÏ¢¹ýÂË¡¢¸ñʽת»¯Ö®ÀàµÄ¡£ÕâÑù£¬ÎÒÃǾÍÄܾ¡¿ÉÄܵؼò»¯¿Í»§¶ËµÄʵÏÖÂß¼­£¬²»ÐèÒª°ÑºÜ¶à¹¦ÄÜÓø÷ÖÖÓïÑÔ¶¼Ð´Ò»±é¡£

3.2 Ç¨ÒÆ·½°¸

¼Ü¹¹È·¶¨ºó£¬½ÓÏÂÀ´ÊÇÎÒÃǵÄÒ»¸öÇ¨ÒÆ¹ý³Ì¡£

Ç¨ÒÆÕâ¸öÊÂÇ飬ÔÚpub-subµÄÏûϢģÐÍÏ£¬»á±È½Ï¸´ÔÓ¡£ÒòΪÏÂÓεÄÊý¾ÝÏû·Ñ·½¿ÉÄܺܶ࣬ÉÏÓεÄÊý¾Ýû·¨×öµ½Ò»µ¶ÇÐÁ÷Á¿£¬Õâ¾Í»áµ¼ÖÂÕû¸öÇ¨ÒÆµÄÖÜÆÚÌØ±ð³¤¡£È»ºóÎÒÃÇΪÁ˾¡¿ÉÄܵؼõÉÙÒµÎñÇ¨ÒÆµÄ¸ºµ££¬¼Ó¿ìÇ¨ÒÆµÄЧÂÊ£¬ÎÒÃÇÔÚProxy²ãÌṩÁË˫дºÍË«¶ÁµÄ¹¦ÄÜ¡£

˫д£ºProcucerProxyͬʱдRocketMQºÍKafka£»

Ë«¶Á£ºConsumerProxyͬʱ´ÓRocketMQºÍKafkaÏû·ÑÊý¾Ý¡£

ÓÐÁËÕâÁ½¸ö¹¦ÄÜÖ®ºó£¬ÎÒÃǾÍÄÜÌṩÒÔÏÂÁ½ÖÖÇ¨ÒÆ·½°¸ÁË¡£

3.2.1 ˫д

Éú²ú¶Ë˫д£¬Í¬Ê±ÍùKafkaºÍRocketMQдͬÑùµÄÊý¾Ý£¬±£Ö¤Á½±ßÔÚÕû¸öÇ¨ÒÆ¹ý³ÌÖж¼ÓÐͬÑùµÄÈ«Á¿Êý¾Ý¡£KafkaºÍRocketMQÓÐÏàͬµÄÊý¾Ý£¬ÕâÑùÏÂÓεÄÒµÎñÒ²¾Í¿ÉÒÔ¿ªÊ¼Ç¨ÒÆ¡£Èç¹ûÏû·Ñ¶Ë²»¹ØÐĶªÊý¾Ý£¬ÄÇô¿ÉÒÔÖ±½ÓÇл»£¬ÇÐÍêÖ±½Ó¸üÐÂÏû·Ñ½ø¶È¡£Èç¹ûÐèÒª±£Ö¤Ïû·Ñ±Ø´ï£¬¿ÉÒÔÏÈÔÚConsumerProxyÉèÖÃÏû·Ñ½ø¶È£¬Ïû·Ñ¿Í»§¶Ë±£Ö¤Ã»ÓÐÊý¾Ý¶Ñ»ýºóÔÙÈ¥Ç¨ÒÆ£¬ÕâÑù»áÓÐÒ»Ð©ÖØ¸´ÏûÏ¢£¬Ò»°ã¿Í»§¶Ë»á±£Ö¤Ïû·Ñ´¦ÀíµÄÃݵȡ£

Éú²ú¶ËµÄ˫дÆäʵҲÓÐÁ½ÖÖ·½°¸£º

¿Í»§¶Ë˫д£¬ÈçÏÂͼ£º

ÒµÎñÄDZ߲»Í£Ô­À´µÄkafka ¿Í»§¶Ë¡£Ö»ÊǼÓÉÏÎÒÃǵĿͻ§¶Ë£¬ÍùRocketMQÀï×·¼Óд¡£ÕâÖÖ·½°¸ÔÚÕû¸öÇ¨ÒÆÍê³ÉÖ®ºó£¬ÒµÎñ»¹ÐèÒª°ÑÀϵÄдÈëÍ£µô¡£Ï൱ÓÚÁ½´ÎÉÏÏß¡£

Producer Proxy˫д£¬ÈçÏÂͼ£º

ÒµÎñ·½Ö±½ÓÇл»Éú²úµÄ¿Í»§¶Ë£¬Ö»ÍùÎÒÃǵÄproxyÉÏдÊý¾Ý¡£È»ºóÎÒÃǵÄproxy¸ºÔð°ÑÊý¾Ý¸´ÖÆ£¬Í¬Ê±Ð´µ½Á½¸ö´æ´¢ÒýÇæÖС£ÕâÑùÔÚÇ¨ÒÆÍê³ÉÖ®ºó£¬ÎÒÃÇÖ»ÐèÒªÔÚProxyÉϹصô˫д¹¦ÄܾͿÉÒÔÁË¡£¶ÔÉú²úµÄÒµÎñ·½À´ËµÊÇÎÞ¸ÐÖªµÄ£¬Éú²ú·½È«³ÌÖ»ÐèÒª¸ÄÔìÒ»´Î£¬ÉÏÒ»ÏÂÏ߾ͿÉÒÔÁË¡£

ËùÒÔ±íÃæ¿´ÆðÀ´£¬Ó¦¸Ã»¹ÊǵڶþÖÖ·½°¸¸ü¼Ó¼òµ¥¡£µ«ÊÇ£¬´ÓÕûÌå¿É¿¿ÐԵĽǶÈÀ´¿´£¬Ò»°ã»¹ÊÇÈÏΪµÚÒ»ÖÖÏà¶Ô¸ßÒ»µã¡£ÒòΪ¿Í»§¶Ëµ½KafkaÕâÒ»ÌõÁ´Â·£¬ÒµÎñ֮ǰ¶¼ÒѾ­ÅÜÎȶ¨ÁË¡£Ò»°ã²»»á³öÎÊÌâ¡£µ«ÊÇдÎÒÃÇProxy¾Í²»Ò»¶¨ÁË£¬ÔÚ½ÓÈë¹ý³ÌÖУ¬ÊÇÓпÉÄܳöÏÖһЩʹÓÃÉϵÄÎÊÌ⣬µ¼ÖÂÊý¾ÝдÈëʧ°Ü£¬Õâ¾Í¶ÔÒµÎñ·½²âÊÔÖÊÁ¿µÄÒªÇó»á¸ßÒ»µã¡£È»ºóÏû·ÑµÄÇ¨ÒÆ¹ý³Ì£¬Æäʵ·çÏÕÊÇÏà¶Ô±È½ÏµÍµÄ¡£³öÎÊÌâµÄʱºò£¬¿ÉÒÔÁ¢¼´»Ø¹ö¡£ÒòΪËüÔÚÀϵÄKafkaÉÏÏû·Ñ½ø¶È£¬ÊÇÒ»Ö±±£ÁôµÄ£¬¶øÇÒÔÚÇ¨ÒÆ¹ý³ÌÖУ¬¿ÉÒÔÈÏΪÊÇÈ«Á¿Ë«Ïû·Ñ¡£

ÒÔÉϾÍÊÇÊý¾Ý˫дµÄÇ¨ÒÆ·½°¸£¬ÕâÖÖ·½°¸µÄÌØµã¾ÍÊÇÁ½¸ö´æ´¢ÒýÇæ¶¼ÓÐÏàͬµÄÈ«Á¿Êý¾Ý¡£

3.2.2 Ë«¶Á

ÌØµã£º±£Ö¤²»»áÖØ¸´Ïû·Ñ¡£¶ÔÓÚP2P »òÕßÏû·ÑÏÂÓβ»Ì«¶à£¬»òÕß¶ÔÖØ¸´Ïû·ÑÊý¾Ý±È½ÏÃô¸ÐµÄ³¡¾°±È½ÏÊÊÓá£

Õâ¸ö·½°¸µÄ¹ý³ÌÊÇÕâÑùµÄ£¬Ïû·ÑÏÈÇл»¡£È«²¿Ç¨ÒƵ½µ½ÎÒÃǵÄProxyÉÏÏû·Ñ£¬Proxy´ÓKafkaÉÏ»ñÈ¡¡£Õâ¸öʱºòRocketMQÉÏûÓÐÁ÷Á¿¡£µ«ÊÇÎÒÃǵÄÏû·ÑProxy±£Ö¤ÁËË«Ïû·Ñ£¬Ò»µ©RocketMQÓÐÁ÷Á¿ÁË£¬¿Í»§¶ËͬÑùÒ²ÄÜÊÕµ½¡£È»ºóÉú²ú·½¸ÄÔì¿Í»§¶Ë£¬Ö±½ÓÇÐÁ÷µ½RocketMQÖУ¬ÕâÑù¾ÍÍê³ÉÁËÕû¸öÁ÷Á¿Ç¨Òƹý³Ì¡£ÔËÐÐÒ»¶Îʱ¼ä£¬±ÈÈçKafkaÀïµÄÊý¾Ý¶¼¹ýÆÚÖ®ºó£¬¾Í¿ÉÒÔ°ÑÏû·ÑProxyÉϵÄË«Ïû·Ñ¹ØÁË£¬ÏµôKafka¼¯Èº¡£

Õû¸ö¹ý³ÌÖУ¬Éú²úÖ±½ÓÇÐÁ÷£¬ËùÒÔÊý¾Ý²»»áÖØ¸´´æ´¢¡£È»ºóÔÚÏû·ÑÇ¨ÒÆµÄ¹ý³ÌÖУ¬ÎÒÃÇÏû·ÑProxyÉϵÄgroupºÍÒµÎñÔ­ÓеÄgroup¿ÉÒÔÓÃÒ»¸öÃû×Ö£¬ÕâÑù¾ÍÄÜʵÏÖÇ¨ÒÆ¹ý³ÌÖÐ×Ô¶¯rebalance£¬ÕâÑù¾ÍÄÜʵÏÖûÓдóÁ¿Öظ´Êý¾ÝµÄЧ¹û¡£ËùÒÔÕâ¸ö·½°¸¶ÔÖØ¸´Ïû·Ñ±È½ÏÃô¸ÐµÄÒµÎñ»á±È½ÏÊʺϵġ£Õâ¸ö·½°¸µÄÕû¸ö¹ý³ÌÖУ¬Ïû·Ñ·½ºÍÉú²ú·½¶¼Ö»ÐèÒª¸ÄÔìÒ»±é¿Í»§¶Ë£¬ÉÏÒ»´ÎÏ߾ͿÉÒÔÍê³É¡£

RocketMQÀ©Õ¹¸ÄÔì

˵ÍêÇ¨ÒÆ·½°¸£¬ÕâÀïÔÙ¼òµ¥½éÉÜһϣ¬ÎÒÃÇÔÚ×Ô¼ºµÄRocketMQ·ÖÖ§ÉÏ×öµÄһЩ±È½ÏÖØÒªµÄÊÂÇé¡£

Ê×ÏÈÒ»¸ö·Ç³£ÖØÒªµÄÒ»µãÊÇÖ÷´ÓµÄ×Ô¶¯Çл»¡£

ÊìϤRocketMQµÄͬѧӦ¸ÃÖªµÀ£¬Ä¿Ç°¿ªÔ´°æ±¾µÄRocketMQ broker ÊÇûÓÐÖ÷´Ó×Ô¶¯Çл»µÄ¡£Èç¹ûÄãµÄMaster¹ÒÁË£¬ÄÇÄã¾Íд²»½øÈ¥ÁË¡£È»ºóslaveÖ»ÄÜÌṩֻ¶ÁµÄ¹¦ÄÜ¡£µ±È»Èç¹ûÄãµÄtopicÔÚ¶à¸öÖ÷½ÚµãÉ϶¼´´½¨ÁË£¬ËäÈ»²»»áÍêȫд²»½øÈ¥£¬µ«ÊǶԵ¥·ÖƬ˳ÐòÏû·ÑµÄ³¡¾°£¬»¹ÊÇ»á²úÉúÓ°Ïì¡£ËùÒÔÄØ£¬ÎÒÃǾÍ×Ô¼º¼ÓÁËÒ»Ì×Ö÷´Ó×Ô¶¯Çл»µÄ¹¦ÄÜ¡£

µÚ¶þ¸öÊÇÅúÁ¿Éú²úµÄ¹¦ÄÜ¡£

RocketMQ4.0Ö®ºóµÄ°æ±¾ÊÇÖ§³ÖÅúÁ¿Éú²ú¹¦Äܵġ£µ«ÊÇÏÞÖÆÁË£¬Ö»ÄÜÊÇͬһ¸öConsumerQueueµÄ¡£Õâ¸ö¶ÔÓÚÎÒÃǵÄProxy·þÎñÀ´Ëµ£¬²»Ì«ÓѺã¬ÒòΪÎÒÃǵÄproxyÊÇÓжà¸ö²»Í¬µÄtopicµÄ£¬ËùÒÔÎÒÃǾÍÀ©Õ¹ÁËһϣ¬ÈÃËüÄܹ»Ö§³Ö²»Í¬Topic¡¢²»Í¬Consume Queue¡£Ô­ÀíÉÏÆäʵ²î²»¶à£¬Ö»ÊÇÔÚ´«ÊäµÄʱºò£¬°ÑTopicºÍConsumer QueueµÄÐÅÏ¢¶¼±àÂë½øÈ¥¡£

µÚÈý¸ö£¬ÔªÐÅÏ¢¹ÜÀíµÄ¸ÄÔì¡£

ĿǰRocketMQµ¥»úÄܹ»Ö§³ÖµÄTopicÊýÁ¿£¬»ù±¾ÔÚ¼¸ÍòÕâôһ¸öÁ¿¼¶£¬ÔÚÔö¼ÓÉÏÈ¥Ö®ºó£¬ÔªÐÅÏ¢µÄ¹ÜÀí¾Í»á·Ç³£ºÄʱ£¬¶ÔÕû¸öÍÌ͵ÄÐÔÄÜÓ°ÏìÏà¶ÔÀ´Ëµ¾Í»á·Ç³£´ó¡£È»ºóÎÒÃÇÓиö³¡¾°ÓÖÐèÒªÖ§³Öµ¥»ú°ÙÍò×óÓÒµÄTopicÊýÁ¿£¬ËùÒÔÎÒÃǾ͸ÄÔìÁËÒ»ÏÂÔªÐÅÏ¢¹ÜÀí²¿·Ö£¬ÈÃRocketMQµ¥»úÄܹ»Ö§³ÅµÄTopicÊýÁ¿´ïµ½Á˰ÙÍò¡£

ºóÃæÒ»Ð©¾Í²»Ì«ÖØÒªÁË£¬±ÈÈ缯³ÉÁËÎÒÃǹ«Ë¾ÄÚ²¿µÄһЩ¼à¿ØºÍ²¿Ê𹤾ߣ¬ÐÞÁ˼¸¸öbug£¬Ò²¸øÌáÁËPR¡£×îа涼ÒѾ­fixµôÁË¡£

RocketMQʹÓþ­Ñé

½ÓÏÂÀ´£¬ÔÙ¼òµ¥½éÉÜһϣ¬ÎÒÃÇÔÚRocketMQÔÚʹÓúÍÔËάÉϵÄһЩ¾­Ñé¡£Ö÷ÒªÊÇÉæ¼°ÔÚ´ÅÅÌIOÐÔÄܲ»¹»µÄʱºò£¬Ò»Ð©²ÎÊýµÄµ÷Õû¡£

5.1 ¶ÁÀÏÊý¾ÝµÄÎÊÌâ

ÎÒÃǶ¼ÖªµÀ£¬RocketMQµÄÊý¾ÝÊÇÒªÂäÅ̵ģ¬Ò»°ãÖ»ÓÐ×îÐÂдÈëµÄÊý¾Ý²Å»áÔÚPageCacheÖС£±ÈÈçÏÂÓÎÏû·ÑÊý¾Ý£¬ÒòΪһЩԭÒòÍ£ÁËÒ»ÌìÖ®ºó£¬ÓÖͻȻÆðÀ´Ïû·ÑÊý¾Ý¡£Õâ¸öʱºò¾ÍÐèÒª¶Á´ÅÅÌÉϵÄÊý¾Ý¡£È»ºóRocketMQµÄÏûÏ¢ÌåÊÇÈ«²¿´æ´¢ÔÚÒ»¸öappend onlyµÄ commitlog Öеġ£Èç¹ûÕâ¸ö¼¯ÈºÖлìÔÓÁ˺ܶ಻ͬtopicµÄÊý¾ÝµÄ»°£¬Òª¶ÁµÄÁ½ÌõÏûÏ¢¾ÍºÜÓпÉÄܼä¸ôºÜÔ¶¡£×Çé¿ö¾ÍÊÇÒ»´Î´ÅÅÌIO¶ÁÒ»ÌõÏûÏ¢¡£Õâ¾Í»ù±¾µÈ¼ÛÓÚËæ»ú¶ÁÈ¡ÁË¡£Èç¹û´ÅÅ̵ÄIOPS£¨Input/Output Operations Per Second£©¿¸²»×¡£¬»¹»áÓ°ÏìÊý¾ÝµÄдÈ룬Õâ¸öÎÊÌâ¾ÍÑÏÖØÁË¡£

ÖµµÃÇìÐÒµÄÊÇ£¬RocketMQÌṩÁË×Ô¶¯´ÓSlave¶ÁÈ¡ÀÏÊý¾ÝµÄ¹¦ÄÜ¡£Õâ¸ö¹¦ÄÜÖ÷ÒªÓÉslaveReadEnableÕâ¸ö²ÎÊý¿ØÖÆ¡£Ä¬ÈÏÊǹصģ¨slaveReadEnable = false bydefault£©¡£ÍƼö°ÑËü´ò¿ª£¬Ö÷´Ó¶¼Òª¿ª¡£Õâ¸ö²ÎÊý´ò¿ªÖ®ºó£¬ÔÚ¿Í»§¶ËÏû·ÑÊý¾Ýʱ£¬»áÅжϣ¬µ±Ç°¶ÁÈ¡ÏûÏ¢µÄÎïÀíÆ«ÒÆÁ¿¸ú×îеÄλÖõIJîÖµ£¬ÊDz»Êdz¬¹ýÁËÄÚ´æÈÝÁ¿µÄÒ»¸ö°Ù·Ö±È£¨accessMessageInMemoryMaxRatio= 40 by default£©¡£Èç¹û³¬¹ýÁË£¬¾Í»á¸æË߿ͻ§¶ËÈ¥±¸»úÉÏÏû·ÑÊý¾Ý¡£Èç¹û²ÉÓÃÒì²½Ö÷´Ó£¬Ò²¾ÍÊÇbrokerRoleµÈÓÚASYNC_AMSTERµÄʱºò£¬ÄãµÄ±¸»úIO´ò±¬£¬ÆäʵӰÏ첻̫´ó¡£µ«ÊÇÈç¹ûÄã²ÉÓÃͬ²½Ö÷´Ó£¬ÄÇ»¹ÊÇÓÐÓ°Ïì¡£ËùÒÔÕâ¸öʱºò£¬×îºÃ¹ÒÁ½¸ö±¸»ú¡£ÒòΪRocketMQµÄÖ÷´Óͬ²½¸´ÖÆ£¬Ö»ÒªÒ»¸ö±¸»úÏìÓ¦ÁËÈ·ÈÏдÈë¾Í¿ÉÒÔÁË£¬Ò»Ì¨IO´ò±¬£¬ÎÊÌâ²»´ó¡£

5.2 ¹ýÆÚÊý¾Ýɾ³ý

RocketMQĬÈÏÊý¾Ý±£Áô72¸öСʱ£¨fileReservedTime=72£©¡£È»ºóËüĬÈÏÔÚÁ賿4µã¿ªÊ¼É¾¹ýÆÚÊý¾Ý£¨deleteWhen="04"£©¡£Äã¿ÉÒÔÉèÖöà¸öÖµÓ÷ֺŸô¿ª¡£ÒòΪÊý¾Ý¶¼ÊǶ¨Ê±É¾³ýµÄ£¬ËùÒÔÔÚ´ÅÅ̳ä×ãµÄÇé¿ö£¬Êý¾ÝµÄ×±£Áô»á±ÈÄãÉèÖõϹ¶àÒ»Ìì¡£ÓÖÓÉÓÚĬÈ϶¼ÊÇͬһʱ¼ä£¬É¾³ýÒ»ÕûÌìµÄÊý¾Ý£¬Èç¹ûÓÃÁË»úеӲÅÌ£¬Ò»°ã´ÅÅÌÈÝÁ¿»á±È½Ï´ó£¬ÐèҪɾ³ýµÄÊý¾Ý»áÌØ±ð¶à£¬Õâ¸ö¾Í»áµ¼ÖÂÔÚɾ³ýÊý¾ÝµÄʱºò£¬´ÅÅÌIO±»´òÂú¡£Õâ¸öʱºòÓÖÒªÓ°ÏìдÈëÁË¡£

ΪÁ˽â¾öÕâ¸öÎÊÌ⣬¿ÉÒÔ³¢ÊÔ¶à¸ö·½·¨£¬Ò»¸öÊÇÉèÖÃÎļþɾ³ýµÄ¼ä¸ô£¬ÓÐÁ½¸ö²ÎÊý¿ÉÒÔÉèÖã¬

deleteCommitLogFilesInterval = 100£¨ºÁÃ룩¡£Ã¿É¾³ý10¸öcommitLogÎļþµÄʱ¼ä¼ä¸ô£»

deleteConsumeQueueFilesInterval=100£¨ºÁÃ룩¡£Ã¿É¾³ýÒ»¸öConsumeQueueÎļþµÄʱ¼ä¼ä¸ô¡£

ÁíÍâÒ»¸ö¾ÍÊÇÔö¼Óɾ³ýƵÂÊ£¬°Ñ00-23¶¼Ð´µ½deleteWhen£¬¾Í¿ÉÒÔʵÏÖÿ¸öСʱ¶¼É¾Êý¾Ý¡£

5.3 Ë÷Òý

ĬÈÏÇé¿öÏ£¬ËùÓеÄbroker¶¼»á½¨Á¢Ë÷Òý£¨messageIndexEnable=true£©¡£Õâ¸öË÷Òý¹¦ÄÜ¿ÉÒÔÖ§³Ö°´ÕÕÏûÏ¢µÄuniqId£¬ÏûÏ¢µÄkeyÀ´²éѯÏûÏ¢Ìå¡£Ë÷ÒýÎļþʵÏÖµÄʱºò£¬±¾ÖÊÉÏÒ²¾ÍÊÇ»ùÓÚ´ÅÅ̵ĸöÒ»¸öhashmap¡£Èç¹ûbrokerÉÏÏûÏ¢ÊýÁ¿±È½Ï¶à£¬²éѯµÄƵÂʱȽϸߣ¬ÕâÒ²»áÔì³ÉÒ»¶¨µÄIO¸ºÔØ¡£ËùÒÔÎÒÃǵÄÍÆ¼ö·½°¸ÊÇÔÚMasterÉϹصôÁËindex¹¦ÄÜ£¬Ö»ÔÚslaveÉÏ´ò¿ª¡£È»ºóËùÓеÄindex²éѯȫ²¿ÔÚslaveÉϽøÐС£µ±È»Õâ¸öÐèÒª¼òµ¥ÐÞ¸ÄÒ»ÏÂMQAdminImplÀïµÄʵÏÖ¡£ÒòΪĬÈÏÇé¿öÏ£¬Ëü»áÏòMaster·¢³öÇëÇó¡£

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

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

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

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