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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÇáËɸ㶨RocketMQÈëÃÅ
 
  4085  次浏览      33
 2019-5-21
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚaliyun£¬ÎÄÕÂRocketMQµÄÌØµã¡¢ÍøÂ粿Ê𡢹ؼüÌØÐÔ£¬ÒÔ¼°Consumer×î¼Ñʵ¼ùµÈÏà¹ØÄÚÈÝ¡£

RocketMQÊÇÒ»¿î·Ö²¼Ê½¡¢¶ÓÁÐÄ£Ð͵ÄÏûÏ¢Öмä¼þ£¬¾ßÓÐÒÔÏÂÌØµã£º

Äܹ»±£Ö¤ÑϸñµÄÏûϢ˳Ðò

Ìṩ·á¸»µÄÏûÏ¢À­È¡Ä£Ê½

¸ßЧµÄ¶©ÔÄÕßˮƽÀ©Õ¹ÄÜÁ¦

ʵʱµÄÏûÏ¢¶©ÔÄ»úÖÆ

ÒÚ¼¶ÏûÏ¢¶Ñ»ýÄÜÁ¦

RocketMQÍøÂ粿ÊðÌØ

£¨1£©NameServerÊÇÒ»¸ö¼¸ºõÎÞ״̬µÄ½Úµã£¬¿É¼¯Èº²¿Ê𣬽ڵãÖ®¼äÎÞÈκÎÐÅϢͬ²½

£¨2£©Broker²¿ÊðÏà¶Ô¸´ÔÓ£¬Broker·ÕΧMasterÓëSlave£¬Ò»¸öMaster¿ÉÒÔ¶ÔÓ¦¶à¸öSlaver£¬µ«ÊÇÒ»¸öSlaverÖ»ÄܶÔÓ¦Ò»¸öMaster£¬MasterÓëSlaverµÄ¶ÔÓ¦¹ØÏµÍ¨¹ýÖ¸¶¨ÏàͬµÄBrokerName£¬²»Í¬µÄBrokerIdÀ´¶¨Ò壬BrokerIdΪ0±íʾMaster£¬·Ç0±íʾSlaver¡£Master¿ÉÒÔ²¿Êð¶à¸ö¡£Ã¿¸öBrokerÓëNameServer¼¯ÈºÖеÄËùÓнڵ㽨Á¢³¤Á¬½Ó£¬¶¨Ê±×¢²áTopicÐÅÏ¢µ½ËùÓеÄNameServer

£¨3£©ProducerÓëNameServer¼¯ÈºÖÐµÄÆäÖÐÒ»¸ö½Úµã£¨Ëæ»úÑ¡Ôñ£©½¨Á¢³¤Á¬½Ó£¬¶¨ÆÚ´ÓNameServerÈ¡Topic·ÓÉÐÅÏ¢£¬²¢ÏòÌṩTopic·þÎñµÄMaster½¨Á¢³¤Á¬½Ó£¬ÇÒ¶¨Ê±ÏòMaster·¢ËÍÐÄÌø¡£ProduceÍêÈ«ÎÞ״̬£¬¿É¼¯Èº²¿Êð

£¨4£©ConsumerÓëNameServer¼¯ÈºÖÐµÄÆäÖÐÒ»¸ö½Úµã£¨Ëæ»úÑ¡Ôñ£©½¨Á¢³¤Á¬½Ó£¬¶¨ÆÚ´ÓNameServerÈ¡Topic·ÓÉÐÅÏ¢£¬²¢ÏòÌṩTopic·þÎñµÄMaster¡¢Slaver½¨Á¢³¤Á¬½Ó£¬ÇÒ¶¨Ê±ÏòMaster¡¢Slaver·¢ËÍÐÄÌø¡£Consumer¼´¿É´ÓMaster¶©ÔÄÏûÏ¢£¬Ò²¿ÉÒÔ´ÓSlave¶©ÔÄÏûÏ¢£¬¶©ÔĹæÔòÓÉBrokerÅäÖþö¶¨

RocketMQ´¢´æÌصã

£¨1£©Á㿽±´Ô­Àí£ºConsumerÏû·ÑÏûÏ¢¹ý³Ì£¬Ê¹ÓÃÁËÁ㿽±´£¬Á㿽±´°üÀ¨Ò»ÏÂ2Öз½Ê½£¬RocketMQʹÓõÚÒ»ÖÖ·½Ê½£¬ÒòС¿éÊý¾Ý´«ÊäµÄÒªÇóЧ¹û±Èsendfile·½Ê½ºÃ

a )ʹÓÃmmap+write·½Ê½

Óŵ㣺¼´Ê¹Æµ·±µ÷Óã¬Ê¹ÓÃСÎļþ¿é´«Ê䣬ЧÂÊÒ²ºÜ¸ß

ȱµã£º²»ÄܺܺõÄÀûÓÃDMA·½Ê½£¬»á±Èsendfile¶àÏûºÄCPU×ÊÔ´£¬Äڴ氲ȫÐÔ¿ØÖƸ´ÔÓ£¬ÐèÒª±ÜÃâJVM CrashÎÊÌâ

b£©Ê¹ÓÃsendfile·½Ê½

Óŵ㣺¿ÉÒÔÀûÓÃDMA·½Ê½£¬ÏûºÄCPU×ÊÔ´ÉÙ£¬´ó¿éÎļþ´«ÊäЧÂʸߣ¬ÎÞÄڴ氲ȫÐÂÎÊÌâ

ȱµã£ºÐ¡¿éÎļþЧÂʵÍÓÚmmap·½Ê½£¬Ö»ÄÜÊÇBIO·½Ê½´«Ê䣬²»ÄÜʹÓÃNIO

£¨2£©Êý¾Ý´æ´¢½á¹¹

