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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Nacos ÅäÖÃÖÐÐÄÔ­Àí·ÖÎö
 
×÷ÕߣºåËÞÄ
  2028  次浏览      27
 2020-6-11  
   
 
±à¼­ÍƼö:
±¾ÎÄ×÷ÕßÖ÷Òª½éÉÜÁËNacos ÅäÖÃÖÐÐĵĶ¯Ì¬ÅäÖá¢Æô¶¯·þÎñ¡¢Ð½¨ÅäÖá¢Æô¶¯¿Í»§¶Ë¡¢ÐÞ¸ÄÅäÖÃÐÅÏ¢ÒÔ¼°ÊÊÓó¡¾°¡£
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

¶¯Ì¬ÅäÖùÜÀíÊÇ Nacos µÄÈý´ó¹¦ÄÜÖ®Ò»£¬Í¨¹ý¶¯Ì¬ÅäÖ÷þÎñ£¬ÎÒÃÇ¿ÉÒÔÔÚËùÓл·¾³ÖÐÒÔ¼¯ÖкͶ¯Ì¬µÄ·½Ê½¹ÜÀíËùÓÐÓ¦ÓóÌÐò»ò·þÎñµÄÅäÖÃÐÅÏ¢¡£

¶¯Ì¬ÅäÖÃÖÐÐÄ¿ÉÒÔʵÏÖÅäÖøüÐÂʱÎÞÐèÖØÐ²¿ÊðÓ¦ÓóÌÐòºÍ·þÎñ¼´¿ÉʹÏàÓ¦µÄÅäÖÃÐÅÏ¢ÉúЧ£¬Õ⼫´óÁËÔö¼ÓÁËϵͳµÄÔËάÄÜÁ¦¡£

¶¯Ì¬ÅäÖÃ

ÏÂÃæÎÒ½«À´ºÍ´ó¼ÒÒ»ÆðÀ´Á˽âÏ Nacos µÄ¶¯Ì¬ÅäÖõÄÄÜÁ¦£¬¿´¿´ Nacos ÊÇÈçºÎÒÔ¼òµ¥¡¢ÓÅÑÅ¡¢¸ßЧµÄ·½Ê½¹ÜÀíÅäÖã¬ÊµÏÖÅäÖõĶ¯Ì¬±ä¸üµÄ¡£

ÎÒÃÇÓÃÒ»¸ö¼òµ¥µÄÀý×ÓÀ´Á˽âÏ Nacos µÄ¶¯Ì¬ÅäÖõŦÄÜ¡£

»·¾³×¼±¸

Ê×ÏÈÎÒÃÇҪ׼±¸Ò»¸ö Nacos µÄ·þÎñ¶Ë£¬ÏÖÔÚÓÐÁ½ÖÖ·½Ê½»ñÈ¡ Nacos µÄ·þÎñ¶Ë£º

1.ͨ¹ýÔ´Âë±àÒë

2.ÏÂÔØ Release °ü

Á½ÖÖ·½·¨¿ÉÒÔ»ñµÃ Nacos µÄ¿ÉÖ´ÐгÌÐò£¬ÏÂÃæÎÒÓõÚÒ»ÖÖ·½Ê½Í¨¹ýÔ´Âë±àÒëÒ»¸ö¿ÉÖ´ÐгÌÐò£¬¿ÉÄÜÓÐÈË»áÎÊΪɶ²»Ö±½ÓÏÂÔØ Release °ü£¬»¹Òª×Ô¼ºÈ¥±àÒëÄØ£¿Ê×ÏÈ Release °üÒ²ÊÇͨ¹ýÔ´Âë±àÒëµÃµ½µÄ£¬Æä´ÎÎÒÃÇͨ¹ý×Ô¼º±àÒë¿ÉÒÔÁ˽âһЩ¹ý³ÌÒ²ÓпÉÄÜ»áÅöµ½Ò»Ð©ÎÊÌ⣬ÕâЩ¶¼ÊǺÜÖØÒªµÄ¾­Ñ飬ºÃÁËÄÇÎÒÃÇÖ±½ÓÔ´Âë±àÒë°É¡£

Ê×ÏÈ fork Ò»·Ý nacos µÄ´úÂëµ½×Ô¼ºµÄ github ¿â£¬È»ºó°Ñ´úÂë clone µ½±¾µØ¡£

