±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂ磬ÎĽéÉÜÁ˵εγöÐÐΪʲôѡÔñ
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·¢³öÇëÇó¡£ |