RocketMQ¹Ø¼üÌØÐÔ

1.µ¥»úÖ§³Ö1WÒÔÉϵij־û¯¶Ó

£¨1£©ËùÓÐÊý¾Ýµ¥¶À´¢´æµ½commit Log £¬Íêȫ˳Ðòд£¬Ëæ»ú¶Á

£¨2£©¶Ô×îÖÕÓû§Õ¹ÏֵĶÓÁÐʵ¼ÊÖ»´¢´æÏûÏ¢ÔÚCommit Log µÄλÖÃÐÅÏ¢£¬²¢ÇÒ´®Ðз½Ê½Ë¢ÅÌ

ÕâÑù×öµÄºÃ´¦£º

£¨1£©¶ÓÁÐÇáÁ¿»¯£¬µ¥¸ö¶ÓÁÐÊý¾ÝÁ¿·Ç³£ÉÙ

£¨2£©¶Ô´ÅÅ̵ķÃÎÊ´®Ðл°£¬±ÜÃâ´ÅÅ̾ºÕù£¬²»»áÒòΪ¶ÓÁÐÔö¼Óµ¼ÖÂIOWaitÔö¸ß

ÿ¸ö·½°¸¶¼ÓÐÓÅȱµã£¬ËûµÄȱµãÊÇ£º

£¨1£©Ð´ËäÈ»ÊÇ˳Ðòд£¬µ«ÊǶÁÈ´±ä³ÉÁËËæ»ú¶Á

£¨2£©¶ÁÒ»ÌõÏûÏ¢£¬»áÏȶÁConsume Queue£¬ÔÙ¶ÁCommit Log£¬Ôö¼ÓÁË¿ªÏú

£¨3£©Òª±£Ö¤Commit Log Óë Consume QueueÍêÈ«µÄÒ»Ö£¬Ôö¼ÓÁ˱à³ÌµÄ¸´ÔÓ¶È

ÒÔÉÏȱµãÈçºÎ¿Í·þ£º

£¨1£©Ëæ»ú¶Á£¬¾¡¿ÉÄÜÈöÁÃüÖÐpagecache£¬¼õÉÙIO²Ù×÷£¬ËùÒÔÄÚ´æÔ½´óÔ½ºÃ¡£Èç¹ûϵͳÖжѻýµÄÏûÏ¢¹ý¶à£¬¶ÁÊý¾ÝÒª·ÃÎÊÓ²Å̻᲻»áÓÉÓÚËæ»ú¶Áµ¼ÖÂϵͳÐÔÄܼ±¾çϽµ£¬´ð°¸ÊÇ·ñ¶¨µÄ¡£

a£©·ÃÎÊpagecacheʱ£¬¼´Ê¹Ö»·ÃÎÊ1KµÄÏûÏ¢£¬ÏµÍ³Ò²»áÌáǰԤ¶Á³ö¸ü¶àµÄÊý¾Ý£¬ÔÚÏ´ζÁʱ¾Í¿ÉÄÜÃüÖÐpagecache

b£©Ëæ»ú·ÃÎÊCommit Log ´ÅÅÌÊý¾Ý£¬ÏµÍ³IOµ÷¶ÈËã·¨ÉèÖÃΪNOOP·½Ê½£¬»áÔÚÒ»¶¨³Ì¶ÈÉϽ«ÍêÈ«µÄËæ»ú¶Á±ä³É˳ÐòÌøÔ¾·½Ê½£¬¶øË³ÐòÌøÔ¾·½Ê½¶Á½ÏÍêÈ«µÄËæ»ú¶ÁÐÔÄܸß5±¶

£¨2£©ÓÉÓÚConsume Queue´æ´¢ÊýÁ¿¼«ÉÙ£¬¶øÇÒ˳Ðò¶Á£¬ÔÚpagecacheµÄÓë¶ÁÈ¡Çé¿öÏ£¬Consume QueueµÄ¶ÁÐÔÄÜÓëÄڴ漸ºõÒ»Ö±£¬¼´Ê¹¶Ñ»ýÇé¿öÏ¡£ËùÒÔ¿ÉÒÔÈÏΪConsume QueueÍêÈ«²»»á×è°­¶ÁÐÔÄÜ

£¨3£©Commit LogÖд洢ÁËËùÓеÄÔªÐÅÏ¢£¬°üº¬ÏûÏ¢Ì壬ÀàËÆÓÚMySQl¡¢OracleµÄredolog£¬ËùÒÔÖ»ÒªÓÐCommit Log´æÔÚ£¬ Consume Queue¼´Ê¹¶ªÊ§Êý¾Ý£¬ÈÔ¿ÉÒÔ»Ö¸´³öÀ´

2.Ë¢Å̲ßÂÔ

rocketmqÖеÄËùÓÐÏûÏ¢¶¼Êdz־û¯µÄ£¬ÏÈдÈëϵͳpagecache£¬È»ºóË¢ÅÌ£¬¿ÉÒÔ±£Ö¤ÄÚ´æÓë´ÅÅ̶¼ÓÐÒ»·ÝÊý¾Ý£¬·ÃÎÊʱ£¬¿ÉÒÔÖ±½Ó´ÓÄÚ´æ¶ÁÈ¡

2.1Ò첽ˢÅÌ

ÔÚÓÐ RAID ¿¨£¬ SAS 15000 ת´ÅÅ̲âÊÔ˳ÐòдÎļþ£¬ËÙ¶È¿ÉÒÔ´ïµ½ 300M ÿÃë×óÓÒ£¬¶øÏßÉϵÄÍø¿¨Ò»°ã¶¼ÎªÇ§Õ×Íø¿¨£¬Ð´´ÅÅÌËÙ¶ÈÃ÷ÏÔ¿ìÓÚÊý¾ÝÍøÂçÈë¿ÚËÙ¶È£¬ÄÇôÊÇ·ñ¿ÉÒÔ×öµ½Ð´Íê ÄÚ´æ¾ÍÏòÓû§·µ»Ø£¬Óɺǫ́Ïß³ÌË¢ÅÌÄØ£¿

