1.
½éÉÜ
×î½üÔÚÑо¿Ò»Ð©ÏûÏ¢Öмä¼þ£¬³£ÓõÄMQÈçRabbitMQ,ActiveMQ,KafkaµÈ¡£NSQÊÇÒ»¸ö»ùÓÚGoÓïÑԵķֲ¼Ê½ÊµÊ±ÏûϢƽ̨£¬Ëü»ùÓÚMIT¿ªÔ´ÐÒé·¢²¼£¬ÓÉbitly¹«Ë¾¿ªÔ´³öÀ´µÄÒ»¿î¼òµ¥Ò×ÓõÄÏûÏ¢Öмä¼þ¡£
¹Ù·½ºÍµÚÈý·½»¹ÎªNSQ¿ª·¢ÁËÖÚ¶à¿Í»§¶Ë¹¦Äܿ⣬Èç¹Ù·½ÌṩµÄ»ùÓÚHTTPµÄnsqd¡¢Go¿Í»§¶Ëgo-nsq¡¢Python¿Í»§¶Ëpynsq¡¢»ùÓÚNode.jsµÄJavaScript¿Í»§¶Ënsqjs¡¢Òì²½C¿Í»§¶Ëlibnsq¡¢Java¿Í»§¶Ënsq-javaÒÔ¼°»ùÓÚ¸÷ÖÖÓïÑÔµÄÖÚ¶àµÚÈý·½¿Í»§¶Ë¹¦Äܿ⡣
1.1 Features
1). Distributed
NSQÌṩÁË·Ö²¼Ê½µÄ£¬È¥ÖÐÐÄ»¯£¬ÇÒûÓе¥µã¹ÊÕϵÄÍØÆË½á¹¹£¬Îȶ¨µÄÏûÏ¢´«Êä·¢²¼±£ÕÏ£¬Äܹ»¾ßÓиßÈÝ´íºÍHA£¨¸ß¿ÉÓã©ÌØÐÔ¡£
2). ScalableÒ×ÓÚÀ©Õ¹
NSQÖ§³ÖˮƽÀ©Õ¹£¬Ã»ÓÐÖÐÐÄ»¯µÄbrokers¡£ÄÚÖõķ¢ÏÖ·þÎñ¼ò»¯ÁËÔÚ¼¯ÈºÖÐÔö¼Ó½Úµã¡£Í¬Ê±Ö§³Öpub-subºÍload-balanced
µÄÏûÏ¢·Ö·¢¡£
3). Ops Friendly
NSQ·Ç³£ÈÝÒ×ÅäÖúͲ¿Êð£¬ÉúÀ´¾Í°ó¶¨ÁËÒ»¸ö¹ÜÀí½çÃæ¡£¶þ½øÖưüûÓÐÔËÐÐʱÒÀÀµ¡£¹Ù·½ÓÐDocker image¡£
4).Integrated¸ß¶È¼¯³É
¹Ù·½µÄ Go ºÍ Python¿â¶¼ÓÐÌṩ¡£¶øÇÒΪ´ó¶àÊýÓïÑÔÌṩÁ˿⡣
1.2 ×é¼þ
1.Topic £ºÒ»¸ötopic¾ÍÊdzÌÐò·¢²¼ÏûÏ¢µÄÒ»¸öÂß¼¼ü£¬µ±³ÌÐòµÚÒ»´Î·¢²¼ÏûϢʱ¾Í»á´´½¨topic¡£
2.Channels £ºchannelÓëÏû·ÑÕßÏà¹Ø£¬ÊÇÏû·ÑÕßÖ®¼äµÄ¸ºÔؾùºâ£¬channelÔÚijÖÖÒâÒåÉÏÀ´ËµÊÇÒ»¸ö¡°¶ÓÁС±¡£Ã¿µ±Ò»¸ö·¢²¼Õß·¢ËÍÒ»ÌõÏûÏ¢µ½Ò»¸ötopic£¬ÏûÏ¢»á±»¸´ÖƵ½ËùÓÐÏû·ÑÕßÁ¬½ÓµÄchannelÉÏ£¬Ïû·ÑÕßͨ¹ýÕâ¸öÌØÊâµÄchannel¶ÁÈ¡ÏûÏ¢£¬Êµ¼ÊÉÏ£¬ÔÚÏû·ÑÕßµÚÒ»´Î¶©ÔÄʱ¾Í»á´´½¨channel¡£Channel»á½«ÏûÏ¢½øÐÐÅÅÁУ¬Èç¹ûûÓÐÏû·ÑÕß¶ÁÈ¡ÏûÏ¢£¬ÏûÏ¢Ê×ÏÈ»áÔÚÄÚ´æÖÐÅŶӣ¬µ±Á¿Ì«´óʱ¾Í»á±»±£´æµ½´ÅÅÌÖС£
3.Messages£ºÏûÏ¢¹¹³ÉÁËÎÒÃÇÊý¾ÝÁ÷µÄÖмáÁ¦Á¿£¬Ïû·ÑÕß¿ÉÒÔÑ¡Ôñ½áÊøÏûÏ¢£¬±íÃ÷ËüÃÇÕýÔÚ±»Õý³£´¦Àí£¬»òÕßÖØÐ½«ËûÃÇÅŶӴýµ½ºóÃæÔÙ½øÐд¦Àí¡£Ã¿¸öÏûÏ¢°üº¬´«µÝ³¢ÊԵĴÎÊý£¬µ±ÏûÏ¢´«µÝ³¬¹ýÒ»¶¨µÄ·§Öµ´ÎÊýʱ£¬ÎÒÃÇÓ¦¸Ã·ÅÆúÕâЩÏûÏ¢£¬»òÕß×÷Ϊ¶îÍâÏûÏ¢½øÐд¦Àí¡£
4.nsqd£ºnsqd ÊÇÒ»¸öÊØ»¤½ø³Ì£¬¸ºÔð½ÓÊÕ£¬ÅŶӣ¬Í¶µÝÏûÏ¢¸ø¿Í»§¶Ë¡£Ëü¿ÉÒÔ¶ÀÁ¢ÔËÐУ¬²»¹ýͨ³£ËüÊÇÓÉ
nsqlookupd ʵÀýËùÔÚ¼¯ÈºÅäÖõģ¨ËüÔÚÕâÄÜÉùÃ÷ topics ºÍ channels£¬ÒÔ±ã´ó¼ÒÄÜÕÒµ½£©¡£
5.nsqlookupd£ºnsqlookupd ÊÇÊØ»¤½ø³Ì¸ºÔð¹ÜÀíÍØÆËÐÅÏ¢¡£¿Í»§¶Ëͨ¹ý²éѯ
nsqlookupd À´·¢ÏÖÖ¸¶¨»°Ì⣨topic£©µÄÉú²úÕߣ¬²¢ÇÒ nsqd ½Úµã¹ã²¥»°Ì⣨topic£©ºÍͨµÀ£¨channel£©ÐÅÏ¢¡£ÓÐÁ½¸ö½Ó¿Ú£ºTCP
½Ó¿Ú£¬nsqd ÓÃËüÀ´¹ã²¥¡£HTTP ½Ó¿Ú£¬¿Í»§¶ËÓÃËüÀ´·¢Ïֺ͹ÜÀí¡£
6.nsqadmin£ºnsqadmin ÊÇÒ»Ì× WEB UI£¬ÓÃÀ´»ã¼¯¼¯ÈºµÄʵʱͳ¼Æ£¬²¢Ö´Ðв»Í¬µÄ¹ÜÀíÈÎÎñ¡£
³£Óù¤¾ßÀࣺ
7.nsq_to _file£ºÏû·ÑÖ¸¶¨µÄ»°Ì⣨topic£©/ͨµÀ£¨channel£©£¬²¢Ð´µ½ÎļþÖУ¬ÓÐÑ¡ÔñµÄ¹ö¶¯ºÍ/»òѹËõÎļþ¡£
8.nsq_to _http£ºÏû·ÑÖ¸¶¨µÄ»°Ì⣨topic£©/ͨµÀ£¨channel£©ºÍÖ´ÐÐ
HTTP requests (GET/POST) µ½Ö¸¶¨µÄ¶Ëµã¡£
9.nsq_to _nsq£ºÏû·ÑÕßÖ¸¶¨µÄ»°Ìâ/ͨµÀºÍÖØ·¢²¼ÏûÏ¢µ½Ä¿µÄµØ
nsqd ͨ¹ý TCP¡£
1.3 ÍØÆË½á¹¹
NSQÍÆ¼öͨ¹ýËûÃÇÏàÓ¦µÄnsqdʵÀýʹÓÃÐͬ¶¨Î»·¢²¼Õߣ¬ÕâÒâζ׿´Ê¹Ãæ¶ÔÍøÂç·ÖÇø£¬ÏûÏ¢Ò²»á±»±£´æÔÚ±¾µØ£¬Ö±µ½ËüÃDZ»Ò»¸öÏû·ÑÕß¶ÁÈ¡¡£¸üÖØÒªµÄÊÇ£¬·¢²¼Õß²»±ØÈ¥·¢ÏÖÆäËûµÄnsqd½Úµã£¬ËûÃÇ×ÜÊÇ¿ÉÒÔÏò±¾µØÊµÀý·¢²¼ÏûÏ¢¡£