È»ºóÔÚÏîÄ¿µÄ¸ùĿ¼ÏÂÖ´ÐÐÒÔÏÂÃüÁ¼ÙÉèÎÒÃÇÒѾ­ÅäÖúÃÁË java ºÍ maven »·¾³£©£º

mvn -Prelease-nacos clean install -U

Ö´Ðгɹ¦Ö®ºóÄ㽫»á¿´µ½ÈçÏÂͼËùʾµÄ½á¹û£º

È»ºóÔÚÏîÄ¿µÄ distribution Ŀ¼ÏÂÎÒÃǾͿÉÒÔÕÒµ½¿ÉÖ´ÐгÌÐòÁË£¬°üÀ¨Á½¸öѹËõ°ü£¬ÕâÁ½¸öѹËõ°ü¾ÍÊÇnacos µÄ github ¹ÙÍøÉÏ·¢²¼µÄ Release °ü¡£

½ÓÏÂÀ´ÎÒÃǰѱàÒëºÃµÄÁ½¸öѹËõ°ü¿½±´³öÀ´£¬È»ºó½âѹ³öÀ´Ö±½ÓʹÓã¬ÕâÑù¾ÍÏ൱ÓÚÎÒÃÇÏÂÔØÁË Release °üÁË¡£½âѹºóÎļþ½á¹¹ºÍ nacos-server-0.8.0 Ò»Ñù£¬ÎÒÃÇÖ±½ÓÖ´ÐÐ startup.sh ¼´¿ÉÆô¶¯Ò»¸öµ¥»úµÄ Nacos ·þÎñ¶ËÁË¡£

Æô¶¯·þÎñ¶Ë

Ö´ÐÐÏÂÁÐÃüÁîÀ´Æô¶¯Ò»¸ö Nacos ·þÎñ¶Ë£º

sh startup.sh -m standalone

Æô¶¯ÍêÄ㽫»á¿´µ½ÈçÏÂͼËùʾµÄ½á¹û£º

Æô¶¯³É¹¦ºó£¬ÎÒÃǾͿÉÒÔ·ÃÎÊ Nacos µÄ¿ØÖÆÌ¨ÁË£¬ÈçÏÂͼËùʾ£º

¿ØÖÆÌ¨×öÁ˼òµ¥µÄȨÏÞ¿ØÖÆ£¬Ä¬ÈϵÄÕ˺źÍÃÜÂë¶¼ÊÇ nacos¡£

µÇ¼½øÈ¥Ö®ºó£¬ÊÇÕâÑùµÄ£º

н¨ÅäÖÃ

½ÓÏÂÀ´ÎÒÃÇÔÚ¿ØÖÆÌ¨ÉÏ´´½¨Ò»¸ö¼òµ¥µÄÅäÖÃÏÈçÏÂͼËùʾ£º

Æô¶¯¿Í»§¶Ë

µ±·þÎñ¶ËÒÔ¼°ÅäÖÃÏî¶¼×¼±¸ºÃÖ®ºó£¬¾Í¿ÉÒÔ´´½¨¿Í»§¶ËÁË£¬ÈçÏÂͼËùʾн¨Ò»¸ö Nacos µÄ ConfigService À´½ÓÊÕÊý¾Ý£º

Ö´Ðк󽫴òÓ¡ÈçÏÂÐÅÏ¢£º

ÕâÀïÎÒÓÃÁËÒ»¸ö System.in.read() ·½·¨À´¼àÌýÊäÈëµÄÐÅÏ¢£¬Ö÷ÒªÊÇΪÁË·ÀÖ¹Ö÷Ïß³ÌÍ˳ö£¬¿´²»µ½ºóÐøµÄ½á¹û¡£

ÐÞ¸ÄÅäÖÃÐÅÏ¢

½ÓÏÂÀ´ÎÒÃÇÔÚ Nacos µÄ¿ØÖÆÌ¨ÉϽ«ÎÒÃǵÄÅäÖÃÐÅÏ¢¸ÄΪÈçÏÂͼËùʾ£º

ÐÞ¸ÄÍêÅäÖ㬵ã»÷ ¡°·¢²¼¡± °´Å¥ºó£¬¿Í»§¶Ë½«»áÊÕµ½×îеÄÊý¾Ý£¬ÈçÏÂͼËùʾ£º