(1). ÓÉÓÚ´ÅÅÌËÙ¶È´óÓÚÍø¿¨ËÙ¶È£¬ÄÇôˢÅ̵Ľø¶È¿Ï¶¨¿ÉÒÔ¸úÉÏÏûÏ¢µÄдÈëËÙ¶È¡£

(2). ÍòÒ»ÓÉÓÚ´ËʱϵͳѹÁ¦¹ý´ó£¬¿ÉÄܶѻýÏûÏ¢£¬³ýÁËдÈë IO£¬»¹ÓжÁÈ¡ IO£¬ÍòÒ»³öÏÖ´ÅÅ̶ÁÈ¡ÂäºóÇé¿ö£¬»á²»»áµ¼ÖÂϵͳÄÚ´æÒç³ö£¬´ð°¸ÊÇ·ñ¶¨µÄ£¬Ô­ÒòÈçÏ£º

a) дÈëÏûÏ¢µ½ PAGECACHE ʱ£¬Èç¹ûÄÚ´æ²»×㣬Ôò³¢ÊÔ¶ªÆú¸É¾»µÄ PAGE£¬ÌÚ³öÄڴ湩ÐÂÏûϢʹÓ㬲ßÂÔÊÇ LRU ·½Ê½¡£

b) Èç¹û¸É¾»Ò³²»×㣬´ËʱдÈë PAGECACHE »á±»×èÈû£¬ÏµÍ³³¢ÊÔË¢Å̲¿·ÖÊý¾Ý£¬´óԼÿ´Î³¢ÊÔ 32 ¸ö PAGE£¬À´ÕÒ³ö¸ü¶à¸É¾» PAGE¡£

×ÛÉÏ£¬ÄÚ´æÒç³öµÄÇé¿ö²»»á³öÏÖ

2.2ͬ²½Ë¢ÅÌ£º

ͬ²½Ë¢ÅÌÓëÒ첽ˢÅ̵ÄÎ¨Ò»Çø±ðÊÇÒ첽ˢÅÌдÍê PAGECACHE Ö±½Ó·µ»Ø£¬¶øÍ¬²½Ë¢ÅÌÐèÒªµÈ´ýË¢ÅÌÍê³É²Å·µ»Ø£¬Í¬²½Ë¢ÅÌÁ÷³ÌÈçÏ£º

£¨1£©Ð´Èë PAGECACHE ºó£¬Ï̵߳ȴý£¬Í¨ÖªË¢ÅÌÏß³ÌË¢ÅÌ¡£

£¨2£©Ë¢ÅÌÏß³ÌË¢Å̺󣬻½ÐÑǰ¶ËµÈ´ýỊ̈߳¬¿ÉÄÜÊÇÒ»ÅúÏ̡߳£

£¨3£©Ç°¶ËµÈ´ýÏß³ÌÏòÓû§·µ»Ø³É¹¦¡£

3.ÏûÏ¢²éѯ

3.1°´ÕÕMessageId²éѯÏûÏ¢

MsgId×ܹ²16¸ö×Ö½Ú£¬°üº¬ÏûÏ¢´¢´æÖ÷»úµØÖ·£¬ÏûÏ¢Commit Log Offset¡£´ÓMsgIdÖнâÎö³öBrokerµÄµØÖ·ºÍCommit Log Æ«ÒÆµØÖ·£¬È»ºó°´ÕÕ´æ´¢¸ñʽËùÔÚλÖÃÏûÏ¢buffer½âÎö³ÉÒ»¸öÍêÕûÏûÏ¢

3.2°´ÕÕMessage Key²éѯÏûÏ¢

1.¸ù¾Ý²éѯµÄkeyµÄhashcode%slotNumµÃµ½¾ßÌåµÄ²ÛλÖà £¨slotNumÊÇÒ»¸öË÷ÒýÎļþÀïÃæ°üº¬µÄ×î´ó²ÛÄ¿ÊýÄ¿£¬ÀýÈçͼÖÐËùʾslotNum=500W£©

2.¸ù¾ÝslotValue£¨slot¶ÔӦλÖõÄÖµ£©²éÕÒµ½Ë÷ÒýÏîÁбíµÄ×îºóÒ»Ïµ¹ÐòÅÅÁУ¬slotValue×ÜÊÇÖ¸Ïò×îеÄÒ»¸öË÷ÒýÏ

3.±éÀúË÷ÒýÏîÁÐ±í·µ»Ø²éѯʱ¼ä·¶Î§ÄڵĽá¹û¼¯£¨Ä¬ÈÏÒ»´Î×î´ó·µ»ØµÄ32Ìõ¼Ç¼£©