NSQ
Ê×ÏÈ£¬Ò»¸ö·¢²¼ÕßÏòËüµÄ±¾µØnsqd·¢ËÍÏûÏ¢£¬Òª×öµ½Õâµã£¬Ê×ÏÈÒªÏÈ´ò¿ªÒ»¸öÁ¬½Ó£¬È»ºó·¢ËÍÒ»¸ö°üº¬topicºÍÏûÏ¢Ö÷ÌåµÄ·¢²¼ÃüÁÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃǽ«ÏûÏ¢·¢²¼µ½Ê¼þtopicÉÏÒÔ·ÖÉ¢µ½ÎÒÃDz»Í¬µÄworkerÖС£
ʼþtopic»á¸´ÖÆÕâЩÏûÏ¢²¢ÇÒÔÚÿһ¸öÁ¬½ÓtopicµÄchannelÉϽøÐÐÅŶӣ¬ÔÚÎÒÃǵݸÀýÖУ¬ÓÐÈý¸öchannel£¬ËüÃÇÆäÖÐÖ®Ò»×÷Ϊµµ°¸channel¡£Ïû·ÑÕß»á»ñÈ¡ÕâЩÏûÏ¢²¢ÇÒÉÏ´«µ½S3¡£

nsqd
ÿ¸öchannelµÄÏûÏ¢¶¼»á½øÐÐÅŶӣ¬Ö±µ½Ò»¸öworker°ÑËûÃÇÏû·Ñ£¬Èç¹û´Ë¶ÓÁг¬³öÁËÄÚ´æÏÞÖÆ£¬ÏûÏ¢½«»á±»Ð´Èëµ½´ÅÅÌÖС£Nsqd½ÚµãÊ×ÏÈ»áÏònsqlookup¹ã²¥ËûÃǵÄλÖÃÐÅÏ¢£¬Ò»µ©ËüÃÇ×¢²á³É¹¦£¬worker½«»á´Ónsqlookup·þÎñÆ÷½ÚµãÉÏ·¢ÏÖËùÓаüº¬Ê¼þtopicµÄnsqd½Úµã¡£