ÖÁ´ËÒ»¸ö¼òµ¥µÄ¶¯Ì¬ÅäÖùÜÀí¹¦ÄÜÒѾ­½²ÍêÁË£¬É¾³ýÅäÖú͸üÐÂÅäÖòÙ×÷ÀàËÆ£¬ÕâÀï²»ÔÙ׸Êö¡£

ÊÊÓó¡¾°

Á˽âÁ˶¯Ì¬ÅäÖùÜÀíµÄЧ¹ûÖ®ºó£¬ÎÒÃÇÖªµÀÁË´ó¸ÅµÄÔ­ÀíÁË£¬Nacos ·þÎñ¶Ë±£´æÁËÅäÖÃÐÅÏ¢£¬¿Í»§¶ËÁ¬½Óµ½·þÎñ¶ËÖ®ºó£¬¸ù¾Ý dataID£¬group¿ÉÒÔ»ñÈ¡µ½¾ßÌåµÄÅäÖÃÐÅÏ¢£¬µ±·þÎñ¶ËµÄÅäÖ÷¢Éú±ä¸üʱ£¬¿Í»§¶Ë»áÊÕµ½Í¨Öª¡£µ±¿Í»§¶ËÄõ½±ä¸üºóµÄ×îÐÂÅäÖÃÐÅÏ¢ºó£¬¾Í¿ÉÒÔ×ö×Ô¼ºµÄ´¦ÀíÁË£¬Õâ·Ç³£ÓÐÓã¬ËùÓÐÐèҪʹÓÃÅäÖõij¡¾°¶¼¿ÉÒÔͨ¹ý Nacos À´½øÐйÜÀí¡£

¿ÉÒÔ˵ Nacos ÓкܶàµÄÊÊÓó¡¾°£¬°üÀ¨µ«²»ÏÞÓÚÒÔÏÂÕâЩÇé¿ö£º

Êý¾Ý¿âÁ¬½ÓÐÅÏ¢

ÏÞÁ÷¹æÔòºÍ½µ¼¶¿ª¹Ø

Á÷Á¿µÄ¶¯Ì¬µ÷¶È

¿´¹ýÎÒµÄ Sentinel ϵÁÐÎÄÕµÄͬѧ¿ÉÄÜÖªµÀ£¬ÆäÖÐÓÐһƪרÃŽéÉܼ¯ÈºÏÞÁ÷»·¾³´î½¨µÄÎÄÕ£¬¾ÍÊÇͨ¹ý Nacos À´´´½¨¶¯Ì¬¹æÔòµÄ¡£

ÍÆ»¹ÊÇÀ­

ÏÖÔÚÎÒÃÇÁ˽âÁË Nacos µÄÅäÖùÜÀíµÄ¹¦ÄÜÁË£¬µ«ÊÇÓÐÒ»¸öÎÊÌâÎÒÃÇÐèҪŪÃ÷°×£¬ÄǾÍÊÇ Nacos ¿Í»§¶ËÊÇÔõôʵʱ»ñÈ¡µ½ Nacos ·þÎñ¶ËµÄ×îÐÂÊý¾ÝµÄ¡£

Æäʵ¿Í»§¶ËºÍ·þÎñ¶ËÖ®¼äµÄÊý¾Ý½»»¥£¬ÎÞÍâºõÁ½ÖÖÇé¿ö£º

·þÎñ¶ËÍÆÊý¾Ý¸ø¿Í»§¶Ë

¿Í»§¶Ë´Ó·þÎñ¶ËÀ­Êý¾Ý

Äǵ½µ×ÊÇÍÆ»¹ÊÇÀ­ÄØ£¬´Ó Nacos ¿Í»§¶Ëͨ¹ý Listener À´½ÓÊÕ×îÐÂÊý¾ÝµÄÕâ¸ö×ö·¨À´¿´£¬¸Ð¾õÏñÊÇ·þÎñ¶ËÍÆµÄÊý¾Ý£¬µ«ÊDz»ÄÜÏ뵱Ȼ£¬ÒªÏëÖªµÀ´ð°¸£¬×î¿ì×î׼ȷµÄ·½·¨¾ÍÊÇ´ÓÔ´ÂëÖÐȥѰÕÒ¡£