4.Hash³åÍ»£¬Ñ°ÕÒkeyµÄslotλÖÃʱÏ൱ÓÚÖ´ÐÐÁËÁ½´ÎÉ¢Áк¯Êý£¬Ò»´ÎkeyµÄhash£¬Ò»´ÎkeyµÄhashȡֵ죬Òò´ËÕâÀï´æÔÚÁ½´Î³åÍ»µÄÇé¿ö£»µÚÒ»ÖÖ£¬keyµÄhashÖµ²»Í¬µ«Ä£ÊýÏàͬ£¬´Ëʱ²éѯµÄʱºò»áÔڱȽϵÚÒ»´ÎkeyµÄhashÖµ£¨Ã¿¸öË÷ÒýÏî±£´æÁËkeyµÄhashÖµ£©£¬¹ýÂ˵ôhashÖµ²»ÏëµÈµÄÇé¿ö¡£µÚ¶þÖÖ£¬hashÖµÏàµÈkey²»ÏëµÈ£¬³öÓÚÐÔÄܵĿ¼ÂdzåÍ»µÄ¼ì²â·Åµ½¿Í»§¶Ë´¦Àí£¨keyµÄԭʼֵÊÇ´æ´¢ÔÚÏûÏ¢ÎļþÖе쬱ÜÃâ¶ÔÊý¾ÝÎļþµÄ½âÎö£©£¬¿Í»§¶Ë±È½ÏÒ»´ÎÏûÏ¢ÌåµÄkeyÊÇ·ñÏàͬ

5.´æ´¢£¬ÎªÁ˽ÚÊ¡¿Õ¼äË÷ÒýÏîÖд洢µÄʱ¼äÊÇʱ¼ä²îÖµ£¨´æ´¢Ê±¼ä¡ª¡ª¿ªÊ¼Ê±¼ä£¬¿ªÊ¼Ê±¼ä´æ´¢ÔÚË÷ÒýÎļþÍ·ÖУ©£¬Õû¸öË÷ÒýÎļþÊǶ¨³¤µÄ£¬½á¹¹Ò²Êǹ̶¨µÄ

4.·þÎñÆ÷ÏûÏ¢¹ýÂË

RocketMQµÄÏûÏ¢¹ýÂË·½Ê½ÓбðÓÚÆäËûµÄÏûÏ¢Öмä¼þ£¬ÊÇÔÚ¶©ÔÄʱ£¬ÔÙ×ö¹ýÂË£¬ÏÈÀ´¿´ÏÂConsume Queue´æ´¢½á¹¹

1.ÔÚBroker¶Ë½øÐÐMessage Tag±È½Ï£¬ÏȱéÀúConsume Queue£¬Èç¹û´æ´¢µÄMessage TagÓë¶©ÔĵÄMessage Tag²»·ûºÏ£¬ÔòÌø¹ý£¬¼ÌÐø±È¶ÔÏÂÒ»¸ö£¬·ûºÏÔò´«Ê䏸Consumer¡£×¢ÒâMessage TagÊÇ×Ö·û´®ÐÎʽ£¬Consume QueueÖд洢µÄÊÇÆä¶ÔÓ¦µÄhashcode£¬±È¶ÔʱҲÊDZȶÔhashcode

2.ConsumerÊÕµ½¹ýÂËÏûÏ¢ºó£¬Í¬ÑùÒ²ÒªÖ´ÐÐÔÚbroker¶ËµÄ²Ù×÷£¬µ«ÊDZȶԵÄÊÇÕæÊµµÄMessage Tag×Ö·û´®£¬¶ø²»ÊÇhashcode

Ϊʲô¹ýÂËÒªÕâô×ö£¿

1.Message Tag´æ´¢hashcode£¬ÊÇΪÁËÔÚConsume Queue¶¨³¤·½Ê½´æ´¢£¬½ÚÔ¼¿Õ¼ä

2.¹ýÂ˹ý³ÌÖв»»á·ÃÎÊCommit Log Êý¾Ý£¬¿ÉÒÔ±£Ö¤¶Ñ»ýÇé¿öÏÂÒ²ÄܸßЧ¹ýÂË

3.¼´Ê¹´æÔÚhash³åÍ»£¬Ò²¿ÉÒÔÔÚConsumer¶Ë½øÐÐÐÞÕý£¬±£Ö¤ÍòÎÞһʧ

5.µ¥¸öJVM½ø³ÌÒ²ÄÜÀûÓûúÆ÷³¬´óÄÚ´æ

1.Producer·¢ËÍÏûÏ¢£¬ÏûÏ¢´Ósocket½øÈëjava ¶Ñ

2.Producer·¢ËÍÏûÏ¢£¬ÏûÏ¢´Ójava¶Ñ½øÈëpagecache£¬ÎïÀíÄÚ´æ

3.Producer·¢ËÍÏûÏ¢£¬ÓÉÒì²½Ïß³ÌË¢ÅÌ£¬ÏûÏ¢´ÓpagecacheË¢Èë´ÅÅÌ

4.ConsumerÀ­ÏûÏ¢£¨Õý³£Ïû·Ñ£©£¬ÏûÏ¢Ö±½Ó´Ópagecache£¨Êý¾ÝÔÚÎïÀíÄڴ棩תÈësocket£¬µ½´ïConsumer£¬²»¾­¹ýjava¶Ñ¡£ÕâÖÖÏû·Ñ³¡¾°×î¶à£¬ÏßÉÏ96GÎïÀíÄڴ棬°´ÕÕ1KÏûÏ¢Ë㣬¿ÉÒÔÎïÀí»º´æ1ÒÚÌõÏûÏ¢

5.ConsumerÀ­ÏûÏ¢£¨Òì³£Ïû·Ñ£©£¬ÏûÏ¢Ö±½Ó´ÓpagecacheתÈësocket

6.ConsumerÀ­ÏûÏ¢£¨Òì³£Ïû·Ñ£©£¬ÓÉÓÚsocket·ÃÎÊÁËÐéÄâÄڴ棬²úÉúȱҳÖжϣ¬´Ëʱ»á²úÉú´ÅÅÌIO£¬´Ó´ÅÅÌLoadÏûÏ¢µ½pagecache£¬È»ºóÖ±½Ó´Ósocket·¢³öÈ¥

7.ͬ5

8.ͬ6

6.ÏûÏ¢¶Ñ»ýÎÊÌâ½â¾ö°ì·¨