nsqlookupd
È»ºóÿ¸öworkerÏòÿ¸önsqdÖ÷»ú½øÐж©ÔIJÙ×÷£¬ÓÃÓÚ±íÃ÷workerÒѾ׼±¸ºÃ½ÓÊÜÏûÏ¢ÁË¡£ÕâÀïÎÒÃDz»ÐèÒªÒ»¸öÍêÕûµÄÁ¬Í¨Í¼£¬µ«ÎÒÃDZØÐëÒª±£Ö¤Ã¿¸öµ¥¶ÀµÄnsqdʵÀýÓµÓÐ×ã¹»µÄÏû·ÑÕßÈ¥Ïû·ÑËüÃǵÄÏûÏ¢£¬·ñÔòchannel»á±»¶ÓÁжÑ×Å¡£
2. Internals
2.1 ÏûÏ¢´«µÝµ£±£
NSQ ±£Ö¤ÏûÏ¢½«½»¸¶ÖÁÉÙÒ»´Î£¬ËäÈ»ÏûÏ¢¿ÉÄÜÊÇÖØ¸´µÄ¡£Ïû·ÑÕßÓ¦¸Ã¹Ø×¢µ½ÕâÒ»µã£¬É¾³ýÖØ¸´Êý¾Ý»òÖ´ÐÐidempotentµÈ²Ù×÷¡£
Õâ¸öµ£±£ÊÇ×÷ΪÐÒéºÍ¹¤×÷Á÷µÄÒ»²¿·Ö£¬¹¤×÷ÔÀíÈçÏ£¨¼ÙÉè¿Í»§¶Ë³É¹¦Á¬½Ó²¢¶©ÔÄÒ»¸ö»°Ì⣩£º
1£©¿Í»§±íʾÒѾ׼±¸ºÃ½ÓÊÕÏûÏ¢
2£©NSQ ·¢ËÍÒ»ÌõÏûÏ¢£¬²¢ÔÝʱ½«Êý¾Ý´æ´¢ÔÚ±¾µØ£¨ÔÚ re-queue »ò timeout£©
3£©¿Í»§¶Ë»Ø¸´ FIN£¨½áÊø£©»ò REQ£¨ÖØÐÂÅŶӣ©·Ö±ðָʾ³É¹¦»òʧ°Ü¡£Èç¹û¿Í»§¶ËûÓлظ´, NSQ
»áÔÚÉ趨µÄʱ¼ä³¬Ê±£¬×Ô¶¯ÖØÐÂÅŶÓÏûÏ¢
ÕâÈ·±£ÁËÏûÏ¢¶ªÊ§Î¨Ò»¿ÉÄܵÄÇé¿öÊDz»Õý³£½áÊø nsqd ½ø³Ì¡£ÔÚÕâÖÖÇé¿öÏ£¬ÕâÊÇÔÚÄÚ´æÖеÄÈκÎÐÅÏ¢£¨»òÈκλº³åδˢе½´ÅÅÌ£©¶¼½«¶ªÊ§¡£
ÈçºÎ·ÀÖ¹ÏûÏ¢¶ªÊ§ÊÇ×îÖØÒªµÄ£¬¼´Ê¹ÊÇÕâ¸öÒâÍâÇé¿ö¿ÉÒԵõ½»º½â¡£Ò»ÖÖ½â¾ö·½°¸Êǹ¹³ÉÈßÓà nsqd¶Ô£¨ÔÚ²»Í¬µÄÖ÷»úÉÏ£©½ÓÊÕÏûÏ¢µÄÏàͬ²¿·ÖµÄ¸±±¾¡£ÒòΪÄãʵÏÖµÄÏû·ÑÕßÊÇÃݵȵģ¬ÒÔÁ½±¶Ê±¼ä´¦ÀíÕâЩÏûÏ¢²»»á¶ÔÏÂÓÎÔì³ÉÓ°Ï죬²¢Ê¹µÃϵͳÄܹ»³ÐÊÜÈκε¥Ò»½Úµã¹ÊÕ϶ø²»»á¶ªÊ§ÐÅÏ¢¡£
2.2 ¼ò»¯ÅäÖú͹ÜÀí
µ¥¸ö nsqd ʵÀý±»Éè¼Æ³É¿ÉÒÔͬʱ´¦Àí¶à¸öÊý¾ÝÁ÷¡£Á÷±»³ÆÎª¡°»°Ì⡱ºÍ»°ÌâÓÐ 1 ¸ö»ò¶à¸ö¡°Í¨µÀ¡±¡£Ã¿¸öͨµÀ¶¼½ÓÊÕµ½Ò»¸ö»°ÌâÖÐËùÓÐÏûÏ¢µÄ¿½±´¡£ÔÚʵ¼ùÖУ¬Ò»¸öͨµÀÓ³Éäµ½ÏÂÐзþÎñÏû·ÑÒ»¸ö»°Ìâ¡£
»°ÌâºÍͨµÀ¶¼Ã»ÓÐÔ¤ÏÈÅäÖ᣻°ÌâÓɵÚÒ»´Î·¢²¼ÏûÏ¢µ½ÃüÃûµÄ»°Ìâ»òµÚÒ»´Îͨ¹ý¶©ÔÄÒ»¸öÃüÃû»°ÌâÀ´´´½¨¡£Í¨µÀ±»µÚÒ»´Î¶©Ôĵ½Ö¸¶¨µÄͨµÀ´´½¨¡£»°ÌâºÍͨµÀµÄËùÓлº³åµÄÊý¾ÝÏ໥¶ÀÁ¢£¬·ÀÖ¹»ºÂýÏû·ÑÕßÔì³É¶ÔÆäËûͨµÀµÄ»ýѹ£¨Í¬ÑùÊÊÓÃÓÚ»°Ìâ¼¶±ð£©¡£
Ò»¸öͨµÀÒ»°ã»áÓжà¸ö¿Í»§¶ËÁ¬½Ó¡£¼ÙÉèËùÓÐÒÑÁ¬½ÓµÄ¿Í»§¶Ë´¦ÓÚ×¼±¸½ÓÊÕÏûÏ¢µÄ״̬£¬Ã¿¸öÏûÏ¢½«±»´«µÝµ½Ò»¸öËæ»úµÄ¿Í»§¶Ë¡£nsqlookupd£¬ËüÌṩÁËÒ»¸öĿ¼·þÎñ£¬Ïû·ÑÕß¿ÉÒÔ²éÕÒµ½ÌṩËûÃǸÐÐËȤ¶©ÔÄ»°ÌâµÄ
nsqd µØÖ· ¡£ÔÚÅäÖ÷½Ã棬°ÑÏû·ÑÕßÓëÉú²úÕß½âñ£¨ËüÃǶ¼·Ö±ðÖ»ÐèÒªÖªµÀÄÄÀïÈ¥Á¬½Ó nsqlookupd
µÄ¹²Í¬ÊµÀý£¬¶ø²»ÊǶԷ½£©£¬½µµÍ¸´ÔÓÐÔºÍά»¤¡£
ÔÚ¸üµ×µÄ²ãÃæ£¬Ã¿¸ö nsqd ÓÐÒ»¸öÓë nsqlookupd µÄ³¤ÆÚ TCP Á¬½Ó£¬¶¨ÆÚÍÆ¶¯Æä״̬¡£Õâ¸öÊý¾Ý±»
nsqlookupd ÓÃÓÚ¸øÏû·ÑÕß֪ͨ nsqd µØÖ·¡£¶ÔÓÚÏû·ÑÕßÀ´Ëµ£¬Ò»¸ö±©Â¶µÄ HTTP /lookup
½Ó¿ÚÓÃÓÚÂÖѯ¡£Îª»°ÌâÒýÈëÒ»¸öеÄÏû·ÑÕߣ¬Ö»ÐèÆô¶¯Ò»¸öÅäÖÃÁË nsqlookup ʵÀýµØÖ·µÄ NSQ
¿Í»§¶Ë¡£ÎÞÐèΪÌí¼ÓÈκÎеÄÏû·ÑÕß»òÉú²úÕ߸ü¸ÄÅäÖ㬴ó´ó½µµÍÁË¿ªÏúºÍ¸´ÔÓÐÔ¡£
2.3 Ïû³ýµ¥µã¹ÊÕÏ
NSQ±»Éè¼ÆÒÔ·Ö²¼µÄ·½Ê½±»Ê¹Óá£nsqd ¿Í»§¶Ë£¨Í¨¹ý TCP £©Á¬½Óµ½Ö¸¶¨»°ÌâµÄËùÓÐÉú²úÕßʵÀý¡£Ã»ÓÐÖмäÈË£¬Ã»ÓÐÏûÏ¢´úÀí£¬Ò²Ã»Óе¥µã¹ÊÕÏ¡£
ÕâÖÖÍØÆË½á¹¹Ïû³ýµ¥Á´£¬¾ÛºÏ£¬·´À¡¡£Ïà·´£¬ÄãµÄÏû·ÑÕßÖ±½Ó·ÃÎÊËùÓÐÉú²úÕß¡£´Ó¼¼ÊõÉϽ²£¬Äĸö¿Í»§¶ËÁ¬½Óµ½Äĸö
NSQ ²»ÖØÒª£¬Ö»ÒªÓÐ×ã¹»µÄÏû·ÑÕßÁ¬½Óµ½ËùÓÐÉú²úÕߣ¬ÒÔÂú×ã´óÁ¿µÄÏûÏ¢£¬±£Ö¤ËùÓж«Î÷×îÖÕ½«±»´¦Àí¡£¶ÔÓÚ
nsqlookupd£¬¸ß¿ÉÓÃÐÔÊÇͨ¹ýÔËÐжà¸öʵÀýÀ´ÊµÏÖ¡£ËûÃDz»Ö±½ÓÏ໥ͨÐźÍÊý¾Ý±»ÈÏΪÊÇ×îÖÕÒ»Ö¡£Ïû·ÑÕßÂÖѯËùÓеÄÅäÖõÄ
nsqlookupd ʵÀýºÍºÏ²¢ response¡£Ê§°ÜµÄ£¬ÎÞ·¨·ÃÎʵ쬻òÒÔÆäËû·½Ê½¹ÊÕϵĽڵ㲻»áÈÃϵͳÏÝÓÚÍ£¶Ù¡£
2.4 ЧÂÊ
¶ÔÓÚÊý¾ÝµÄÐÒ飬ͨ¹ýÍÆËÍÊý¾Ýµ½¿Í»§¶Ë×î´óÏ޶ȵØÌá¸ßÐÔÄܺÍÍÌÍÂÁ¿µÄ£¬¶ø²»Êǵȴý¿Í»§¶ËÀÊý¾Ý¡£Õâ¸ö¸ÅÄ³ÆÖ®Îª
RDY ״̬£¬»ù±¾ÉÏÊǿͻ§¶ËÁ÷Á¿¿ØÖƵÄÒ»ÖÖÐÎʽ¡£
µ±¿Í»§¶ËÁ¬½Óµ½ nsqd ºÍ²¢¶©Ôĵ½Ò»¸öͨµÀʱ£¬Ëü±»·ÅÖÃÔÚÒ»¸ö RDY
Ϊ 0 ״̬¡£ÕâÒâζ×Å£¬»¹Ã»ÓÐÐÅÏ¢±»·¢Ë͵½¿Í»§¶Ë¡£µ±¿Í»§¶ËÒÑ×¼±¸ºÃ½ÓÊÕÏûÏ¢·¢ËÍ£¬¸üÐÂËüµÄÃüÁî RDY
״̬µ½Ëü×¼±¸´¦ÀíµÄÊýÁ¿£¬±ÈÈç 100¡£ÎÞÐèÈκζîÍâµÄÖ¸Áµ± 100 ÌõÏûÏ¢¿ÉÓÃʱ£¬½«±»´«µÝµ½¿Í»§¶Ë£¨·þÎñÆ÷¶ËΪÄǸö¿Í»§¶Ëÿ´ÎµÝ¼õ
RDY ¼ÆÊý£©¡£¿Í»§¶Ë¿âµÄ±»Éè¼Æ³ÉÔÚ RDY Êý´ïµ½ÅäÖà max-in-flightµÄ 25% ·¢ËÍÒ»¸öÃüÁîÀ´¸üÐÂ
RDY ¼ÆÊý£¨²¢Êʵ±¿¼ÂÇÁ¬½Óµ½¶à¸ö nsqd Çé¿öÏ£¬Êʵ±µØ·ÖÅ䣩¡£

