|
±³¾° ǰÆÚÊÕµ½µÄÎÊÌ⣺ 1¡¢ÔÚTopologyÖÐÎÒÃÇ¿ÉÒÔÖ¸¶¨spout¡¢boltµÄ²¢Ðжȣ¬ÔÚÌá½»TopologyʱStormÈçºÎ½«spout¡¢bolt×Ô¶¯·¢²¼µ½Ã¿¸ö·þÎñÆ÷²¢ÇÒ¿ØÖÆ·þÎñµÄCPU¡¢´ÅÅ̵È×ÊÔ´µÄ£¿ 2¡¢Storm´¦ÀíÏûϢʱ»á¸ù¾ÝTopologyÉú³ÉÒ»¿ÃÏûÏ¢Ê÷£¬StormÈçºÎ¸ú×Ùÿ¸öÏûÏ¢¡¢ÈçºÎ±£Ö¤ÏûÏ¢²»¶ªÊ§ÒÔ¼°ÈçºÎʵÏÖÖØ·¢ÏûÏ¢»úÖÆ£¿ ÉÏÆª£ºstormÊÇÈçºÎ±£Ö¤at least onceÓïÒåµÄ
»Ø´ðÁ˵Ú2¸öÎÊÌâ¡£ ±¾ÆªÀ´½¨Á¢Ò»¸ö»ù±¾µÄ±³¾°£¬À´´ó¸Å¿´Ï¹¹³ÉstormÁ÷ʽ¼ÆËãÄÜÁ¦µÄһЩ»ù´¡¿ò¼Ü£¬²¢²¿·Ö»Ø´ðµÚÒ»¸öÎÊÌâ¡£
worker¡¢executor¡¢taskµÄ¹ØÏµ

workerÊÇÒ»¸ö½ø³Ì.
executorÊÇÒ»¸öỊ̈߳¬ÊÇÔËÐÐtasksµÄÎïÀíÈÝÆ÷.
taskÊǶÔspout/bolt/ackerµÈÈÎÎñµÄÂß¼³éÏó. supervisor»á¶¨Ê±´Ózookeeper»ñÈ¡ÍØ²¹ÐÅÏ¢topologies¡¢ÈÎÎñ·ÖÅäÐÅÏ¢assignments¼°¸÷ÀàÐÄÌøÐÅÏ¢£¬ÒÔ´ËΪÒÀ¾Ý½øÐÐÈÎÎñ·ÖÅä¡£ ÔÚsupervisorͬ²½Ê±£¬»á¸ù¾ÝеÄÈÎÎñ·ÖÅäÇé¿öÀ´Æô¶¯ÐµÄworker»òÕ߹رվɵÄworker²¢½øÐиºÔؾùºâ¡£ workerͨ¹ý¶¨ÆÚµÄ¸üÐÂconnectionsÐÅÏ¢£¬À´»ñÖªÆäÓ¦¸ÃͨѶµÄÆäËüworker¡£ workerÆô¶¯Ê±£¬»á¸ù¾ÝÆä·ÖÅäµ½µÄÈÎÎñÆô¶¯Ò»¸ö»ò¶à¸öexecutorÏ̡߳£ÕâЩÏ߳̽ö»á´¦ÀíΨһµÄtopology¡£
Èç¹ûÓÐеÄtolopogy±»Ìá½»µ½¼¯Èº£¬nimbus»áÖØÐ·ÖÅäÈÎÎñ£¬Õâ¸öºóÃæ»á˵µ½¡£ executorÏ̸߳ºÔð´¦Àí¶à¸öspouts»òÕß¶à¸öboltsµÄÂß¼£¬ÕâЩspouts»òÕßbolts£¬Ò²³ÆÎªtasks¡£ ¾ßÌåÓжàÉÙ¸öworker£¬¶àÉÙ¸öexecutor£¬Ã¿¸öexecutor¸ºÔð¶àÉÙ¸ötask£¬ÊÇÓÉÅäÖúÍÖ¸¶¨µÄparallelism-hint¹²Í¬¾ö¶¨µÄ£¬µ«Õâ¸öÖµ²¢²»Ò»¶¨µÈÓÚʵ¼ÊÔËÐÐÖеÄÊýÄ¿¡£ Èç¹û¼ÆËã³öµÄ×ܵÄexecutors³¬¹ýÁËnimbusµÄÏÞÖÆ£¬´Ëtopology½«²»»áµÃµ½Ö´ÐС£ ²¢ÐжȵÄ×÷Óãº



ÉÏÊö´úÂë»áÔÚnimbus½øÐÐÈÎÎñ·ÖÅäʱµ÷Óãº

Ïß³ÌÄ£Ðͼ°ÏûϢϵͳ »ù±¾¹ØÏµÈçÏÂËùʾ£º