1 ÏûÏ¢µÄ¶Ñ»ýÈÝÁ¿¡¢ÒÀÀµ´ÅÅÌ´óС

2 ·¢ÏûÏ¢µÄÍÌÍÂÁ¿´óСÊÜÓ°Ïì³Ì¶È¡¢ÎÞSlaveÇé¿ö£¬»áÊÜÒ»¶¨Ó°Ïì¡¢ÓÐSlaveÇé¿ö£¬²»ÊÜÓ°Ïì

3 Õý³£Ïû·ÑµÄConsumerÊÇ·ñ»áÊÜÓ°Ïì¡¢ÎÞSlaveÇé¿ö£¬»áÊÜÒ»¶¨Ó°Ïì¡¢ÓÐSlaveÇé¿ö£¬²»ÊÜÓ°Ïì

4 ·ÃÎʶѻýÔÚ´ÅÅ̵ÄÏûϢʱ£¬ÍÌÍÂÁ¿Óжà´ó¡¢Óë·ÃÎʵIJ¢·¢Óйأ¬×îÖջήµ½5000×óÓÒ

ÔÚÓÐSlaveÇé¿öÏ£¬MasterÒ»µ©·¢ÏÖConsumer·ÃÎʶѻýÔÚ´ÅÅ̵ÄÊý¾Ýʱ£¬»ØÏëConsumerÏ´ïÒ»¸öÖØ¶¨ÏòÖ¸ÁÁîConsumer´ÓSlaveÀ­È¡Êý¾Ý£¬ÕâÑùÕý³£µÄ·¢ÏûÏ¢ÓëÕý³£µÄÏû·Ñ²»»áÒòΪ¶Ñ»ýÊÜÓ°Ï죬ÒòΪϵͳ½«¶Ñ»ý³¡¾°Óë·Ç¶Ñ»ý³¡¾°·Ö¸îÔÚÁËÁ½¸ö²»Í¬µÄ½Úµã´¦Àí¡£ÕâÀï»á²úÉúÒ»¸öÎÊÌ⣬Slave»á²»»áдÐÔÄÜϽµ£¬´ð°¸ÊÇ·ñ¶¨µÄ¡£ÒòΪSlaveµÄÏûϢдÈëÖ»×·ÇóÍÌÍÂÁ¿£¬²»×·ÇóʵʱÐÔ£¬Ö»ÒªÕûÌåµÄÍÌÍÂÁ¿¸ß¾ÍÐÐÁË£¬¶øSlaveÿ´Î¶¼ÊÇ´ÓMasterÀ­È¡Ò»ÅúÊý¾Ý£¬Èç1M£¬ÕâÖÖÅúÁ¿Ë³ÐòдÈ뷽ʽʹ¶Ñ»ýÇé¿ö£¬ÕûÌåÍÌÍÂÁ¿Ó°ÏìÏà¶Ô½ÏС£¬Ö»ÊÇдÈëRT»á±ä³¤¡£

·þÎñ¶Ë°²×°²¿Êð

ÎÒÊÇÔÚÐéÄâ»úÖеÄCentOS6.5ÖнøÐв¿Êð¡£

1.ÏÂÔØ³ÌÐò

2.tar -xvf alibaba-rocketmq-3.0.7.tar.gz ½âѹµ½Êʵ±µÄĿ¼Èç/opt/Ŀ¼

3.Æô¶¯RocketMQ£º½øÈërocketmq/bin Ŀ¼ Ö´ÐÐ

4.Æô¶¯Broker£¬ÉèÖöÔÓ¦µÄNameServer

±àд¿Í»§¶Ë

¿ÉÒԲ鿴samepleÖеÄquickstartÔ´Âë 1.Consumer ÏûÏ¢Ïû·ÑÕß

2.ProducerÏûÏ¢Éú²úÕß

3.Ê×ÏÈÔËÐÐConsumer³ÌÐò£¬Ò»Ö±ÔÚÔËÐÐ״̬½ÓÊÕ·þÎñÆ÷¶ËÍÆË͹ýÀ´µÄÏûÏ¢

4.ÔÙ´ÎÔËÐÐProducer³ÌÐò£¬Éú³ÉÏûÏ¢²¢·¢Ë͵½Broker£¬ProducerµÄÈÕÖ¾³åûÁË£¬µ«ÊÇ¿ÉÒÔ¿´µ½BrokerÍÆË͵½ConsumerµÄÒ»ÌõÏûÏ¢

Consumer×î¼Ñʵ¼ù

1.Ïû·Ñ¹ý³ÌÒª×öµ½Ãݵȣ¨¼´Ïû·Ñ¶ËÈ¥ÖØ£©

RocketMQÎÞ·¨×öµ½ÏûÏ¢ÖØ¸´£¬ËùÒÔÈç¹ûÒµÎñ¶ÔÏûÏ¢ÖØ¸´·Ç³£Ãô¸Ð£¬Îñ±ØÒªÔÚÒµÎñ²ãÃæÈ¥ÖØ£¬ÓÐÒÔÏÂһЩ·½Ê½£º