´´½¨ ConfigService

´ÓÎÒÃÇµÄ demo ÖпÉÒÔÖªµÀ£¬Ê×ÏÈÊÇ´´½¨ÁËÒ»¸ö ConfigService¡£¶ø ConfigService ÊÇͨ¹ý ConfigFactory Àà´´½¨µÄ£¬ÈçÏÂͼËùʾ£º

¿ÉÒÔ¿´µ½Êµ¼ÊÊÇͨ¹ý·´Éäµ÷ÓÃÁË NacosConfigService µÄ¹¹Ôì·½·¨À´´´½¨ ConfigService µÄ£¬¶øÇÒÊÇÓÐÒ»¸ö Properties ²ÎÊýµÄ¹¹Ôì·½·¨¡£

ÐèҪעÒâµÄÊÇ£¬ÕâÀﲢûÓÐͨ¹ýµ¥Àý»òÕß»º´æ¼¼Êõ£¬Ò²¾ÍÊÇ˵ÿ´Îµ÷Óö¼»áÖØÐ´´½¨Ò»¸ö ConfigServiceµÄʵÀý¡£

ʵÀý»¯ ConfigService

ÏÖÔÚÎÒÃÇÀ´¿´Ï NacosConfigService µÄ¹¹Ôì·½·¨£¬¿´¿´ ConfigService ÊÇÔõôʵÀý»¯µÄ£¬ÈçÏÂͼËùʾ£º

ʵÀý»¯Ê±Ö÷ÒªÊdzõʼ»¯ÁËÁ½¸ö¶ÔÏó£¬ËûÃÇ·Ö±ðÊÇ£º

HttpAgent

ClientWorker

HttpAgent

ÆäÖÐ agent ÊÇͨ¹ý×°ÊÎ×ÅģʽʵÏֵģ¬ServerHttpAgent ÊÇʵ¼Ê¹¤×÷µÄÀ࣬MetricsHttpAgent ÔÚÄÚ²¿Ò²Êǵ÷ÓÃÁË ServerHttpAgent µÄ·½·¨£¬ÁíÍâ¼ÓÉÏÁËһЩͳ¼Æ²Ù×÷£¬ËùÒÔÎÒÃÇÖ»ÐèÒª¹ØÐÄ ServerHttpAgent µÄ¹¦ÄܾͿÉÒÔÁË¡£

agent ʵ¼ÊÊÇÔÚ ClientWorker Öз¢»ÓÄÜÁ¦µÄ£¬ÏÂÃæÎÒÃÇÀ´¿´Ï ClientWorker Àà¡£

ClientWorker

ÒÔÏÂÊÇ ClientWorker µÄ¹¹Ôì·½·¨£¬ÈçÏÂͼËùʾ£º

¿ÉÒÔ¿´µ½ ClientWorker ³ýÁ˽« HttpAgent ά³ÖÔÚ×Ô¼ºÄÚ²¿£¬»¹´´½¨ÁËÁ½¸öÏ̳߳أº

µÚÒ»¸öÏ̳߳ØÊÇÖ»ÓµÓÐÒ»¸öÏß³ÌÓÃÀ´Ö´Ðж¨Ê±ÈÎÎñµÄ executor£¬executor ÿ¸ô 10ms ¾Í»áÖ´ÐÐÒ»´Î checkConfigInfo() ·½·¨£¬´Ó·½·¨ÃûÉÏ¿ÉÒÔÖªµÀÊÇÿ 10 ms ¼ì²éÒ»´ÎÅäÖÃÐÅÏ¢¡£

µÚ¶þ¸öÏ̳߳ØÊÇÒ»¸öÆÕͨµÄÏ̳߳أ¬´Ó ThreadFactory µÄÃû³Æ¿ÉÒÔ¿´µ½Õâ¸öÏ̳߳ØÊÇ×ö³¤ÂÖѯµÄ¡£

ÏÖÔÚÈÃÎÒÃÇÀ´¿´Ï executor ÿ 10ms Ö´Ðеķ½·¨µ½µ×ÊǸÉʲôµÄ£¬ÈçÏÂͼËùʾ£º