workerÆô¶¯Ê±£¬³ýÁËÆô¶¯¶à¸öexecutorỊ̈߳¬»¹»áÆô¶¯¶à¸ö¹¤×÷Ïß³ÌÀ´¸ºÔðÏûÏ¢´«µÝ¡£ worker»á¶©Ôĵ½transfer-queueÀ´Ïû·ÑÏûÏ¢£¬Í¬Ê±Ò²»á·¢²¼ÏûÏ¢µ½transfer-queue£¬±ÈÈçÐèÒª½øÐÐÔ¶³Ì·¢²¼Ê±£¨Ä³¸öboltÔÚÁíÒ»¸ö½ø³Ì»òÕß½ÚµãÉÏ£©¡£ executor»á·¢²¼ÏûÏ¢µ½executor-send-queue±ÈÈçemit tuple£¬Í¬Ê±»á´Óexecutor-receive-queueÏû·ÑÏûÏ¢£¬±ÈÈçÖ´ÐÐack»òÕßfail¡£ batch-transfer-worker-handlerÏ̶߳©Ôĵ½executor-send-queueÏû·ÑÏûÏ¢£¬²¢½«ÏûÏ¢·¢²¼µ½transfer-queue¹©workerÏû·Ñ¡£ transfer-thread»á¶©Ôĵ½transfer-queueÏû·ÑÏûÏ¢£¬²¢¸ºÔð½«ÏûϢͨ¹ýsocket·¢Ë͵½Ô¶³Ì½ÚµãµÄ¶Ë¿ÚÉÏ¡£ workerͨ¹ýreceive-threadÏß³ÌÀ´ÊÕȡԶ³ÌÏûÏ¢£¬²¢½«ÏûÏ¢ÒÔ±¾µØ·½Ê½·¢²¼µ½ÏûÏ¢ÖÐÖ¸¶¨µÄexecutor¶ÔÓ¦µÄexecutor-receive-queue¡£executor°´µÚ3µãÀ´Ïû·ÑÏûÏ¢¡£ ÒÔÉÏËùÓеÄÏûÏ¢¶ÓÁж¼ÊÇDisruptor Queue£¬·Ç³£¸ßЧµÄÏ̼߳äͨѶ¿ò¼Ü¡£ Ëùν±¾µØ·¢²¼£¬ÊÇÖ¸ÔÚworker½ø³ÌÄÚ¼°executorÏß³Ì¼ä½øÐÐÏûÏ¢·¢²¼¡£
ËùνԶ³Ì·¢²¼£¬ÊÇÖ¸ÔÚworker½ø³Ì¼ä¡¢²»Í¬µÄ»úÆ÷¼ä½øÐÐÏûÏ¢·¢²¼¡£
ÈÎÎñµ÷¶È¼°¸ºÔؾùºâ
ÈÎÎñµ÷¶ÈµÄÖ÷Òª½ÇÉ«

nimbus½«¿ÉÒÔ¹¤×÷µÄworker³ÆÎªworker-slot. nimbusÊÇÕû¸ö¼¯ÈºµÄ¿Ø¹ÜºËÐÄ£¬×ÜÌ帺ÔðÁËtopologyµÄÌá½»¡¢ÔËÐÐ״̬¼à¿Ø¡¢¸ºÔؾùºâ¼°ÈÎÎñÖØÐ·ÖÅ䣬µÈµÈ¹¤×÷¡£
nimbus·ÖÅäµÄÈÎÎñ°üº¬ÁËtopology´úÂëËùÔڵķ¾¶£¨ÔÚnimbus±¾µØ£©¡¢tasks¡¢executors¼°workersÐÅÏ¢¡£
workerÓÉnode + portΨһȷ¶¨¡£ supervisor¸ºÔðʵ¼ÊµÄͬ²½workerµÄ²Ù×÷¡£Ò»¸ösupervisor³ÆÎªÒ»¸önode¡£Ëùνͬ²½worker£¬ÊÇÖ¸ÏìÓ¦nimbusµÄÈÎÎñµ÷¶ÈºÍ·ÖÅ䣬½øÐÐworkerµÄ½¨Á¢¡¢µ÷¶ÈÓëÏú»Ù¡£
Æäͨ¹ý½«topologyµÄ´úÂë´ÓnimbusÏÂÔØµ½±¾µØÒÔ½øÐÐÈÎÎñµ÷¶È¡£ ÈÎÎñ·ÖÅäÐÅÏ¢Öаüº¬taskµ½workerµÄÓ³ÉäÐÅÏ¢task -> node + host£¬ËùÒÔworker½Úµã¿É¾Ý´ËÐÅÏ¢ÅжϸúÄÄЩԶ³Ì»úÆ÷ͨѶ¡£
¼¯ÈºµÄ״̬»ú£º