£¨1£©.½«ÏûÏ¢µÄΨһ¼ü£¬¿ÉÒÔÊÇMsgId£¬Ò²¿ÉÒÔÊÇÏûÏ¢ÄÚÈÝÖеÄΨһ±êʶ×ֶΣ¬ÀýÈç¶©µ¥ID£¬Ïû·Ñ֮ǰÅжÏÊÇ·ñÔÚDB»òTair£¨È«¾ÖKV´æ´¢£©ÖдæÔÚ£¬Èç¹û²»´æÔÚÔò²åÈ룬²¢Ïû·Ñ£¬·ñÔòÌø¹ý¡££¨Êµ¼ù¹ý³ÌÒª¿¼ÂÇÔ­×ÓÐÔÎÊÌ⣬ÅжÏÊÇ·ñ´æÔÚ¿ÉÒÔ³¢ÊÔ²åÈ룬Èç¹û±¨Ö÷¼ü³åÍ»£¬Ôò²åÈëʧ°Ü£¬Ö±½ÓÌø¹ý£© msgidÒ»¶¨ÊÇÈ«¾ÖΨһµÄ±êʶ·û£¬µ«ÊÇ¿ÉÄÜ»á´æÔÚͬÑùµÄÏûÏ¢ÓÐÁ½¸ö²»Í¬µÄmsgidµÄÇé¿ö£¨ÓжàÖÖÔ­Òò£©£¬ÕâÖÖÇé¿ö¿ÉÄÜ»áʹҵÎñÉÏÖØ¸´£¬½¨Òé×îºÃʹÓÃÏûÏ¢ÌåÖеÄΨһ±êʶ×Ö¶ÎÈ¥ÖØ

£¨2£©.ʹҵÎñ²ãÃæµÄ״̬»úÈ¥ÖØ

2.ÅúÁ¿·½Ê½Ïû·Ñ

Èç¹ûÒµÎñÁ÷³ÌÖ§³ÖÅúÁ¿·½Ê½Ïû·Ñ£¬Ôò¿ÉÒԺܴó³Ì¶ÈÉϵÄÌá¸ßÍÌÍÂÁ¿£¬¿ÉÒÔͨ¹ýÉèÖÃConsumerµÄconsumerMessageBatchMaxSize²ÎÊý£¬Ä¬ÈÏÊÇ1£¬¼´Ò»´ÎÏû·ÑÒ»Ìõ²ÎÊý

3.Ìø¹ý·ÇÖØÒªµÄÏûÏ¢

·¢ÉúÏûÏ¢¶Ñ»ýʱ£¬Èç¹ûÏû·ÑËÙ¶ÈÒ»Ö±¸ú²»ÉÏ·¢ËÍËÙ¶È£¬¿ÉÒÔÑ¡Ôñ¶ªÆú²»ÖØÒªµÄÏûÏ¢

ÈçÒÔÉÏ´úÂëËùʾ£¬µ±Ä³¸ö¶ÓÁеÄÏûÏ¢Êý¶Ñ»ýµ½ 100000 ÌõÒÔÉÏ£¬Ôò³¢ÊÔ¶ªÆú²¿·Ö»òÈ«²¿ÏûÏ¢£¬ÕâÑù¾Í¿ÉÒÔ¿ìËÙ×·ÉÏ·¢ËÍÏûÏ¢µÄËÙ¶È

4.ÓÅ»¯Ã»ÌõÏûÏ¢Ïû·Ñ¹ý³Ì

¾ÙÀýÈçÏ£¬Ä³ÌõÏûÏ¢µÄÏû·Ñ¹ý³ÌÈçÏÂ

1¡¢¸ù¾ÝÏûÏ¢´Ó DB ²éѯÊý¾Ý 1

2¡¢¸ù¾ÝÏûÏ¢´Ó DB ²éѯÊý¾Ý2

3¡¢¸´ÔÓµÄÒµÎñ¼ÆËã

4¡¢Ïò DB ²åÈëÊý¾Ý3

5¡¢Ïò DB ²åÈëÊý¾Ý 4

ÕâÌõÏûÏ¢µÄÏû·Ñ¹ý³ÌÓë DB ½»»¥ÁË 4 ´Î£¬Èç¹û°´ÕÕÿ´Î 5ms ¼ÆË㣬ÄÇô×ܹ²ºÄʱ 20ms£¬¼ÙÉèÒµÎñ¼ÆËãºÄʱ 5ms£¬ÄÇô×ܹýºÄʱ 25ms£¬Èç¹ûÄÜ°Ñ 4 ´Î DB ½»»¥ÓÅ»¯Îª 2 ´Î£¬ÄÇô×ܺÄʱ¾Í¿ÉÒÔÓÅ»¯µ½ 15ms£¬Ò²¾ÍÊÇ˵×ÜÌåÐÔÄÜÌá¸ßÁË 40%¡£

¶ÔÓÚ Mysql µÈ DB£¬Èç¹û²¿ÊðÔÚ´ÅÅÌ£¬ÄÇôÓë DB ½øÐн»»¥£¬Èç¹ûÊý¾ÝûÓÐÃüÖÐ cache£¬Ã¿´Î½»»¥µÄ RT »áÖ±ÏßÉÏÉý£¬ Èç¹û²ÉÓà SSD£¬Ôò RT ÉÏÉýÇ÷ÊÆÒªÃ÷ÏÔºÃÓÚ´ÅÅÌ¡£

¸ö±ðÓ¦ÓÿÉÄÜ»áÓöµ½ÕâÖÖÇé¿ö£ºÔÚÏßÏÂѹ²âÏû·Ñ¹ý³ÌÖУ¬db ±íÏַdz£ºÃ£¬Ã¿´Î RT ¶¼ºÜ¶Ì£¬µ«ÊÇÉÏÏßÔËÐÐÒ»¶Îʱ¼ä£¬RT ¾Í»á±ä³¤£¬Ïû·ÑÍÌÍÂÁ¿Ö±ÏßϽµ

Ö÷ÒªÔ­ÒòÊÇÏßÏÂѹ²âʱ¼ä¹ý¶Ì£¬ÏßÉÏÔËÐÐÒ»¶Îʱ¼äºó£¬cache ÃüÖÐÂÊϽµ£¬ÄÇô RT ¾Í»áÔö¼Ó¡£½¨ÒéÔÚÏßÏÂѹ²âʱ£¬Òª²âÊÔ×ã¹»³¤Ê±¼ä£¬¾¡¿ÉÄÜÄ£ÄâÏßÉÏ»·¾³£¬Ñ¹²â¹ý³ÌÖУ¬Êý¾ÝµÄ·Ö²¼Ò²ºÜÖØÒª£¬Êý¾Ý²»Í¬£¬¿ÉÄÜ cache µÄÃüÖÐÂÊÒ²»áÍêÈ«²»Í¬