¿ÉÒÔ¿´µ½£¬checkConfigInfo ·½·¨ÊÇÈ¡³öÁËÒ»ÅúÈÎÎñ£¬È»ºóÌá½»¸ø executorService Ï̳߳ØÈ¥Ö´ÐУ¬Ö´ÐеÄÈÎÎñ¾ÍÊÇ LongPollingRunnable£¬Ã¿¸öÈÎÎñ¶¼ÓÐÒ»¸ö taskId¡£

ÏÖÔÚÎÒÃÇÀ´¿´¿´ LongPollingRunnable ×öÁËʲô£¬Ö÷Òª·ÖΪÁ½²¿·Ö£¬µÚÒ»²¿·ÖÊǼì²é±¾µØµÄÅäÖÃÐÅÏ¢£¬µÚ¶þ²¿·ÖÊÇ»ñÈ¡·þÎñ¶ËµÄÅäÖÃÐÅϢȻºó¸üе½±¾µØ¡£

1.±¾µØ¼ì²é

Ê×ÏÈÈ¡³öÓë¸Ã taskId Ïà¹ØµÄ CacheData£¬È»ºó¶Ô CacheData ½øÐмì²é£¬°üÀ¨±¾µØÅäÖüì²éºÍ¼àÌýÆ÷µÄ md5 ¼ì²é£¬±¾µØ¼ì²éÖ÷ÒªÊÇ×öÒ»¸ö¹ÊÕÏÈÝ´í£¬µ±·þÎñ¶Ë¹Òµôºó£¬Nacos ¿Í»§¶Ë¿ÉÒÔ´Ó±¾µØµÄÎļþϵͳÖлñÈ¡Ïà¹ØµÄÅäÖÃÐÅÏ¢£¬ÈçÏÂͼËùʾ£º

ͨ¹ý¸ú×Ù checkLocalConfig ·½·¨£¬¿ÉÒÔ¿´µ½ Nacos ½«ÅäÖÃÐÅÏ¢±£´æÔÚÁË

~/nacos/config/fixed-{address}_8848_nacos/snapshot/DEFAULT_GROUP/{dataId}

Õâ¸öÎļþÖУ¬ÎÒÃÇ¿´ÏÂÕâ¸öÎļþÖб£´æµÄÄÚÈÝ£¬ÈçÏÂͼËùʾ£º

2.·þÎñ¶Ë¼ì²é

È»ºóͨ¹ý checkUpdateDataIds() ·½·¨´Ó·þÎñ¶Ë»ñÈ¡ÄÇЩֵ·¢ÉúÁ˱仯µÄ dataId ÁÐ±í£¬

ͨ¹ý getServerConfig ·½·¨£¬¸ù¾Ý dataId µ½·þÎñ¶Ë»ñÈ¡×îеÄÅäÖÃÐÅÏ¢£¬½Ó׎«×îеÄÅäÖÃÐÅÏ¢±£´æµ½ CacheData ÖС£

×îºóµ÷Óà CacheData µÄ checkListenerMd5 ·½·¨£¬¿ÉÒÔ¿´µ½¸Ã·½·¨ÔÚµÚÒ»²¿·ÖÒ²±»µ÷Óùý£¬ÎÒÃÇÐèÒªÖØµã¹Ø×¢Ò»Ï¡£

¿ÉÒÔ¿´µ½£¬ÔÚ¸ÃÈÎÎñµÄ×îºó£¬Ò²¾ÍÊÇÔÚ finally ÖÐÓÖÖØÐÂͨ¹ý executorService Ìá½»Á˱¾ÈÎÎñ¡£

Ìí¼Ó Listener

ºÃÁËÏÖÔÚÎÒÃÇ¿ÉÒÔΪ ConfigService À´Ìí¼ÓÒ»¸ö Listener ÁË£¬×îÖÕÊǵ÷ÓÃÁË ClientWorker µÄ addTenantListeners ·½·¨£¬ÈçÏÂͼËùʾ£º

¸Ã·½·¨·ÖΪÁ½¸ö²¿·Ö£¬Ê×Ïȸù¾Ý dataId£¬group ºÍµ±Ç°µÄ³¡¾°»ñȡһ¸ö CacheData ¶ÔÏó£¬È»ºó½«µ±Ç°ÒªÌí¼ÓµÄ listener ¶ÔÏóÌí¼Óµ½ CacheData ÖÐÈ¥¡£