¼¯Èº×´Ì¬¹ÜÀí ¼¯ÈºµÄ״̬ÊÇͨ¹ýÒ»¸östorm-cluster-stateµÄ¶ÔÏóÀ´ÃèÊöµÄ¡£
ÆäÌṩÁËÐí¶à¹¦Äܽӿڣ¬±ÈÈ磺 zookeeperÏà¹ØµÄ»ù±¾²Ù×÷£¬Èçcreate-node¡¢set-data¡¢remove-node¡¢get-childrenµÈ.
ÐÄÌø½Ó¿Ú£¬Èçsupervisor-heartbeat!¡¢worker-heatbeat!µÈ.
ÐÄÌøÐÅÏ¢£¬Èçexecutors-beatsµÈ.
Æô¶¯¡¢¸üС¢Í£Ö¹storm£¬Èçupdate-storm!µÈ. ÈçÏÂͼËùʾ£º

ÈÎÎñµ÷¶ÈµÄÒÀ¾Ý zookeeperÊÇÕû¸ö¼¯Èº×´Ì¬Í¬²½¡¢Ðµ÷µÄºËÐÄ×é¼þ¡£ supervisor¡¢worker¡¢executorµÈ×é¼þ»á¶¨ÆÚÏòzookeeperдÐÄÌøÐÅÏ¢¡£ µ±topology³öÏÖ´íÎó¡¢»òÕßÓÐеÄtopologyÌá½»µ½¼¯ÈºÊ±£¬topologiesÐÅÏ¢»áͬ²½µ½zookeeper¡£ nimbus»á¶¨ÆÚ¼àÊÓzookeeperÉϵÄÈÎÎñ·ÖÅäÐÅÏ¢assignments£¬²¢½«ÖØÐ·ÖÅäµÄ¼Æ»®Í¬²½µ½zookeeper¡£ ËùÒÔ£¬nimbus»á¸ù¾ÝÐÄÌø¡¢topologiesÐÅÏ¢¼°ÒÑ·ÖÅäµÄÈÎÎñÐÅϢΪÒÀ¾Ý£¬À´ÖØÐ·ÖÅäÈÎÎñ£¬ÈçÏÂͼËùʾ£º

ÈÎÎñµ÷¶ÈµÄʱ»ú ÈçÉÏÎĵÄ״̬»úͼËùʾ£¬rebalanceºÍdo-reblalance£¨±ÈÈçÀ´×Ôwebµ÷Ó㩻ᴥ·¢mk-assignments¼´ÈÎÎñ£¨ÖØÐ£©·ÖÅä¡£ ͬʱ£¬nimbus½ø³ÌÆô¶¯ºó£¬»áÖÜÆÚÐԵؽøÐÐmk-assignmentsµ÷Óã¬ÒÔ½øÐиºÔؾùºâºÍÈÎÎñ·ÖÅä¡£ ¿Í»§¶Ëͨ¹ýstorm jar ... topology ·½Ê½Ìá½»topology£¬»áͨ¹ýthrift½Ó¿Úµ÷ÓÃnimbusµÄÌá½»¹¦ÄÜ£¬´Ëʱ»áÆô¶¯storm£¬²¢´¥·¢mk-assignmentsµ÷ÓᣠtopologyÌá½»¹ý³Ì Ò»¸ötopologyµÄÌá½»¹ý³Ì£º ·Ç±¾µØÄ£Ê½Ï£¬¿Í»§¶Ëͨ¹ýthriftµ÷ÓÃnimbus½Ó¿Ú£¬À´ÉÏ´«´úÂëµ½nimbus²¢´¥·¢Ìá½»²Ù×÷. nimbus½øÐÐÈÎÎñ·ÖÅ䣬²¢½«ÐÅϢͬ²½µ½zookeeper. supervisor¶¨ÆÚ»ñÈ¡ÈÎÎñ·ÖÅäÐÅÏ¢£¬Èç¹ûtopology´úÂëȱʧ£¬»á´ÓnimbusÏÂÔØ´úÂ룬²¢¸ù¾ÝÈÎÎñ·ÖÅäÐÅÏ¢£¬Í¬²½worker. worker¸ù¾Ý·ÖÅäµÄtasksÐÅÏ¢£¬Æô¶¯¶à¸öexecutorỊ̈߳¬Í¬Ê±ÊµÀý»¯spout¡¢bolt¡¢ackerµÈ×é¼þ£¬´Ëʱ£¬µÈ´ýËùÓÐconnections£¨workerºÍÆäËü»úÆ÷ͨѶµÄÍøÂçÁ¬½Ó£©Æô¶¯Íê±Ï£¬´Ëstorm-cluster¼´½øÈ빤×÷״̬¡£ ³ý·ÇÏÔʾµ÷???kill topology£¬·ñÔòspout¡¢boltµÈ×é¼þ»áÒ»Ö±ÔËÐС£ Ö÷Òª¹ý³ÌÈçÏÂͼËùʾ£º

½áÓï ÒÔÉÏ£¬»ù±¾²ûÊöÁËstormµÄ»ù´¡¿ò¼Ü£¬µ«Î´Éæ¼°trident»úÖÆ£¬Ò²»ù±¾»Ø´ðÁËÎÊÌâ1¡£
|