Producer×î¼Ñʵ¼ù

1.·¢ËÍÏûÏ¢×¢ÒâÊÂÏî

£¨1£© Ò»¸öÓ¦Óþ¡¿ÉÄÜÓÃÒ»¸ö Topic£¬ÏûÏ¢×ÓÀàÐÍÓà tags À´±êʶ£¬tags ¿ÉÒÔÓÉÓ¦ÓÃ×ÔÓÉÉèÖá£Ö»Óз¢ËÍÏûÏ¢ÉèÖÃÁËtags£¬Ïû·Ñ·½ÔÚ¶©ÔÄÏûϢʱ£¬²Å¿ÉÒÔÀûÓà tags ÔÚ broker ×öÏûÏ¢¹ýÂË¡£

£¨2£©Ã¿¸öÏûÏ¢ÔÚÒµÎñ²ãÃæµÄΨһ±êʶÂ룬ҪÉèÖõ½ keys ×ֶΣ¬·½±ã½«À´¶¨Î»ÏûÏ¢¶ªÊ§ÎÊÌâ¡£·þÎñÆ÷»áΪÿ¸öÏûÏ¢´´½¨Ë÷Òý£¨¹þÏ£Ë÷Òý£©£¬Ó¦ÓÿÉÒÔͨ¹ý topic£¬key À´²éѯÕâÌõÏûÏ¢ÄÚÈÝ£¬ÒÔ¼°ÏûÏ¢±»Ë­Ïû·Ñ¡£ÓÉÓÚÊǹþÏ£Ë÷Òý£¬ÇëÎñ±Ø±£Ö¤ key ¾¡¿ÉÄÜΨһ£¬ÕâÑù¿ÉÒÔ±ÜÃâDZÔڵĹþÏ£³åÍ»¡£

£¨3£©ÏûÏ¢·¢Ëͳɹ¦»òÕßʧ°Ü£¬Òª´òÓ¡ÏûÏ¢ÈÕÖ¾£¬Îñ±ØÒª´òÓ¡ sendresult ºÍ key ×Ö¶Î

£¨4£©send ÏûÏ¢·½·¨£¬Ö»Òª²»Å×Òì³££¬¾Í´ú±í·¢Ëͳɹ¦¡£µ«ÊÇ·¢Ëͳɹ¦»áÓжà¸ö״̬£¬ÔÚ sendResult ÀﶨÒå

SEND_OK£ºÏûÏ¢·¢Ëͳɹ¦

FLUSH_DISK_TIMEOUT£ºÏûÏ¢·¢Ëͳɹ¦£¬µ«ÊÇ·þÎñÆ÷Ë¢Å̳¬Ê±£¬ÏûÏ¢ÒѾ­½øÈë·þÎñÆ÷¶ÓÁУ¬Ö»ÓдËʱ·þÎñÆ÷å´»ú£¬ÏûÏ¢²Å»á¶ªÊ§

FLUSH_SLAVE_TIMEOUT£ºÏûÏ¢·¢Ëͳɹ¦£¬µ«ÊÇ·þÎñÆ÷ͬ²½µ½ Slave ʱ³¬Ê±£¬ÏûÏ¢ÒѾ­½øÈë·þÎñÆ÷¶ÓÁУ¬Ö»ÓдËʱ·þÎñÆ÷å´»ú£¬ÏûÏ¢²Å»á¶ªÊ§

SLAVE_NOT_AVAILABLE£ºÏûÏ¢·¢Ëͳɹ¦£¬µ«ÊÇ´Ëʱ slave ²»¿ÉÓã¬ÏûÏ¢ÒѾ­½øÈë·þÎñÆ÷¶ÓÁУ¬Ö»ÓдËʱ·þÎñÆ÷å´»ú£¬ÏûÏ¢²Å»á¶ªÊ§¡£¶ÔÓÚ¾«È··¢ËÍ˳ÐòÏûÏ¢µÄÓ¦Óã¬ÓÉÓÚ˳ÐòÏûÏ¢µÄ¾ÖÏÞÐÔ£¬¿ÉÄÜ»áÉæ¼°µ½Ö÷±¸×Ô¶¯Çл»ÎÊÌ⣬ËùÒÔÈç¹ûsendresult ÖÐµÄ status ×ֶβ»µÈÓÚ SEND_OK£¬¾ÍÓ¦¸Ã³¢ÊÔÖØÊÔ¡£¶ÔÓÚÆäËûÓ¦Óã¬ÔòûÓбØÒªÕâÑù

£¨5£©¶ÔÓÚÏûÏ¢²»¿É¶ªÊ§Ó¦Óã¬Îñ±ØÒªÓÐÏûÏ¢ÖØ·¢»úÖÆ

2.ÏûÏ¢·¢ËÍʧ°Ü´¦Àí

Producer µÄ send ·½·¨±¾ÉíÖ§³ÖÄÚ²¿ÖØÊÔ£¬ÖØÊÔÂß¼­ÈçÏ£º

£¨1£© ÖÁ¶àÖØÊÔ 3 ´Î

£¨2£© Èç¹û·¢ËÍʧ°Ü£¬ÔòÂÖתµ½ÏÂÒ»¸ö Broker