Ò²¾ÍÊÇ˵ listener ×îÖÕÊDZ»ÕâÀïµÄ CacheData Ëù³ÖÓÐÁË£¬ÄÇ listener µÄ»Øµ÷·½·¨ receiveConfigInfo ¾ÍÓ¦¸ÃÊÇÔÚ CacheData Öд¥·¢µÄ¡£

ÎÒÃÇ·¢ÏÖ CacheData ÊdzöÏÖÆµÂʷdz£¸ßµÄÒ»¸öÀ࣬ÔÚ LongPollingRunnable µÄÈÎÎñÖУ¬¼¸ºõËùÓеķ½·¨¶¼Î§ÈÆ×Å CacheData À࣬ÏÖÔÚÌí¼Ó Listener µÄʱºò£¬Êµ¼ÊÉϸà Listener Ò²±»Î¯ÍиøÁË CacheData£¬ÄÇÎÒÃÇÒªÖØµã¹Ø×¢Ï CacheData ÀàÁË¡£

CacheData

Ê×ÏÈÈÃÎÒÃÇÀ´¿´Ò»Ï CacheData ÖеijÉÔ±±äÁ¿£¬ÈçÏÂͼËùʾ£º

¿ÉÒÔ¿´µ½³ýÁË dataId£¬group£¬content£¬taskId ÕâЩ¸úÅäÖÃÏà¹ØµÄÊôÐÔ£¬»¹ÓÐÁ½¸ö±È½ÏÖØÒªµÄÊôÐÔ£ºlisteners¡¢md5¡£

listeners ÊǸà CacheData Ëù¹ØÁªµÄËùÓÐ listener£¬²»¹ý²»ÊDZ£´æµÄԭʼµÄ Listener ¶ÔÏ󣬶øÊǰü×°ºóµÄ ManagerListenerWrap ¶ÔÏ󣬸öÔÏó³ýÁ˳ÖÓÐ Listener ¶ÔÏ󣬻¹³ÖÓÐÁËÒ»¸ö lastCallMd5 ÊôÐÔ¡£

ÁíÍâÒ»¸öÊôÐÔ md5 ¾ÍÊǸù¾Ýµ±Ç°¶ÔÏóµÄ content ¼ÆËã³öÀ´µÄ md5 Öµ¡£

´¥·¢»Øµ÷

ÏÖÔÚÎÒÃÇ¶Ô ConfigService ÓÐÁË´óÖµÄÁ˽âÁË£¬ÏÖÔÚÊ£ÏÂ×îºóÒ»¸öÖØÒªµÄÎÊÌ⻹ûÓд𰸣¬ÄǾÍÊÇ ConfigService µÄ Listener ÊÇÔÚʲôʱºò´¥·¢»Øµ÷·½·¨ receiveConfigInfo µÄ¡£

ÏÖÔÚÈÃÎÒÃǻعýÍ·À´Ïëһϣ¬ÔÚ ClientWorker ÖеĶ¨Ê±ÈÎÎñÖУ¬Æô¶¯ÁËÒ»¸ö³¤ÂÖѯµÄÈÎÎñ£ºLongPollingRunnable£¬¸ÃÈÎÎñ¶à´ÎÖ´ÐÐÁË cacheData.checkListenerMd5() ·½·¨£¬ÄÇÏÖÔÚ¾ÍÈÃÎÒÃÇÀ´¿´ÏÂÕâ¸ö·½·¨µ½µ××öÁËЩʲô£¬ÈçÏÂͼËùʾ£º

µ½ÕâÀïÓ¦¸Ã¾Í±È½ÏÇåÎúÁË£¬¸Ã·½·¨»á¼ì²é CacheData µ±Ç°µÄ md5 Óë CacheData ³ÖÓеÄËùÓÐ Listener Öб£´æµÄ md5 µÄÖµÊÇ·ñÒ»Ö£¬Èç¹û²»Ò»Ö£¬¾ÍÖ´ÐÐÒ»¸ö°²È«µÄ¼àÌýÆ÷µÄ֪ͨ·½·¨£ºsafeNotifyListener£¬Í¨ÖªÊ²Ã´ÄØ£¿ÎÒÃÇ¿ÉÒԴ󵨵IJÂһϣ¬Ó¦¸ÃÊÇ֪ͨ Listener µÄʹÓÃÕߣ¬¸Ã Listener Ëù¹Ø×¢µÄÅäÖÃÐÅÏ¢ÒѾ­·¢Éú¸Ä±äÁË¡£ÏÖÔÚÈÃÎÒÃÇÀ´¿´Ò»Ï safeNotifyListener ·½·¨£¬ÈçÏÂͼËùʾ£º