efficiency
2.5 ÐÄÌøºÍ³¬Ê±
NSQ µÄ TCP ÐÒéÊÇÃæÏò push µÄ¡£ÔÚ½¨Á¢Á¬½Ó£¬ÎÕÊÖ£¬ºÍ¶©Ôĺó£¬Ïû·ÑÕß±»·ÅÖÃÔÚÒ»¸öΪ 0
µÄ RDY ״̬¡£µ±Ïû·ÑÕß×¼±¸ºÃ½ÓÊÕÏûÏ¢£¬Ëü¸üÐ嵀 RDY ״̬µ½×¼±¸½ÓÊÕÏûÏ¢µÄÊýÁ¿¡£NSQ ¿Í»§¶Ë¿â²»¶ÏÔÚÄ»ºó¹ÜÀí£¬ÏûÏ¢¿ØÖÆÁ÷µÄ½á¹û¡£Ã¿¸ôÒ»¶Îʱ¼ä£¬nsqd
½«·¢ËÍÒ»¸öÐÄÌøÏßÁ¬½Ó¡£¿Í»§¶Ë¿ÉÒÔÅäÖÃÐÄÌøÖ®¼äµÄ¼ä¸ô£¬µ« nsqd »áÆÚ´ýÒ»¸ö»ØÓ¦ÔÚËü·¢ËÍÏÂÒ»¸öÐĵô֮ǰ¡£
×éºÏÓ¦Óü¶±ðµÄÐÄÌøºÍ RDY ״̬£¬±ÜÃâÍ·×èÈûÏÖÏó£¬Ò²¿ÉÄÜʹÐÄÌøÎÞÓ㨼´£¬Èç¹ûÏû·ÑÕßÊÇÔÚºóÃæµÄ´¦ÀíÏûÏ¢Á÷µÄ½ÓÊÕ»º³åÇøÖУ¬²Ù×÷ϵͳ½«±»ÌîÂú£¬¶ÂÐÄÌø£©ÎªÁ˱£Ö¤½ø¶È£¬ËùÓеÄÍøÂç
IO ʱ¼äÉÏÏÞÊÆ±ØÓëÅäÖõÄÐÄÌø¼ä¸ôÏà¹ØÁª¡£ÕâÒâζ×Å£¬Äã¿ÉÒÔ´Ó×ÖÃæÉϰεôÖ®¼äµÄÍøÂçÁ¬½Ó nsqd ºÍÏû·ÑÕߣ¬Ëü»á¼ì²â²¢ÕýÈ·´¦Àí´íÎó¡£µ±¼ì²âµ½Ò»¸öÖÂÃü´íÎ󣬿ͻ§¶ËÁ¬½Ó±»Ç¿Öƹرա£ÔÚ´«ÊäÖеÄÏûÏ¢»á³¬Ê±¶øÖØÐÂÅŶӵȴý´«µÝµ½ÁíÒ»¸öÏû·ÑÕß¡£×îºó£¬´íÎó»á±»¼Ç¼²¢ÀۼƵ½¸÷ÖÖÄÚ²¿Ö¸±ê¡£
2.6 ·Ö²¼Ê½
ÒòΪNSQûÓÐÔÚÊØ»¤³ÌÐòÖ®¼ä¹²ÏíÐÅÏ¢£¬ËùÒÔËü´ÓÒ»¿ªÊ¼¾ÍÊÇΪÁË·Ö²¼Ê½²Ù×÷¶øÉú¡£¸ö±ðµÄ»úÆ÷¿ÉÒÔËæ±ãå´»úËæ±ãÆô¶¯¶ø²»»áÓ°Ï쵽ϵͳµÄÆäÓಿ·Ö£¬ÏûÏ¢·¢²¼Õß¿ÉÒÔÔÚ±¾µØ·¢²¼£¬¼´Ê¹Ãæ¶ÔÍøÂç·ÖÇø¡£
ÕâÖÖ¡°·Ö²¼Ê½ÓÅÏÈ¡±µÄÉè¼ÆÀíÄîÒâζ×ÅNSQ»ù±¾ÉÏ¿ÉÒÔÓÀÔ¶²»¶ÏµØÀ©Õ¹£¬ÐèÒª¸ü¸ßµÄÍÌÍÂÁ¿£¿ÄǾÍÌí¼Ó¸ü¶àµÄnsqd°É¡£Î¨Ò»µÄ¹²Ïí״̬¾ÍÊDZ£´æÔÚlookup½ÚµãÉÏ£¬ÉõÖÁËüÃDz»ÐèҪȫ¾ÖÊÓͼ£¬ÅäÖÃijЩnsqd×¢²áµ½Ä³Ð©lookup½ÚµãÉÏÕâÊǺܼòµ¥µÄÅäÖã¬Î¨Ò»¹Ø¼üµÄµØ·½¾ÍÊÇÏû·ÑÕß¿ÉÒÔͨ¹ýlookup½Úµã»ñÈ¡ËùÓÐÍêÕûµÄ½Úµã¼¯¡£ÇåÎúµÄ¹ÊÕÏʼþ¡ª¡ªNSQÔÚ×é¼þÄÚ½¨Á¢ÁËÒ»Ì×Ã÷È·¹ØÓÚ¿ÉÄܵ¼Ö¹ÊÕϵĵĹÊÕÏȨºâ»úÖÆ£¬Õâ¶ÔÏûÏ¢´«µÝºÍ»Ö¸´¶¼ÓÐÒâÒå¡£ËäÈ»ËüÃÇ¿ÉÄܲ»ÏñKafkaϵͳÄÇÑùÌṩÑϸñµÄ±£Ö¤¼¶±ð£¬µ«NSQ¼òµ¥µÄ²Ù×÷ʹ¹ÊÕÏÇé¿ö·Ç³£Ã÷ÏÔ¡£
2.7 no replication
²»ÏñÆäËûµÄ¶ÓÁÐ×é¼þ£¬NSQ²¢Ã»ÓÐÌṩÈκÎÐÎʽµÄ¸´Öƺͼ¯Èº£¬Ò²ÕýÊÇÕâµãÈÃËüÄܹ»Èç´Ë¼òµ¥µØÔËÐУ¬µ«Ëüȷʵ¶ÔÓÚһЩ¸ß±£Ö¤ÐԸ߿ɿ¿ÐÔµÄÏûÏ¢·¢²¼Ã»ÓÐ×ã¹»µÄ±£Ö¤¡£ÎÒÃÇ¿ÉÒÔͨ¹ý½µµÍÎļþͬ²½µÄʱ¼äÀ´²¿·Ö±ÜÃ⣬ֻÐèͨ¹ýÒ»¸ö±êÖ¾ÅäÖã¬Í¨¹ýEBSÖ§³ÖÎÒÃǵĶÓÁС£µ«ÊÇÕâÑùÈÔÈ»´æÔÚÒ»¸öÏûÏ¢±»·¢²¼ºóÂíÉÏËÀÍö£¬¶ªÊ§ÁËÓÐЧµÄдÈëµÄÇé¿ö¡£
2.8 ûÓÐÑϸñµÄ˳Ðò
ËäÈ»KafkaÓÉÒ»¸öÓÐÐòµÄÈÕÖ¾¹¹³É£¬µ«NSQ²»ÊÇ¡£ÏûÏ¢¿ÉÒÔÔÚÈκÎʱ¼äÒÔÈκÎ˳Ðò½øÈë¶ÓÁС£ÔÚÎÒÃÇʹÓõݸÀýÖУ¬Õâͨ³£Ã»ÓйØÏµ£¬ÒòΪËùÓеÄÊý¾Ý¶¼±»¼ÓÉÏÁËʱ¼ä´Á£¬µ«Ëü²¢²»ÊʺÏÐèÒªÑϸñ˳ÐòµÄÇé¿ö¡£
2.9 ÎÞÊý¾ÝÖØ¸´É¾³ý¹¦ÄÜ
NSQ¶ÔÓÚ³¬Ê±ÏµÍ³£¬ËüʹÓÃÁËÐÄÌø¼ì²â»úÖÆÈ¥²âÊÔÏû·ÑÕßÊÇ·ñ´æ»î»¹ÊÇËÀÍö¡£ºÜ¶àÔÒò»áµ¼ÖÂÎÒÃǵÄconsumerÎÞ·¨Íê³ÉÐÄÌø¼ì²â£¬ËùÒÔÔÚconsumerÖбØÐëÓÐÒ»¸öµ¥¶ÀµÄ²½ÖèÈ·±£ÃݵÈÐÔ¡£
3. ʵ¼ù°²×°¹ý³Ì
±¾ÎĽ«nsq¼¯Èº¾ßÌåµÄ°²×°¹ý³ÌÂÔÈ¥£¬´ó¼Ò¿ÉÒÔ×ÔÐвο¼¹ÙÍø£¬±È½Ï¼òµ¥¡£Õⲿ·Ö½éÉÜϱÊÕßʵÑéµÄÍØÆË£¬ÒÔ¼°nsqadminµÄÏà¹ØÐÅÏ¢¡£
3.1 ÍØÆË½á¹¹

