±à¼ÍƼö: |
±¾ÎÄ×÷ÕßÖ÷Òª½éÉÜÁË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 ÎļþÖУ¬ÒÔºó»áÓÅÏÈ´ÓÎļþÖлñÈ¡ÅäÖÃÐÅÏ¢µÄÖµ
|