¿ÉÒÔ¿´µ½ÔÚ safeNotifyListener ·½·¨ÖУ¬ÖØµã¹Ø×¢Ïºì¿òÖеÄÈýÐдúÂ룺»ñÈ¡×îеÄÅäÖÃÐÅÏ¢£¬µ÷Óà Listener µÄ»Øµ÷·½·¨£¬½«×îеÄÅäÖÃÐÅÏ¢×÷Ϊ²ÎÊý´«È룬ÕâÑù Listener µÄʹÓÃÕß¾ÍÄܽÓÊÕµ½±ä¸üºóµÄÅäÖÃÐÅÏ¢ÁË£¬×îºó¸üРListenerWrap µÄ md5 Öµ¡£ºÍÎÒÃDz²âµÄÒ»Ñù£¬ Listener µÄ»Øµ÷·½·¨¾ÍÊÇÔڸ÷½·¨Öд¥·¢µÄ¡£

Md5ºÎʱ±ä¸ü

ÄÇ CacheData µÄ md5 ÖµÊǺÎʱ·¢Éú¸Ä±äµÄÄØ£¿ÎÒÃÇ¿ÉÒÔ»ØÏëһϣ¬ÔÚÉÏÃæµÄ LongPollingRunnable ËùÖ´ÐеÄÈÎÎñÖУ¬ÔÚ»ñÈ¡·þÎñ¶Ë·¢Éú±ä¸üµÄÅäÖÃÐÅϢʱ£¬½«×îÐ嵀 content Êý¾ÝдÈëÁË CacheData ÖУ¬ÎÒÃÇ¿ÉÒÔ¿´Ï¸÷½·¨ÈçÏ£º

¿ÉÒÔ¿´µ½ÊÇÔÚ³¤ÂÖѯµÄÈÎÎñÖУ¬µ±·þÎñ¶ËÅäÖÃÐÅÏ¢·¢Éú±ä¸üʱ£¬¿Í»§¶Ë½«×îеÄÊý¾Ý»ñÈ¡ÏÂÀ´Ö®ºó£¬±£´æÔÚÁË CacheData ÖУ¬Í¬Ê±¸üÐÂÁ˸à CacheData µÄ md5 Öµ£¬ËùÒÔµ±Ï´ÎÖ´ÐÐ checkListenerMd5 ·½·¨Ê±£¬¾Í»á·¢ÏÖµ±Ç° listener Ëù³ÖÓÐµÄ md5 ÖµÒѾ­ºÍ CacheData µÄ md5 Öµ²»Ò»ÑùÁË£¬Ò²¾ÍÒâζ×Å·þÎñ¶ËµÄÅäÖÃÐÅÏ¢·¢Éú¸Ä±äÁË£¬Õâʱ¾ÍÐèÒª½«×îеÄÊý¾Ý֪ͨ¸ø Listener µÄ³ÖÓÐÕß¡£

ÖÁ´ËÅäÖÃÖÐÐĵÄÍêÕûÁ÷³ÌÒѾ­·ÖÎöÍê±ÏÁË£¬¿ÉÒÔ·¢ÏÖ£¬Nacos ²¢²»ÊÇͨ¹ýÍÆµÄ·½Ê½½«·þÎñ¶Ë×îеÄÅäÖÃÐÅÏ¢·¢Ë͸ø¿Í»§¶ËµÄ£¬¶øÊǿͻ§¶Ëά»¤ÁËÒ»¸ö³¤ÂÖѯµÄÈÎÎñ£¬¶¨Ê±È¥À­È¡·¢Éú±ä¸üµÄÅäÖÃÐÅÏ¢£¬È»ºó½«×îеÄÊý¾ÝÍÆË͸ø Listener µÄ³ÖÓÐÕß¡£

À­µÄÓÅÊÆ

