Spring Cloud常è§é¢è¯é¢æ»ç»
Spring Cloudæ ¸å¿ç¥è¯æ»ç»
è¿æ¯ä¸åæè®¸å¯¹ä½ æå¸®å©çä¿¡æ¯
- é¢è¯æåï¼è¿æ¯ä¸ä»½å¤§å½¬ç²¾å¿æ´çç大åé¢è¯æåææ°çï¼ç®åå·²ç»æ´æ°è¿ä»£äº19ä¸ªçæ¬ï¼è´¨éå¾é«ï¼ä¸ä¸ºé¢è¯æé ï¼
- ç¥è¯æçï¼ä¸å±é¢è¯æå/ä¸å¯¹ä¸äº¤æµ/ç®åä¿®æ¹/è¶ æ£çå¦ä¹ æ°å´/å¦ä¹ 路线è§åï¼æ¬¢è¿å å ¥å¤§å½¬çç¥è¯æçï¼ç¹å»é¾æ¥æ¥çæçç详ç»ä»ç»ï¼
æ´æ°è®°å½
- 2024.5.15ï¼å®å[SpringãSpringMVCãSpringbootã Springcloud çåºå«æ¯ä»ä¹ï¼](##SpringãSpringMVCãSpringbootã Springcloud çåºå«æ¯ä»ä¹ï¼)
1ãä»ä¹æ¯Spring Cloud ï¼
Spring cloud æµåºç¨ç¨åºå¯å¨å¨æ¯åºäº Spring Boot ç Spring éæåºç¨ç¨åºï¼æä¾ä¸å¤é¨ç³»ç»çéæãSpring cloud Taskï¼ä¸ä¸ªçå½å¨æçæçå¾®æå¡æ¡æ¶ï¼ç¨äºå¿«éæå»ºæ§è¡æéæ°æ®å¤ççåºç¨ç¨åºã

Spring cloud æµåºç¨ç¨åºå¯å¨å¨æ¯åºäº Spring Boot ç Spring éæåºç¨ç¨åºï¼æä¾ä¸å¤é¨ç³»ç»çéæãSpring cloud Taskï¼ä¸ä¸ªçå½å¨æçæçå¾®æå¡æ¡æ¶ï¼ç¨äºå¿«éæå»ºæ§è¡æéæ°æ®å¤ççåºç¨ç¨åºã
SpringãSpringMVCãSpringbootã Springcloud çåºå«æ¯ä»ä¹ï¼
Spring
Springæ¯ä¸ä¸ªçæä½ç³»ï¼ä¹å¯ä»¥è¯´æ¯ææ¯ä½ç³»ï¼ï¼æ¯é大æè ï¼å®å å«äºSpring FrameworkãSpring BootãSpring Cloudçã宿¯ä¸ä¸ªè½»é级æ§å¶å转(IOC)åé¢ååé¢(AOP)ç容卿¡æ¶ï¼ä¸ºå¼åè æä¾äºä¸ä¸ªç®æçå¼åæ¹å¼ã
Springçæ ¸å¿ç¹æ§ææ³ä¹ä¸IOCï¼å®å®ç°äºå®¹å¨å¯¹Bean对象ç管çãéä½ç»ä»¶è¦åï¼ä½¿å屿å¡è§£è¦ã
Springçå¦ä¸ä¸ªæ ¸å¿ç¹æ§å°±æ¯AOPï¼é¢ååé¢ç¼ç¨ãé¢ååé¢ç¼ç¨éè¦å°ç¨åºé»è¾å解为称为æè°å ³æ³¨ç¹çä¸åé¨åãè·¨è¶åºç¨ç¨åºå¤ä¸ªç¹çåè½ç§°ä¸ºè·¨é¢åé®é¢ï¼è¿äºè·¨é¢åé®é¢å¨æ¦å¿µä¸ä¸åºç¨ç¨åºçä¸å¡é»è¾å离ãæè®¸å¤å¸¸è§çä¾åï¼å¦æ¥å¿è®°å½ï¼å£°æå¼äºå¡ï¼å®å ¨æ§ï¼ç¼åçã
å¦æè¯´IOCä¾èµæ³¨å ¥å¯ä»¥å¸®å©æä»¬å°åºç¨ç¨åºå¯¹è±¡ç¸äºå离ï¼é£ä¹AOPå¯ä»¥å¸®å©æä»¬å°äº¤åé®é¢ä¸å®ä»¬æå½±åç对象å离ãäºè ç®ç齿¯ä½¿æå¡è§£è¦ï¼ä½¿å¼åç®æã
å½ç¶ï¼é¤äºSpring çä¸¤å¤§æ ¸å¿åè½ï¼è¿æå¦ä¸è¿äºï¼å¦ï¼
- Spring JDBC
- Spring MVC
- Spring ORM
- Spring Test
SpringMVC
Springä¸MVCå¯ä»¥æ´å¥½å°è§£éä»ä¹æ¯SpringMVCï¼MVC为ç°ä»£web项ç®å¼åçä¸ç§å¾å¸¸è§ç模å¼ï¼ç®è¨ä¹Cï¼æ§å¶å¨ï¼å°Vï¼è§å¾ãç¨æ·å®¢æ·ç«¯ï¼ä¸Mï¼æ¨¡åï¼ä¸å¡ï¼å弿æäºMVC ï¼ä¸å 常è§çMVC模å¼çå¼åæ¡æ¶æStrutsã
Spring MVCæ¯Springçä¸é¨åï¼ä¸»è¦ç¨äºå¼åWEBåºç¨åç½ç»æ¥å£ï¼å®æ¯Springçä¸ä¸ªæ¨¡åï¼éè¿DispatcherServlet, ModelAndView åView Resolverï¼è®©åºç¨å¼ååå¾å¾å®¹æã
SpringBoot
SpringBootæ¯ä¸å¥æ´åäºæ¡æ¶çæ¡æ¶ã
å®çåè¡·ï¼è§£å³Springæ¡æ¶é ç½®æä»¶çç¹çãæå»ºæå¡ç夿æ§ã
å®ç设计ç念ï¼çº¦å®ä¼äºé ç½®ï¼convention over configurationï¼ã
åºäºæ¤ç念å®ç°äºèªå¨é ç½®ï¼ä¸éä½é¡¹ç®æå»ºçå¤æåº¦ã
æå»ºä¸ä¸ªæ¥å£æå¡ï¼éè¿SpringBootå è¡ä»£ç å³å¯å®ç°ãåºäºSpring Bootï¼ä¸æ¯è¯´åæ¥çé 置没æäºï¼èæ¯Spring Bootæä¸å¥é»è®¤é ç½®ï¼æä»¬å¯ä»¥æå®ç忝è¾éç¨ç约å®ï¼èSpring Bootéµå¾ªçæ¯çº¦å®ä¼äºé ç½®ååï¼åæ¶ï¼å¦æä½ éè¦ä½¿ç¨å°Spring以徿ä¾çåç§å¤æä½åè½å¼ºå¤§çé ç½®åè½ï¼Spring Boot䏿 ·æ¯æã
å¨Spring Bootä¸ï¼ä½ ä¼åç°å¼å ¥çææå 齿¯starterå½¢å¼ï¼å¦ï¼
- spring-boot-starter-web-servicesï¼é对SOAP Web Services
- spring-boot-starter-webï¼é对Webåºç¨ä¸ç½ç»æ¥å£
- spring-boot-starter-jdbcï¼é对JDBC
- spring-boot-starter-cacheï¼é对ç¼åæ¯æ
Spring Bootæ¯åºäº Spring æ¡æ¶å¼åçç¨äºå¼å Web åºç¨ç¨åºçæ¡æ¶ï¼å®å¸®å©å¼å人åå¿«éæå»ºåé ç½®ä¸ä¸ªç¬ç«çã坿§è¡çãåºäº Spring çåºç¨ç¨åºï¼ä»èåå°äºç¹çåéå¤çé 置工ä½ã
Spring Cloud
Spring Cloudäºå®ä¸æ¯ä¸æ´å¥åºäºSpring Bootçå¾®æå¡è§£å³æ¹æ¡ãå®ä¸ºå¼åè æä¾äºå¾å¤å·¥å ·ï¼ç¨äºå¿«éæå»ºåå¸å¼ç³»ç»çä¸äºéç¨æ¨¡å¼ï¼ä¾å¦ï¼é 置管çãæ³¨åä¸å¿ãæå¡åç°ãéæµãç½å ³ãé¾è·¯è¿½è¸ªçãSpring Bootæ¯build anythingï¼èSpring Cloudæ¯coordinate anythingï¼Spring Cloudçæ¯ä¸ä¸ªå¾®æå¡è§£å³æ¹æ¡é½æ¯åºäºSpring Bootæå»ºçã
2ãä»ä¹æ¯å¾®æå¡ï¼
å¾®æå¡æ¶ææ¯ä¸ç§æ¶ææ¨¡å¼æè 说æ¯ä¸ç§æ¶æé£æ ¼ï¼å®æå¡å°åä¸åºç¨ç¨åºåå为ä¸ç»å°çæå¡ï¼æ¯ä¸ªæå¡è¿è¡å¨å ¶ç¬ç«çèªå·±çè¿ç¨ä¸ï¼æå¡ä¹é´ç¸äºåè°ãäºç¸é åï¼ä¸ºç¨æ·æä¾æç»ä»·å¼ãæå¡ä¹é´éç¨è½»é级çéä¿¡æºå¶äºç¸æ²éï¼é常æ¯åºäºHTTPçRESTful APIï¼,æ¯ä¸ªæå¡é½å´ç»çå ·ä½çä¸å¡è¿è¡æå»ºï¼å¹¶ä¸è½å¤è¢«ç¬ç«çæå»ºå¨ç产ç¯å¢ãç±»ç产ç¯å¢çãå¦å¤ï¼åºé¿å ç»ä¸çãéä¸å¼çæå¡ç®¡çæºå¶ï¼å¯¹å ·ä½çä¸ä¸ªæå¡èè¨ï¼åºæ ¹æ®ä¸å¡ä¸ä¸æï¼éæ©åéçè¯è¨ãå·¥å ·å¯¹å ¶è¿è¡æå»ºï¼å¯ä»¥æä¸ä¸ªé常轻é级çéä¸å¼ç®¡çæ¥åè°è¿äºæå¡ï¼å¯ä»¥ä½¿ç¨ä¸åçè¯è¨æ¥ç¼åæå¡ï¼ä¹å¯ä»¥ä½¿ç¨ä¸åçæ°æ®åå¨ã
éä¿å°æ¥è®²ï¼
å¾®æå¡å°±æ¯ä¸ä¸ªç¬ç«çèè´£åä¸çæå¡åºç¨ç¨åºãå¨ intellij idea å·¥å ·éé¢å°±æ¯ç¨mavenå¼åçä¸ä¸ªä¸ªç¬ç«çmoduleï¼å ·ä½å°±æ¯ä½¿ç¨springboot å¼åçä¸ä¸ªå°ç模åï¼å¤çåä¸ä¸ä¸çä¸å¡é»è¾ï¼ä¸ä¸ªæ¨¡ååªåä¸ä¸ªäºæ ã
å¾®æå¡å¼ºè°çæ¯æå¡å¤§å°ï¼å ³æ³¨çæ¯æä¸ä¸ªç¹ï¼å ·ä½è§£å³æä¸ä¸ªé®é¢/è½å°å¯¹åºçä¸ä¸ªæå¡åºç¨ï¼å¯ä»¥ç忝idea éé¢ä¸ä¸ª moduleã
3ãSpring Cloudæä»ä¹ä¼å¿
ä½¿ç¨ Spring Boot å¼ååå¸å¼å¾®æå¡æ¶ï¼æä»¬é¢ä¸´ä»¥ä¸é®é¢
- ä¸åå¸å¼ç³»ç»ç¸å ³ç夿æ§-è¿ç§å¼éå æ¬ç½ç»é®é¢ï¼å»¶è¿å¼éï¼å¸¦å®½é®é¢ï¼å®å ¨é®é¢ã
- æå¡åç°-æå¡åç°å·¥å ·ç®¡ç群éä¸çæµç¨åæå¡å¦ä½æ¥æ¾åäºç¸äº¤è°ã宿¶åä¸ä¸ªæå¡ç®å½ï¼å¨è¯¥ç®å½ä¸æ³¨åæå¡ï¼ç¶åè½å¤æ¥æ¾å¹¶è¿æ¥å°è¯¥ç®å½ä¸çæå¡ã
- åä½-åå¸å¼ç³»ç»ä¸çåä½é®é¢ã
- è´è½½å¹³è¡¡ --è´è½½å¹³è¡¡æ¹åè·¨å¤ä¸ªè®¡ç®èµæºçå·¥ä½è´è·ï¼è¯¸å¦è®¡ç®æºï¼è®¡ç®æºé群ï¼ç½ç»é¾è·¯ï¼ä¸å¤®å¤çåå ï¼æç£ç驱å¨å¨çåå¸ã
- æ§è½-é®é¢ ç±äºåç§è¿è¥å¼é导è´çæ§è½é®é¢ã
- é¨ç½²å¤ææ§-Devops æè½çè¦æ±ã
4ãå¾®æå¡ä¹é´å¦ä½ç¬ç«é讯ç?
忥éä¿¡ï¼dobboéè¿ RPC è¿ç¨è¿ç¨è°ç¨ãspringcloudéè¿ REST æ¥å£jsonè°ç¨çã
弿¥ï¼æ¶æ¯éåï¼å¦ï¼RabbitMqãActiveMãKafkaçæ¶æ¯éåã
5ã ä»ä¹æ¯æå¡çæï¼ä»ä¹æ¯æå¡é级ï¼
çææºå¶æ¯åºå¯¹éªå´©æåºçä¸ç§å¾®æå¡é¾è·¯ä¿æ¤æºå¶ãå½æä¸ªå¾®æå¡ä¸å¯ç¨æè ååºæ¶é´å¤ªé¿æ¶ï¼ä¼è¿è¡æå¡é级ï¼è¿èçæè¯¥èç¹å¾®æå¡çè°ç¨ï¼å¿«éè¿åâé误âçååºä¿¡æ¯ã彿£æµå°è¯¥èç¹å¾®æå¡è°ç¨ååºæ£å¸¸åæ¢å¤è°ç¨é¾è·¯ãå¨Spring Cloudæ¡æ¶éçææºå¶éè¿Hystrixå®ç°ï¼Hystrixä¼çæ§å¾®æå¡é´è°ç¨çç¶åµï¼å½å¤±è´¥çè°ç¨å°ä¸å®éå¼ï¼ç¼ºçæ¯5ç§å è°ç¨20次ï¼å¦æå¤±è´¥ï¼å°±ä¼å¯å¨çææºå¶ã
æå¡é级ï¼ä¸è¬æ¯ä»æ´ä½è´è·èèãå°±æ¯å½æä¸ªæå¡çæä¹åï¼æå¡å¨å°ä¸å被è°ç¨ï¼æ¤æ¶å®¢æ·ç«¯å¯ä»¥èªå·±åå¤ä¸ä¸ªæ¬å°çfallbackåè°ï¼è¿åä¸ä¸ªç¼ºçå¼ãè¿æ ·åï¼è½ç¶æ°´å¹³ä¸éï¼ä½å¥½æ¹å¯ç¨ï¼æ¯ç´æ¥ææå¼ºã
Hystrixç¸å
³æ³¨è§£@EnableHystrixï¼å¼å¯çæ @HystrixCommand(fallbackMethod=âXXXâ)ï¼å£°æä¸ä¸ªå¤±è´¥åæ»å¤ç彿°XXXï¼å½è¢«æ³¨è§£çæ¹æ³æ§è¡è¶
æ¶ï¼é»è®¤æ¯1000毫ç§ï¼ï¼å°±ä¼æ§è¡fallback彿°ï¼è¿åé误æç¤ºã
6ã 请说说Eurekaåzookeeper çåºå«ï¼
Zookeeperä¿è¯äºCPï¼Eurekaä¿è¯äºAPã
Aï¼é«å¯ç¨
Cï¼ä¸è´æ§
Pï¼ååºå®¹éæ§
1.å½å注åä¸å¿æ¥è¯¢æå¡å表æ¶ï¼æä»¬å¯ä»¥å®¹å¿æ³¨åä¸å¿è¿åçæ¯å åé以åçä¿¡æ¯ï¼ä½ä¸è½å®¹å¿ç´æ¥downæä¸å¯ç¨ãä¹å°±æ¯è¯´ï¼æå¡æ³¨ååè½å¯¹é«å¯ç¨æ§è¦æ±æ¯è¾é«ï¼ä½zkä¼åºç°è¿æ ·ä¸ç§æ åµï¼å½masterèç¹å 为ç½ç»æ éä¸å ¶ä»èç¹å¤±å»èç³»æ¶ï¼å©ä½èç¹ä¼éæ°éleaderãé®é¢å¨äºï¼éåleaderæ¶é´è¿é¿ï¼30 ~ 120sï¼ä¸éåæé´zké群é½ä¸å¯ç¨ï¼è¿æ ·å°±ä¼å¯¼è´éåæé´æ³¨åæå¡ç«çªãå¨äºé¨ç½²çç¯å¢ä¸ï¼å ç½ç»é®é¢ä½¿å¾zké群失å»masterèç¹æ¯è¾å¤§æ¦çä¼åççäºï¼è½ç¶æå¡è½å¤æ¢å¤ï¼ä½æ¯æ¼«é¿çéåæ¶é´å¯¼è´ç注åé¿æä¸å¯ç¨æ¯ä¸è½å®¹å¿çã
2.Eurekaä¿è¯äºå¯ç¨æ§ï¼Eurekaå个èç¹æ¯å¹³ççï¼å 个èç¹ææä¸ä¼å½±åæ£å¸¸èç¹çå·¥ä½ï¼å©ä½çèç¹ä»ç¶å¯ä»¥æä¾æ³¨ååæ¥è¯¢æå¡ãèEurekaç客æ·ç«¯åæä¸ªEureka注åæåç°æ¶åçè¿æ¥å¤±è´¥ï¼åä¼èªå¨åæ¢å°å ¶ä»èç¹ï¼åªè¦æä¸å°Eurekaè¿å¨ï¼å°±è½ä¿è¯æ³¨åæå¡å¯ç¨ï¼åªæ¯æ¥å°çä¿¡æ¯å¯è½ä¸æ¯ææ°çã餿¤ä¹å¤ï¼Eurekaè¿æèªæä¿æ¤æºå¶ï¼å¦æå¨15åéå è¶ è¿85%çèç¹æ²¡ææ£å¸¸çå¿è·³ï¼é£ä¹Eureka就认为客æ·ç«¯ä¸æ³¨åä¸å¿åçäºç½ç»æ éï¼æ¤æ¶ä¼åºç°ä»¥ä¸å ç§æ åµï¼
â ãEurekaä¸å¨ä»æ³¨åå表ä¸ç§»é¤å ä¸ºé¿æ¶é´æ²¡ææ¶å°å¿è·³èåºè¯¥è¿æçæå¡ã
â¡ãEurekaä»ç¶è½å¤æ¥åæ°æå¡ç注ååæ¥è¯¢è¯·æ±ï¼ä½æ¯ä¸ä¼è¢«åæ¥å°å ¶ä»èç¹ä¸ï¼å³ä¿è¯å½åèç¹ä»ç¶å¯ç¨ï¼
â¢ãå½ç½ç»ç¨³å®æ¶ï¼å½åå®ä¾æ°ç注åä¿¡æ¯ä¼è¢«åæ¥å°å ¶ä»èç¹ã
å æ¤ï¼Eurekaå¯ä»¥å¾å¥½å°åºå¯¹å ç½ç»æ é导è´é¨åèç¹å¤±å»èç³»çæ åµï¼èä¸ä¼åZookeeper飿 ·ä½¿æ´ä¸ªå¾®æå¡ç«çª
7ãSpringBootåSpringCloudçåºå«ï¼
SpringBoot䏿³¨äºå¿«éæ¹ä¾¿å¾å¼åå个个ä½å¾®æå¡ã
SpringCloudæ¯å ³æ³¨å ¨å±çå¾®æå¡åè°æ´çæ²»çæ¡æ¶ï¼å®å°SpringBootå¼åçä¸ä¸ªä¸ªåä½å¾®æå¡æ´å并管çèµ·æ¥ï¼
为å个微æå¡ä¹é´æä¾ï¼é 置管çãæå¡åç°ãæè·¯å¨ãè·¯ç±ã微代çãäºä»¶æ»çº¿ãå ¨å±éãå³çç«éãåå¸å¼ä¼è¯ççéææå¡
SpringBootå¯ä»¥ç¦»å¼SpringCloudç¬ç«ä½¿ç¨å¼å项ç®ï¼ 使¯SpringCloud离ä¸å¼SpringBoot ï¼å±äºä¾èµçå ³ç³».
SpringBoot䏿³¨äºå¿«éãæ¹ä¾¿å¾å¼åå个微æå¡ä¸ªä½ï¼SpringCloudå ³æ³¨å ¨å±çæå¡æ²»çæ¡æ¶ã
8ãè´è½½å¹³è¡¡çæä¹ä»ä¹ï¼
å¨è®¡ç®ä¸ï¼è´è½½å¹³è¡¡å¯ä»¥æ¹åè·¨è®¡ç®æºï¼è®¡ç®æºé群ï¼ç½ç»é¾æ¥ï¼ä¸å¤®å¤çåå æç£ç驱å¨å¨çå¤ç§è®¡ç®èµæºçå·¥ä½è´è½½åå¸ãè´è½½å¹³è¡¡æ¨å¨ä¼åèµæºä½¿ç¨ï¼æå¤§åååéï¼æå°åååºæ¶é´å¹¶é¿å ä»»ä½åä¸èµæº çè¿è½½ã使ç¨å¤ä¸ªç»ä»¶è¿è¡è´è½½å¹³è¡¡è䏿¯å个ç»ä»¶å¯è½ä¼éè¿å使¥æé«å¯é æ§åå¯ç¨æ§ãè´è½½å¹³è¡¡é常æ¶åä¸ç¨è½¯ä»¶æç¡¬ä»¶ï¼ä¾å¦å¤å±äº¤æ¢æºæååç³»ç»æå¡å¨è¿ç¨ã
9ãä»ä¹æ¯Hystrixï¼å®å¦ä½å®ç°å®¹éï¼
Hystrixæ¯ä¸ä¸ªå»¶è¿å容éåºï¼æ¨å¨é离è¿ç¨ç³»ç»ï¼æå¡åç¬¬ä¸æ¹åºç访é®ç¹ï¼å½åºç°æ 鿝ä¸å¯é¿å çæ éæ¶ï¼åæ¢çº§èæ éå¹¶å¨å¤æçåå¸å¼ç³»ç»ä¸å®ç°å¼¹æ§ã
é常对äºä½¿ç¨å¾®æå¡æ¶æå¼åçç³»ç»ï¼æ¶åå°è®¸å¤å¾®æå¡ãè¿äºå¾®æå¡å½¼æ¤åä½ã
æèä¸ä¸å¾®æå¡ï¼

åè®¾å¦æä¸å¾ä¸çå¾®æå¡9失败äºï¼é£ä¹ä½¿ç¨ä¼ ç»æ¹æ³æä»¬å°ä¼ æä¸ä¸ªå¼å¸¸ãä½è¿ä»ç¶ä¼å¯¼è´æ´ä¸ªç³»ç»å´©æºã
éçå¾®æå¡æ°éçå¢å ï¼è¿ä¸ªé®é¢å徿´å 夿ãå¾®æå¡çæ°éå¯ä»¥é«è¾¾1000.è¿æ¯hystrixåºç°çå°æ¹ æä»¬å°ä½¿ç¨Hystrixå¨è¿ç§æ åµä¸çFallbackæ¹æ³åè½ãæä»¬æä¸¤ä¸ªæå¡employee-consumer使ç¨ç±employee-consumerå ¬å¼çæå¡ã
ç®åå¾å¦ä¸æç¤º

ç°å¨å设ç±äºæç§åå ï¼employee-producerå ¬å¼çæå¡ä¼æåºå¼å¸¸ãæä»¬å¨è¿ç§æ åµä¸ä½¿ç¨Hystrixå®ä¹äºä¸ä¸ªåéæ¹æ³ãè¿ç§å夿¹æ³åºè¯¥å ·æä¸å ¬å¼æå¡ç¸åçè¿åç±»åã妿æ´é²æå¡ä¸åºç°å¼å¸¸ï¼ååéæ¹æ³å°è¿åä¸äºå¼ã
10ãä»ä¹æ¯Hystrixæè·¯å¨ï¼æä»¬éè¦å®åï¼
ç±äºæäºåå ï¼employee-consumerå ¬å¼æå¡ä¼å¼åå¼å¸¸ãå¨è¿ç§æ åµä¸ä½¿ç¨Hystrixæä»¬å®ä¹äºä¸ä¸ªåéæ¹æ³ã妿å¨å ¬å¼æå¡ä¸åçå¼å¸¸ï¼ååéæ¹æ³è¿åä¸äºé»è®¤å¼ã

妿firstPage method() ä¸çå¼å¸¸ç»§ç»åçï¼åHystrixçµè·¯å°ä¸æï¼å¹¶ä¸å工使ç¨è å°ä¸èµ·è·³è¿firtsPageæ¹æ³ï¼å¹¶ç´æ¥è°ç¨åéæ¹æ³ãæè·¯å¨çç®çæ¯ç»ç¬¬ä¸é¡µæ¹æ³æç¬¬ä¸é¡µæ¹æ³å¯è½è°ç¨çå ¶ä»æ¹æ³çåºæ¶é´ï¼å¹¶å¯¼è´å¼å¸¸æ¢å¤ãå¯è½åççæ åµæ¯ï¼å¨è´è½½è¾å°çæ åµä¸ï¼å¯¼è´å¼å¸¸çé®é¢ææ´å¥½çæ¢å¤æºä¼ ã
11ã说说 RPC çå®ç°åç
é¦å éè¦æå¤çç½ç»è¿æ¥éè®¯çæ¨¡åï¼è´è´£è¿æ¥å»ºç«ã管çåæ¶æ¯çä¼ è¾ãå ¶æ¬¡éè¦æç¼ è§£ç çæ¨¡åï¼å 为ç½ç»éè®¯é½æ¯ä¼ è¾çåèç ï¼éè¦å°æä»¬ä½¿ç¨ç对象åºåååååºååãå©ä¸çå°±æ¯å®¢æ·ç«¯åæå¡å¨ç«¯çé¨åï¼æå¡å¨ç«¯æ´é²è¦å¼æ¾çæå¡æ¥å£ï¼å®¢æ·è°ç¨æ 塿¥å£çä¸ä¸ªä»£çå®ç°ï¼è¿ä¸ªä»£çå®ç°è´è´£æ¶éæ°æ®ãç¼ç å¹¶ä¼ è¾ç»æå¡å¨ç¶åçå¾ ç»æè¿åã
12ï¼eurekaèªæä¿æ¤æºå¶æ¯ä»ä¹?
å½Eureka Server èç¹å¨çæ¶é´å 丢失äºè¿å¤å®ä¾çè¿æ¥æ¶ï¼æ¯å¦ç½ç»æ éæé¢ç¹å¯å¨å ³é客æ·ç«¯ï¼èç¹ä¼è¿å ¥èªæä¿æ¤æ¨¡å¼ï¼ä¿æ¤æ³¨åä¿¡æ¯ï¼ä¸åå 餿³¨åæ°æ®ï¼æ 鿢夿¶ï¼èªå¨éåºèªæä¿æ¤æ¨¡å¼ã
13ï¼ä»ä¹æ¯Ribbonï¼
ribbonæ¯ä¸ä¸ªè´è½½å衡客æ·ç«¯ï¼å¯ä»¥å¾å¥½å°æ§å¶httåtcpçä¸äºè¡ä¸ºãfeigné»è®¤éæäºribbonã
14ï¼ä»ä¹æ¯ Netflix Feignï¼å®çä¼ç¹æ¯ä»ä¹ï¼
Feign æ¯åå° Retrofitï¼JAXRS-2.0 å WebSocket å¯åç java 客æ·ç«¯èç¼ç¨åºã
Feign ç第ä¸ä¸ªç®æ æ¯å°çº¦æåæ¯ç夿æ§ç»ä¸å° http apisï¼èä¸èèå ¶ç¨³å®æ§ã
ç¹ç¹ï¼
- Feign éç¨çæ¯åºäºæ¥å£ç注解
- Feign æ´åäºribbonï¼å ·æè´è½½åè¡¡çè½å
- æ´åäºHystrixï¼å ·æçæçè½å
ä½¿ç¨æ¹å¼
- æ·»å pomä¾èµã
- å¯å¨ç±»æ·»å
@EnableFeignClients - å®ä¹ä¸ä¸ªæ¥å£
@FeignClient(name=âxxxâ)æå®è°ç¨åªä¸ªæå¡
15ï¼ RibbonåFeignçåºå«ï¼
1.å¯å¨ç±»æ³¨è§£ä¸åï¼Ribbonæ¯@RibbonClient feignçæ¯@EnableFeignClientsï¼2.æå¡æå®çä½ç½®ä¸åï¼Ribbonæ¯å¨@RibbonClient注解ä¸å£°æï¼Feign忝å¨å®ä¹æ½è±¡æ¹æ³çæ¥å£ä¸ä½¿ç¨@FeignClient声æï¼3.è°ç¨æ¹å¼ä¸åï¼Ribbonéè¦èªå·±æå»ºhttp请æ±ï¼æ¨¡æhttp请æ±ã
16ãSpring Cloud çæ ¸å¿ç»ä»¶æåªäºï¼
- Eurekaï¼æå¡æ³¨åäºåç°ã
- Feignï¼åºäºå¨æä»£çæºå¶ï¼æ ¹æ®æ³¨è§£åéæ©çæºå¨ï¼æ¼æ¥è¯·æ± url å°åï¼å起请æ±ã
- Ribbonï¼å®ç°è´è½½åè¡¡ï¼ä»ä¸ä¸ªæå¡çå¤å°æºå¨ä¸éæ©ä¸å°ã
- Hystrixï¼æä¾çº¿ç¨æ± ï¼ä¸åçæå¡èµ°ä¸åççº¿ç¨æ± ï¼å®ç°äºä¸åæå¡è°ç¨çé离ï¼é¿å äºæå¡éªå´©çé®é¢ã
- Zuulï¼ç½å ³ç®¡çï¼ç± Zuul ç½å ³è½¬å请æ±ç»å¯¹åºçæå¡ã
17ã说说Spring BootåSpring Cloudçå ³ç³»
Spring Bootæ¯Springæ¨åºç¨äºè§£å³ä¼ ç»æ¡æ¶é ç½®æä»¶åä½,è£ é ç»ä»¶ç¹æçåºäºMavençè§£å³æ¹æ¡,æ¨å¨å¿«éæå»ºå个微æå¡èSpring Cloud䏿³¨äºè§£å³å个微æå¡ä¹é´çåè°ä¸é ç½®,æå¡ä¹é´çéä¿¡,çæ,è´è½½åè¡¡çææ¯ç»´åº¦å¹¶ç¸å,å¹¶ä¸Spring Cloudæ¯ä¾èµäºSpring Bootç,èSpring Boot并䏿¯ä¾èµä¸Spring Cloud,çè³è¿å¯ä»¥åDubboè¿è¡ä¼ç§çæ´åå¼å
æ»ç»
- SpringBoot䏿³¨äºå¿«éæ¹ä¾¿çå¼åå个个ä½çå¾®æå¡
- SpringCloudæ¯å ³æ³¨å ¨å±çå¾®æå¡åè°æ´çæ²»çæ¡æ¶,æ´å并管çå个微æå¡,为å个微æå¡ä¹é´æä¾,é 置管ç,æå¡åç°,æè·¯å¨,è·¯ç±,äºä»¶æ»çº¿çéææå¡
- Spring Bootä¸ä¾èµäºSpring Cloudï¼Spring Cloudä¾èµäºSpring Boot,å±äºä¾èµå ³ç³»
- Spring Boot䏿³¨äºå¿«é,æ¹ä¾¿çå¼åå个çå¾®æå¡ä¸ªä½,Spring Cloudå ³æ³¨å ¨å±çæå¡æ²»çæ¡æ¶
18ã说说微æå¡ä¹é´æ¯å¦ä½ç¬ç«é讯çï¼
è¿ç¨è¿ç¨è°ç¨ï¼Remote Procedure Invocationï¼
ä¹å°±æ¯æä»¬å¸¸è¯´çæå¡ç注åä¸åç°ï¼ç´æ¥éè¿è¿ç¨è¿ç¨è°ç¨æ¥è®¿é®å«çserviceã
ä¼ç¹ï¼ç®åï¼å¸¸è§,å 为没æä¸é´ä»¶ä»£çï¼ç³»ç»æ´ç®å
缺ç¹ï¼åªæ¯æè¯·æ±/ååºç模å¼ï¼ä¸æ¯æå«çï¼æ¯å¦éç¥ã请æ±/弿¥ååºãåå¸/订é ãåå¸/弿¥ååºï¼éä½äºå¯ç¨æ§ï¼å 为客æ·ç«¯åæå¡ç«¯å¨è¯·æ±è¿ç¨ä¸å¿ 须齿¯å¯ç¨çã
æ¶æ¯
使ç¨å¼æ¥æ¶æ¯æ¥åæå¡é´éä¿¡ãæå¡é´éè¿æ¶æ¯ç®¡éæ¥äº¤æ¢æ¶æ¯ï¼ä»èéä¿¡ã
ä¼ç¹ï¼æå®¢æ·ç«¯åæå¡ç«¯è§£è¦ï¼æ´æ¾è¦åï¼æé«å¯ç¨æ§ï¼å ä¸ºæ¶æ¯ä¸é´ä»¶ç¼åäºæ¶æ¯ï¼ç´å°æ¶è´¹è å¯ä»¥æ¶è´¹ï¼ æ¯æå¾å¤éä¿¡æºå¶æ¯å¦éç¥ã请æ±/弿¥ååºãåå¸/订é ãåå¸/弿¥ååºã
缺ç¹ï¼æ¶æ¯ä¸é´ä»¶æé¢å¤ç夿ã
19ãSpring Cloudå¦ä½å®ç°æå¡ç注å?
æå¡å叿¶ï¼æå®å¯¹åºçæå¡åï¼å°æå¡æ³¨åå° æ³¨åä¸å¿(Eureka ãZookeeper)ã
注åä¸å¿å @EnableEurekaServerï¼æå¡ç¨@EnableDiscoveryClientï¼ç¶åç¨ribbonæfeignè¿è¡æå¡ç´æ¥çè°ç¨åç°ã
20ãä»ä¹æ¯æå¡çæï¼
å¨å¤æçåå¸å¼ç³»ç»ä¸,å¾®æå¡ä¹é´çç¸äºè°ç¨,æå¯è½åºç°åç§åæ ·çåå å¯¼è´æå¡çé»å¡,å¨é«å¹¶ååºæ¯ä¸,æå¡çé»å¡æå³ç线ç¨çé»å¡,导è´å½å线ç¨ä¸å¯ç¨,æå¡å¨ç线ç¨å ¨é¨é»å¡,å¯¼è´æå¡å¨å´©æº,ç±äºæå¡ä¹é´çè°ç¨å ³ç³»æ¯åæ¥ç,ä¼å¯¹æ´ä¸ªå¾®æå¡ç³»ç»é ææå¡éªå´©
为äºè§£å³æä¸ªå¾®æå¡çè°ç¨ååºæ¶é´è¿é¿æè ä¸å¯ç¨è¿èå ç¨è¶æ¥è¶å¤çç³»ç»èµæºå¼èµ·éªå´©æåºå°±éè¦è¿è¡æå¡çæåæå¡é级å¤çã
æè°çæå¡çææçæ¯æä¸ªæå¡æ éæå¼å¸¸ä¸èµ·ç±»ä¼¼æ¾ç¤ºä¸çä¸çâä¿é©ä¸"å½æä¸ªå¼å¸¸æ¡ä»¶è¢«è§¦åå°±ç´æ¥çææ´ä¸ªæå¡ï¼è䏿¯ä¸ç´çå°æ¤æå¡è¶ æ¶ã
æå¡çæå°±æ¯ç¸å½äºæä»¬çµé¸çä¿é©ä¸,䏿¦åçæå¡éªå´©ç,å°±ä¼çææ´ä¸ªæå¡,éè¿ç»´æ¤ä¸ä¸ªèªå·±ççº¿ç¨æ± ,å½çº¿ç¨è¾¾å°éå¼çæ¶åå°±å¯å¨æå¡é级,å¦æå ¶ä»è¯·æ±ç»§ç»è®¿é®å°±ç´æ¥è¿åfallbackçé»è®¤å¼
21ãäºè§£Eurekaèªæä¿æ¤æºå¶åï¼
å½Eureka Server èç¹å¨çæ¶é´å 丢失äºè¿å¤å®ä¾çè¿æ¥æ¶ï¼æ¯å¦ç½ç»æ éæé¢ç¹å¯å¨å ³é客æ·ç«¯ï¼èç¹ä¼è¿å ¥èªæä¿æ¤æ¨¡å¼ï¼ä¿æ¤æ³¨åä¿¡æ¯ï¼ä¸åå 餿³¨åæ°æ®ï¼æ 鿢夿¶ï¼èªå¨éåºèªæä¿æ¤æ¨¡å¼ã
22ãçæ Spring Cloud Bus å?
spring cloud bus å°åå¸å¼çèç¹ç¨è½»éçæ¶æ¯ä»£çè¿æ¥èµ·æ¥ï¼å®å¯ä»¥ç¨äºå¹¿æé ç½®æä»¶çæ´æ¹æè æå¡ç´æ¥çé讯ï¼ä¹å¯ç¨äºçæ§ãå¦æä¿®æ¹äºé ç½®æä»¶ï¼åé䏿¬¡è¯·æ±ï¼ææç客æ·ç«¯ä¾¿ä¼éæ°è¯»åé ç½®æä»¶ã
23ãSpring Cloud æè·¯å¨æä»ä¹ä½ç¨?
å½ä¸ä¸ªæå¡è°ç¨å¦ä¸ä¸ªæå¡ç±äºç½ç»åå æèªèº«åå åºç°é®é¢ï¼è°ç¨è å°±ä¼çå¾ è¢«è°ç¨è çååºï¼å½æ´å¤çæå¡è¯·æ±å°è¿äºèµæºå¯¼è´æ´å¤ç请æ±çå¾ ï¼åçè¿éæåºï¼éªå´©æåºï¼ã䏿®µæ¶é´å è¾¾å°ä¸å®çæ¬¡æ°æ æ³è°ç¨ å¹¶ä¸å¤æ¬¡çæµæ²¡ææ¢å¤ç迹象ï¼è¿æ¶åæè·¯å¨å®å ¨æå¼ é£ä¹ä¸æ¬¡è¯·æ±å°±ä¸ä¼è¯·æ±å°è¯¥æå¡ã
åå¼ï¼çæ¶é´å ææ¢å¤è¿¹è±¡ æè·¯å¨ä¼å°é¨å请æ±åç»è¯¥æå¡ï¼æ£å¸¸è°ç¨æ¶ æè·¯å¨å ³éãå ³éï¼å½æå¡ä¸ç´å¤äºæ£å¸¸ç¶æ è½æ£å¸¸è°ç¨ã
24ãäºè§£Spring Cloud Config å?
å¨åå¸å¼ç³»ç»ä¸ï¼ç±äºæå¡æ°éå·¨å¤ï¼ä¸ºäºæ¹ä¾¿æå¡é
ç½®æä»¶ç»ä¸ç®¡çï¼å®æ¶æ´æ°ï¼æä»¥éè¦åå¸å¼é
ç½®ä¸å¿ç»ä»¶ãå¨Spring Cloudä¸ï¼æåå¸å¼é
ç½®ä¸å¿ç»ä»¶Spring Cloud Configï¼å®æ¯æé
ç½®æå¡æ¾å¨é
ç½®æå¡çå
åä¸ï¼å³æ¬å°ï¼ï¼ä¹æ¯ææ¾å¨è¿ç¨Gitä»åºä¸ã
å¨Spring Cloud Config ç»ä»¶ä¸ï¼å两个è§è²ï¼ä¸æ¯config serverï¼äºæ¯config clientã
ä½¿ç¨æ¹å¼ï¼
- æ·»å pomä¾èµ
- é ç½®æä»¶æ·»å ç¸å ³é ç½®
- å¯å¨ç±»æ·»å 注解@EnableConfigServer
25ãè¯´è¯´ä½ å¯¹Spring Cloud Gatewayççè§£
Spring Cloud Gatewayæ¯Spring Cloud宿¹æ¨åºç第äºä»£ç½å ³æ¡æ¶ï¼å代Zuulç½å ³ãç½å ³ä½ä¸ºæµéçï¼å¨å¾®æå¡ç³»ç»ä¸æçé常ä½ç¨ï¼ç½å ³å¸¸è§çåè½æè·¯ç±è½¬åãæéæ ¡éªãéæµæ§å¶çä½ç¨ã
使ç¨äºä¸ä¸ªRouteLocatorBuilderçbeanå»å建路ç±ï¼é¤äºå建路ç±RouteLocatorBuilderå¯ä»¥è®©ä½ æ·»å åç§predicatesåfiltersï¼predicatesæè¨çææï¼é¡¾åæä¹å°±æ¯æ ¹æ®å ·ä½ç请æ±çè§åï¼ç±å ·ä½çrouteå»å¤çï¼filtersæ¯åç§è¿æ»¤å¨ï¼ç¨æ¥å¯¹è¯·æ±ååç§å¤æåä¿®æ¹ã
Spring Cloudå个微æå¡ä¹é´ä¸ºä»ä¹è¦ç¨http交äºï¼é¾é䏿 ¢åï¼
Spring Cloudæ¯ä¸ä¸ªä¸ºåå¸å¼å¾®æå¡æ¶ææå»ºåºç¨ç¨åºçå¼åå·¥å ·ç®±ï¼æ¯Spring Bootçæ©å±ï¼éè¿åç§å¾®æå¡ç»ä»¶çéæï¼æå¤§å°ç®åäºå¾®æå¡åºç¨ç¨åºçæå»ºåå¼åãå¨åå¸å¼ç³»ç»ä¸ï¼å个微æå¡ä¹é´çéä¿¡æ¯é常éè¦çï¼èHTTPä½ä¸ºéä¿¡åè®®å ·ææ®éæ§å坿©å±æ§ï¼æ¯Spring Cloudå¾®æå¡æ¶æä¸ä¸»æµçéä¿¡æ¹å¼ã
尽管使ç¨HTTPä½ä¸ºå¾®æå¡ä¹é´çéä¿¡åè®®åå¨ä¸å®çç½ç»å¼éï¼ä½æ¯è¿ç§ä¸å¯é¿å çç½ç»å¼éè¿ä½äºæä»¬æè½å¾å°ç好å¤ã使ç¨HTTPéä¿¡å¯ä»¥å®ç°æ¾è¦åå弿¥éä¿¡ï¼å¾®æå¡ä¹é´å¯ä»¥å½¼æ¤ç¬ç«å°è¿è¡å¼ååæµè¯ï¼å个微æå¡çæ éä¸ä¼å½±åæ´ä¸ªç³»ç»çè¿è¡ï¼ä¹å¯ä»¥æ¯æåç§ä¸åçææ¯æ ä¹é´çäºæä½æ§ã
å¦å¤ï¼ä½¿ç¨HTTPä½ä¸ºéä¿¡åè®®è¿å ·æä¼ç§ç坿©å±æ§ãHTTPåè®®å®ä¹äºä¸åçè¯·æ±æ¹æ³ï¼ä¾å¦ GETãPOSTãDELETE çï¼ï¼ä¸åè¯·æ±æ¹æ³çæ©å±æ ¼å¼ä¹å¾çµæ´»ï¼å¯ä»¥ç¨æ¥ä¼ éåç§ç±»åçæ°æ®åæ ¼å¼ï¼åæ¶HTTPåè®®æ¯æç¼åï¼åå°é夿§çæ°æ®ä¼ è¾å带宽å¼éã
å½ç¶ï¼ä¸ºäºæé«å¾®æå¡ä¹é´çéä¿¡æçï¼æä»¬ä¹å¯ä»¥éè¿ä¸äºä¼åææ®µæ¥åå°HTTPåè®®çç½ç»å¼éãä¾å¦ï¼ä½¿ç¨æ°æ®å缩åç¼åææ¯æ¥å缩åç¼å请æ±åååºï¼åå°ç½ç»æ°æ®ä¼ è¾éåååºæ¶é´ï¼ä½¿ç¨è´è½½åè¡¡ææ¯æ¥åçå°åé 请æ±åååºï¼é¿å å个微æå¡åºç°æ§è½ç¶é¢ï¼ä½¿ç¨é«éç¼åææ¯æ¥ç¼å请æ±åååºï¼é¿å éå¤ç请æ±åååºççã
å æ¤ï¼Spring Cloudå个微æå¡ä¹é´ä½¿ç¨HTTPäº¤äºæ¯ä¸ä¸ªæ¯è¾æççéæ©ãè½ç¶å®å¯è½åå¨ä¸äºç½ç»å¼éï¼ä½æ¯å¨å®é åºç¨ä¸ï¼è¿ç§å¼éæ¯å¯ä»¥ä¼ååæ§å¶çï¼çè³å¯ä»¥æé«ç³»ç»ç坿©å±æ§åå¯é æ§ã
åèï¼http://1pgqu.cn/M0NZo