topology
ʵÑé²ÉÓÃ3̨NSQD·þÎñ£¬2̨LOOKUPD·þÎñ¡£
²ÉÓùٷ½ÍƼöµÄÍØÆË£¬ÏûÏ¢·¢²¼µÄ·þÎñºÍNSQDÔÚһ̨Ö÷»ú¡£Ò»¹²5̨»úÆ÷¡£
NSQ»ù±¾Ã»ÓÐÅäÖÃÎļþ£¬ÅäÖÃͨ¹ýÃüÁîÐÐÖ¸¶¨²ÎÊý¡£
Ö÷ÒªÃüÁîÈçÏÂ:
LOOKUPDÃüÁî
NSQDÃüÁî
¹¤¾ßÀ࣬Ïû·Ñºó´æ´¢µ½±¾µØÎļþ¡£
·¢²¼Ò»ÌõÏûÏ¢
3.2 nsqadmin
¶ÔStreamsµÄÏêϸÐÅÏ¢½øÐв鿴£¬°üÀ¨NSQD½Úµã£¬¾ßÌåµÄchannel£¬¶ÓÁÐÖеÄÏûÏ¢Êý£¬Á¬½ÓÊýµÈÐÅÏ¢¡£

nsqadmin

channel
ÁгöËùÓеÄNSQD½Úµã:

nodes
ÏûÏ¢µÄͳ¼Æ:

msgs
lookupÖ÷»úµÄÁбí:

hosts
4. ×ܽá
NSQ»ù±¾ºËÐľÍÊǼòµ¥ÐÔ£¬ÊÇÒ»¸ö¼òµ¥µÄ¶ÓÁУ¬ÕâÒâζ×ÅËüºÜÈÝÒ×½øÐйÊÕÏÍÆÀíºÍºÜÈÝÒ×·¢ÏÖbug¡£Ïû·ÑÕß¿ÉÒÔ×ÔÐд¦Àí¹ÊÕÏʼþ¶ø²»»áÓ°ÏìϵͳʣÏÂµÄÆäÓಿ·Ö¡£
ÊÂʵÉÏ£¬¼òµ¥ÐÔÊÇÎÒÃǾö¶¨Ê¹ÓÃNSQµÄÊ×ÒªÒòËØ£¬Õâ·½±ãÓëÎÒÃǵÄÐí¶àÆäËûÈí¼þÒ»Æðά»¤£¬Í¨¹ýÒýÈë¶ÓÁÐʹÎÒÃǵõ½ÁË¿°³ÆÍêÃÀµÄ±íÏÖ£¬Í¨¹ý¶ÓÁÐÉõÖÁÈÃÎÒÃÇÔö¼ÓÁ˼¸¸öÊýÁ¿¼¶µÄÍÌÍÂÁ¿¡£Ô½À´Ô½¶àµÄconsumerÐèÒªÒ»Ì×Ñϸñ¿É¿¿ÐÔºÍ˳ÐòÐÔ±£ÕÏ£¬ÕâÒѾ³¬¹ýÁËNSQÌṩµÄ¼òµ¥¹¦ÄÜ¡£
½áºÏÎÒÃǵÄÒµÎñϵͳÀ´¿´£¬¶ÔÓÚÎÒÃÇËùÐèÒª´«ÊäµÄ·¢Æ±ÏûÏ¢£¬Ïà¶Ô±È½ÏÃô¸Ð£¬ÎÞ·¨ÈÝÈÌij¸önsqdå´»ú£¬»òÕß´ÅÅÌÎÞ·¨Ê¹ÓõÄÇé¿ö£¬¸Ã½Úµã¶Ñ»ýµÄÏûÏ¢ÎÞ·¨Õһء£ÕâÊÇÎÒÃÇûÓÐÑ¡Ôñ¸ÃÏûÏ¢Öмä¼þµÄÖ÷ÒªÔÒò¡£¼òµ¥ÐԺͿɿ¿ÐÔËÆºõ²¢²»ÄÜÍêÈ«Âú×ã¡£Ïà±ÈKafka£¬ops¼ç¸ºÆð¸ü¶à¸ºÔðµÄÔËÓª¡£ÁíÒ»·½Ã棬ËüÓµÓÐÒ»¸ö¿É¸´ÖƵġ¢ÓÐÐòµÄÈÕÖ¾¿ÉÒÔÌṩ¸øÎÒÃǸüºÃµÄ·þÎñ¡£µ«¶ÔÓÚÆäËûÊʺÏNSQµÄconsumer£¬ËüΪÎÒÃÇ·þÎñµÄÏ൱ºÃ£¬ÎÒÃÇÆÚ´ý׿ÌÐø¹®¹ÌËüµÄ¼áʵµÄ»ù´¡¡£