¿Í»§¶ËÀ­È¡·þÎñ¶ËµÄÊý¾ÝÓë·þÎñ¶ËÍÆËÍÊý¾Ý¸ø¿Í»§¶ËÏà±È£¬ÓÅÊÆÔÚÄÄÄØ£¬ÎªÊ²Ã´ Nacos ²»Éè¼Æ³ÉÖ÷¶¯ÍÆËÍÊý¾Ý£¬¶øÊÇÒª¿Í»§¶ËÈ¥À­È¡ÄØ£¿Èç¹ûÓÃÍÆµÄ·½Ê½£¬·þÎñ¶ËÐèҪά³ÖÓë¿Í»§¶ËµÄ³¤Á¬½Ó£¬ÕâÑùµÄ»°ÐèÒªºÄ·Ñ´óÁ¿µÄ×ÊÔ´£¬²¢ÇÒ»¹ÐèÒª¿¼ÂÇÁ¬½ÓµÄÓÐЧÐÔ£¬ÀýÈçÐèҪͨ¹ýÐÄÌøÀ´Î¬³ÖÁ½ÕßÖ®¼äµÄÁ¬½Ó¡£¶øÓÃÀ­µÄ·½Ê½£¬¿Í»§¶ËÖ»ÐèҪͨ¹ýÒ»¸öÎÞ״̬µÄ http ÇëÇó¼´¿É»ñÈ¡µ½·þÎñ¶ËµÄÊý¾Ý¡£

×ܽá

Nacos ·þÎñ¶Ë´´½¨ÁËÏà¹ØµÄÅäÖÃÏîºó£¬¿Í»§¶Ë¾Í¿ÉÒÔ½øÐмàÌýÁË¡£

¿Í»§¶ËÊÇͨ¹ýÒ»¸ö¶¨Ê±ÈÎÎñÀ´¼ì²é×Ô¼º¼àÌýµÄÅäÖÃÏîµÄÊý¾ÝµÄ£¬Ò»µ©·þÎñ¶ËµÄÊý¾Ý·¢Éú±ä»¯Ê±£¬¿Í»§¶Ë½«»á»ñÈ¡µ½×îеÄÊý¾Ý£¬²¢½«×îеÄÊý¾Ý±£´æÔÚÒ»¸ö CacheData ¶ÔÏóÖУ¬È»ºó»áÖØÐ¼ÆËã CacheData µÄ md5 ÊôÐÔµÄÖµ£¬´Ëʱ¾Í»á¶Ô¸Ã CacheData Ëù°ó¶¨µÄ Listener ´¥·¢ receiveConfigInfo »Øµ÷¡£

¿¼Âǵ½·þÎñ¶Ë¹ÊÕϵÄÎÊÌ⣬¿Í»§¶Ë½«×îÐÂÊý¾Ý»ñÈ¡ºó»á±£´æÔÚ±¾µØµÄ snapshot ÎļþÖУ¬ÒÔºó»áÓÅÏÈ´ÓÎļþÖлñÈ¡ÅäÖÃÐÅÏ¢µÄÖµ

 

 
   
2028 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨ϵÄÊý¾ÝÖÎÀí
ÈçºÎÉè¼ÆÊµÊ±Êý¾Ýƽ̨£¨¼¼Êõƪ£©
´óÊý¾Ý×ʲú¹ÜÀí×ÜÌå¿ò¼Ü¸ÅÊö
Kafka¼Ü¹¹ºÍÔ­Àí
ELK¶àÖּܹ¹¼°ÓÅÁÓ
×îпγÌ
´óÊý¾Ýƽ̨´î½¨Óë¸ßÐÔÄܼÆËã
´óÊý¾Ýƽ̨¼Ü¹¹ÓëÓ¦ÓÃʵս
´óÊý¾ÝϵͳÔËά
´óÊý¾Ý·ÖÎöÓë¹ÜÀí
Python¼°Êý¾Ý·ÖÎö
³É¹¦°¸Àý
ijͨÐÅÉ豸ÆóÒµ PythonÊý¾Ý·ÖÎöÓëÍÚ¾ò
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© Python¼°Êý¾Ý·ÖÎö
ÉñÁúÆû³µ ´óÊý¾Ý¼¼Êõƽ̨-Hadoop
ÖйúµçÐÅ ´óÊý¾Ýʱ´úÓëÏÖ´úÆóÒµµÄÊý¾Ý»¯ÔËӪʵ¼ù