£¨3£© Õâ¸ö·½·¨µÄ×ܺÄʱʱ¼ä²»³¬¹ý sendMsgTimeout ÉèÖõÄÖµ£¬Ä¬ÈÏ 10sËùÒÔ£¬Èç¹û±¾ÉíÏò broker ·¢ËÍÏûÏ¢²úÉú³¬Ê±Òì³££¬¾Í²»»áÔÙ×öÖØÊÔ

È磺

Èç¹ûµ÷Óà send ͬ²½·½·¨·¢ËÍʧ°Ü£¬Ôò³¢ÊÔ½«ÏûÏ¢´æ´¢µ½ db£¬Óɺǫ́Ï̶߳¨Ê±ÖØÊÔ£¬±£Ö¤ÏûÏ¢Ò»¶¨µ½´ï Broker¡£

ÉÏÊö db ÖØÊÔ·½Ê½ÎªÊ²Ã´Ã»Óм¯³Éµ½ MQ ¿Í»§¶ËÄÚ²¿×ö£¬¶øÊÇÒªÇóÓ¦ÓÃ×Ô¼ºÈ¥Íê³É£¬»ùÓÚÒÔϼ¸µã¿¼ÂÇ£º

£¨1£©MQ µÄ¿Í»§¶ËÉè¼ÆÎªÎÞ״̬ģʽ£¬·½±ãÈÎÒâµÄˮƽÀ©Õ¹£¬ÇÒ¶Ô»úÆ÷×ÊÔ´µÄÏûºÄ½ö½öÊÇ cpu¡¢ÄÚ´æ¡¢ÍøÂç

£¨2£©Èç¹û MQ ¿Í»§¶ËÄÚ²¿¼¯³ÉÒ»¸ö KV ´æ´¢Ä£¿é£¬ÄÇôÊý¾ÝÖ»ÓÐͬ²½ÂäÅ̲ÅÄܽϿɿ¿£¬¶øÍ¬²½ÂäÅ̱¾ÉíÐÔÄÜ¿ªÏú½Ï´ó£¬ËùÒÔͨ³£»á²ÉÓÃÒì²½ÂäÅÌ£¬ÓÖÓÉÓÚÓ¦Óùرչý³Ì²»ÊÜ MQ ÔËάÈËÔ±¿ØÖÆ£¬¿ÉÄܾ­³£»á·¢Éú kill -9 ÕâÑù±©Á¦·½Ê½¹Ø±Õ£¬Ôì³ÉÊý¾ÝûÓм°Ê±ÂäÅ̶ø¶ªÊ§

£¨3£©Producer ËùÔÚ»úÆ÷µÄ¿É¿¿ÐԽϵͣ¬Ò»°ãΪÐéÄâ»ú£¬²»ÊÊºÏ´æ´¢ÖØÒªÊý¾Ý¡£ ×ÛÉÏ£¬½¨ÒéÖØÊÔ¹ý³Ì½»ÓÉÓ¦ÓÃÀ´¿ØÖÆ¡£

3.Ñ¡Ôñ oneway ÐÎʽ·¢ËÍ

Ò»¸ö RPC µ÷Óã¬Í¨³£ÊÇÕâÑùÒ»¸ö¹ý³Ì

£¨1£©¿Í»§¶Ë·¢ËÍÇëÇóµ½·þÎñÆ÷

£¨2£©·þÎñÆ÷´¦Àí¸ÃÇëÇó

£¨3£©·þÎñÆ÷Ïò¿Í»§¶Ë·µ»ØÓ¦´ð

ËùÒÔÒ»¸ö RPC µÄºÄʱʱ¼äÊÇÉÏÊöÈý¸ö²½ÖèµÄ×ܺͣ¬¶øÄ³Ð©³¡¾°ÒªÇóºÄʱ·Ç³£¶Ì£¬µ«ÊǶԿɿ¿ÐÔÒªÇó²¢²»¸ß£¬ÀýÈçÈÕÖ¾ÊÕ¼¯ÀàÓ¦Ó㬴ËÀàÓ¦ÓÿÉÒÔ²ÉÓà oneway ÐÎʽµ÷Óã¬oneway ÐÎʽֻ·¢ËÍÇëÇ󲻵ȴýÓ¦´ð£¬¶ø·¢ËÍÇëÇóÔÚ¿Í»§¶ËʵÏÖ²ãÃæ½ö½öÊÇÒ»¸ö os ϵͳµ÷ÓõĿªÏú£¬¼´½«Êý¾ÝдÈë¿Í»§¶ËµÄ socket »º³åÇø£¬´Ë¹ý³ÌºÄʱͨ³£ÔÚ΢Ãë¼¶¡£

RocketMQ²»Ö¹¿ÉÒÔÖ±½ÓÍÆËÍÏûÏ¢£¬ÔÚÏû·Ñ¶Ë×¢²á¼àÌýÆ÷½øÐмàÌý£¬»¹¿ÉÒÔÓÉÏû·Ñ¶Ë¾ö¶¨×Ô¼ºÈ¥À­È¡Êý¾Ý

¸Õ¿ªÊ¼µÄûÓÐϸ¿´PullResult¶ÔÏó£¬ÒÔΪÀ­È¡µ½µÄ½á¹ûûÓÐMessageExt¶ÔÏó»¹Åܵ½ÈºÀïÃæÎʱðÈË£¬·¸2ÁË

ÌØ±ðҪעÒâ ¾²Ì¬±äÁ¿offsetTableµÄ×÷Óã¬À­È¡µÄÊǰ´ÕÕ´Óoffset£¨Àí½âΪϱ꣩λÖÿªÊ¼À­È¡£¬À­È¡NÌõ£¬offsetTable¼Ç¼Ï´ÎÀ­È¡µÄoffsetλÖá£

 
   
4085 ´Îä¯ÀÀ       33
Ïà¹ØÎÄÕÂ

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

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

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