ʲôÊÇSpring
Cloud?
Spring Cloud ÊÇPivotalÌṩµÄÓÃÓÚ¼ò»¯·Ö²¼Ê½ÏµÍ³¹¹½¨µÄ¹¤¾ß¼¯¡£Spring CloudÒýÈëÁËÔÆÆ½Ì¨Á¬½ÓÆ÷(Cloud
Connector)ºÍ·þÎñÁ¬½ÓÆ÷(Service Connector)µÄ¸ÅÄî¡£ÔÆÆ½Ì¨Á¬½ÓÆ÷ÊÇÒ»¸ö½Ó¿Ú£¬ÐèÒªÓÉÔÆÆ½Ì¨ÌṩÕß½øÐÐʵÏÖ£¬ÒÔ±ã¿âÖÐµÄÆäËûÄ£¿é¿ÉÒÔÓë¸ÃÔÆÆ½Ì¨Ðͬ¹¤×÷¡£
Spring Boot
Spring Cloud×îÖØÒªµÄÒ»µãÊÇËü¿ÉÒÔºÍSpring BootÒ»Æð¹¤×÷£¬Spring Boot¿ÉÒÔ°ïÖú¿ª·¢Õ߸üÈÝÒ׵ش´½¨»ùÓÚSpringµÄÓ¦ÓóÌÐòºÍ·þÎñ¡£
´ÓSpring BootÏîÄ¿Ãû³ÆÖеÄBoot¾Í¿ÉÒÔ¿´³öÀ´£¬Spring BootµÄ×÷ÓÃÔÚÓÚ´´½¨ºÍÆô¶¯ÐµĻùÓÚSpring¿ò¼ÜµÄÏîÄ¿¡£Spring
Boot»áÑ¡Ôñ×îÊʺϵÄSpring×ÓÏîÄ¿ºÍµÚÈý·½¿ªÔ´¿â½øÐÐÕûºÏ¡£´ó²¿·ÖSpring BootÓ¦ÓÃÖ»ÐèÒª·Ç³£ÉÙµÄÅäÖþͿÉÒÔ¿ìËÙÔËÐÐÆðÀ´¡£Spring
Boot°üº¬µÄÌØÐÔÈçÏ£º
´´½¨¿ÉÒÔ¶ÀÁ¢ÔËÐеÄSpringÓ¦Óá£
Ö±½ÓǶÈëTomcat»òJetty·þÎñÆ÷£¬²»ÐèÒª²¿ÊðWARÎļþ¡£
Ìá¹©ÍÆ¼öµÄ»ù´¡POMÎļþÀ´¼ò»¯Apache MavenÅäÖá£
¾¡¿ÉÄܵĸù¾ÝÏîÄ¿ÒÀÀµÀ´×Ô¶¯ÅäÖÃSpring¿ò¼Ü¡£
Ìṩ¿ÉÒÔÖ±½ÓÔÚÉú²ú»·¾³ÖÐʹÓõŦÄÜ£¬ÈçÐÔÄÜÖ¸±ê¡¢Ó¦ÓÃÐÅÏ¢ºÍÓ¦Óý¡¿µ¼ì²é¡£
ûÓдúÂëÉú³É£¬Ò²Ã»ÓÐXMLÅäÖÃÎļþ¡£
·þÎñ·¢ÏÖºÍÖÇÄÜ·ÓÉ
ÿһ¸ö·þÎñ¶¼º¬ÓÐÒ»¸öÌØ¶¨ÒâÒåµÄ΢·þÎñ¼Ü¹¹¡£µ±ÄãÔÚSpring CloudÉϹ¹½¨Î¢·þÎñ¼Ü¹¹Ê±£¬ÕâÀïÓм¸¸ö»ù±¾¸ÅÄîÐèÒªÊ×ÏȳÎÇåÏ¡£Ê×ÏÈ£¬ÄãÐèÒªÒªÏÈ´´½¨Configuration
ServiceºÍDiscovery ServiceÁ½¸ö»ù´¡·þÎñ¡£ÈçÏÂͼËùʾ£º

ÉÏÃæµÄͼƬ˵Ã÷ÁËËĸö΢·þÎñÒÔ¼°¸÷¸ö·þÎñÖ®¼äµÄÒÀÀµ¹ØÏµ¡£
Configuration service´¦ÓÚ×î¶¥¶Ë£¬»ÆÉ«±êʶ£¬¶øÇÒ±»ÆäËü΢·þÎñËùÒÀÀµ¡£
Discovery service´¦ÓÚ×îµÍ¶Ë£¬À¶É«±êʶ£¬Í¬Ê±Ò²±»ÆäËü·þÎñËùÒÀÀµ¡£
ÂÌÉ«±êʶµÄÁ½¸ö΢·þÎñÊÇÎÒÃDZ¾ÏµÁв©ÎÄÖÐÓõ½µÄÁ½¸öÓ¦Óð¸Àý£ºµçÓ°ºÍ¹ÛÓ°½¨Òé¡£
Configuration Service
Configuration ServiceÔÚ΢·þÎñ¼Ü¹¹ÖÐÊÇÒ»¸ö·Ç³£ÖØÒªµÄ×é¼þ¡£Èç12ÒªËØÓ¦ÓÃÀíÂÛËù˵£¬
΢·þÎñÓ¦ÓõÄÅäÖÃÓ¦¸Ã´æ´¢ÔÚ»·¾³ÖУ¬¶ø²»ÊDZ¾µØÏîÄ¿ÖС£
Configuration service(ÅäÖ÷þÎñ)ÊÇÒ»¸ö±Ø²»¿ÉÉٵĻù´¡×é¼þµÄÔÒòÊÇÒòΪËü¿ÉÒÔ¶ÔËùÓÐͨ¹ýµã¶ÔµãºÍ¼ìË÷µÄ»ù´¡·þÎñ½øÐзþÎñ¹ÜÀí¡£
¼ÙÉèÎÒÃÇÓжà¸ö²¿Êð»·¾³¡£±ÈÈçÎÒÃÇÓÐÒ»¸öÁÙʱ»·¾³ºÍÒ»¸öÉú²ú»·¾³£¬Õë¶Ôÿ¸ö»·¾³µÄÅäÖý«»áÊDz»Í¬µÄ¡£Ã¿Ò»¸öconfiguration
service ½«»áÓÉÒ»¸ö¶ÀÁ¢µÄGit²Ö¿âÀ´´æ·Å»·¾³ÅäÖá£Ã»ÓÐÆäËü»·¾³Äܹ»·ÃÎʵ½Õâ¸öÅäÖòֿ⣬ËüÖ»ÊÇÌṩ¸Ã»·¾³ÖÐÔËÐеÄÅäÖ÷þÎñ°ÕÁË¡£

µ±Configuration serviceÆô¶¯ºó£¬Ëü½«»áÖ¸ÏòÄÇЩ¸ù¾ÝÅäÖÃÎļþÅäÖõÄ·¾¶²¢Æô¶¯¶ÔÓ¦·þÎñ¡£Ã¿Ò»¸ö΢·þÎñͨ¹ý¶ÁÈ¡×Ô¼ºÅäÖÃÎļþÖеľßÌå»·¾³À´ÔËÐС£ÔÚÕâÒ»¹ý³ÌÖУ¬ÅäÖÃÊÇͨ¹ý°æ±¾¹ÜÀíÀ´½øÐеÄÄÚ²¿ºÍ¼¯Öл¯¹ÜÀí£¬¸ü¸ÄÅäÖò»ÐèÒªÖØÆô·þÎñ¡£
ͨ¹ýSpring CloudÌṩµÄ·þÎñÖÕ¶Ë£¬Äã¿ÉÒÔ¸ü¸Ä»·¾³ÅäÖ㬲¢ÏòDiscovery service(·¢ÏÖ·þÎñ)·¢ËÍÒ»¸öË¢ÐÂÐźţ¬ËùÓеÄÓû§¶¼»áÊÕµ½ÐµÄÅäÖÃ֪ͨ¡£
Discovery Service
Discovery Service(·¢ÏÖ·þÎñ)ÊÇÁíÒ»¸öÖØÒªµÄ΢·þÎñ¼Ü¹¹µÄ×é¼þ¡£Discovery
Service¹ÜÀíÔËÐÐÔÚÈÝÆ÷ÖеÄÖÚ¶à·þÎñʵÀý£¬¶øÕâЩʵÀý¹¤×÷ÔÚ¼¯Èº»·¾³Ï¡£ÔÚÕâЩӦÓÃÖУ¬ÎÒÃÇʹÓÿͻ§¶ËµÄ·½Ê½³ÆÖ®Îª´Ó·þÎñµ½·þÎñ¡£¾Ù¸öÀý×Ó£¬ÎÒʹÓÃSpring
Cloud Feign £¬ÕâÊÇÒ»¸ö»ùÓÚRestful·ç¸ñµÄ΢·þÎñÌṩµÄ¿Í»§¶Ë¿ªÔ´ÏîÄ¿£¬ËüÊÇ´ÓNetflix
OSS projectÏîÄ¿ÖÐÅÉÉú³öÀ´µÄ¡£
@FeignClient("movie") public interface MovieClient
{ @RequestMapping(method = RequestMethod.GET, value = "/movies"
) PagedResources findAll(); @RequestMapping(method = RequestMethod.GET, value = "/movies/{id}")
Movie findById(@RequestParam("id") String id); @RequestMapping
(method = RequestMethod.POST, value = "/movies", produces = MediaType.APPLICATION_JSON_VALUE)
void createMovie(@RequestBody Movie movie); } |
ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒ´´½¨ÁËÒ»¸öFeign ¿Í»§¶Ë£¬²¢Ó³ÉäÁËÒ»¸öREST API·½·¨À´±©Â¶µçÓ°·þÎñ¡£Ê¹ÓÃ@FeignClient×¢½â£¬¿ÉÒÔÉùÃ÷ÎÒÏëҪΪmovie΢·þÎñ¶ø´´½¨µÄ¿Í»§¶ËAPI¡£½ÓÏÂÀ´ÎÒÉùÃ÷ÁËÒ»¸öÎÒÏëҪʵÏֵķþÎñÓ³É䡣ͨ¹ýÔÚ·½·¨ÉÏÉùÃ÷Ò»¸öURL¹æÔòÀ´ÃèÊöÒ»¸öREST
APIµÄ·ÓɹæÔò¡£
¸üÁîÈËÐ˷ܵÄÊÇ£¬ÕâÒ»ÇÐÔÚSpring CloudÖж¼ºÜÈÝÒ×£¬ÎÒËùÒª×öµÄ½ö½öÊÇÖªµÀservice IDÀ´´´½¨ÎÒµÄFeign
¿Í»§¶Ë¡£·þÎñµÄURLµØÖ·ÔÚÔËÐÐʱ»·¾³ÊÇ×Ô¶¯ÅäÖõģ¬ÒòΪÿһ¸öÔÚ¼¯ÈºÖеÄ΢·þÎñ½«»áÔÚÆô¶¯Ê±Í¨¹ý°ó¶¨serviceidµÄ·½Ê½À´½øÐÐ×¢²á¡£
΢·þÎñ¼Ü¹¹ÖÐµÄÆäËü·þÎñ£¬Ò²ÊÇͨ¹ýÉÏÃæÌáµ½µÄ·½Ê½ÔËÐС£ÎÒÖ»ÐèÒªÖªµÀ½øÐÐͨѶ·þÎñµÄserviceid£¬ËùÓеIJÙ×÷¶¼ÊÇͨ¹ýSpring×Ô¶¯°ó¶¨µÄ¡£
API Gateway
API Gateway ·þÎñÊÇSpring CloudµÄÁíÒ»¸öÖØÒª×é¼þ(¹ØÓÚËüµÄ½éÉÜ¿ÉÒÔÔĶÁ±¾ÆªÎÄÕÂ)¡£Ëü¿ÉÒÔÓÃÀ´¹ÜÀí¼¯Èº·þÎñÖеÄÁìÓòʵÌå¡£ÏÂͼµÄÂÌÉ«Áù±ßÐÎÊÇÎÒÃÇÌṩµÄÊý¾ÝÇý¶¯·þÎñ£¬Ö÷ÒªÓÃÀ´¹ÜÀí×Ô¼ºµÄʵÌåÀàºÍÊý¾Ý¿â¡£Í¨¹ýÌí¼ÓAPI
Gateway·þÎñ£¬ÎÒÃÇ¿ÉÒÔΪͨ¹ýÏÂÃæÂÌÑÕÉ«µÄ·þÎñΪÿһ¸öAPI·ÓÉ´´½¨Ò»¸ö´úÀí±©Â¶½Ó¿Ú¡£

¼ÙÉèÍÆ¼ö·þÎñºÍµçÓ°·þÎñ¶¼±©Â¶ËûÃÇ×Ô¼ºµÄREST APIÔÚ×Ô¼º¹ÜÀíµÄÓòʵÌåÉÏ¡£API gatawayͨ¹ýdiscovery
serviceºÍ´ÓÆäËü·þÎñ×¢ÈëµÄ»ùÓÚ´úÀí·ÓÉµÄ API·½·¨¡£Í¨¹ýÕâÖÖ·½Ê½£¬°üÀ¨ÍƼö·þÎñºÍµçÓ°·þÎñ½«ÓµÓÐÒ»¸öÍêÕû¶¨ÒåµÄ·ÓÉ£¬Í¨¹ý±©Â¶µÄREST
API»ñµÃ±¾µØµÄ΢·þÎñ¡£API Gateway½«»áÖØ¶¨Òå·ÓÉÇëÇóµ½·þÎñʵÀý£¬ÕâЩÇëÇó¶¼ÊÇ»ùÓÚHTTPµÄ¡£
ʾÀýÏîÄ¿
ÎÒÒѾÔÚGitHubÉÏ´´½¨ÁËÒ»¸öʵÀýÏîÄ¿£ºhttps://github.com/kbastani/spring-cloud-microservice-example£¬Õâ¸öÏîÄ¿ÊÇÒ»¸ö¶Ëµ½¶ËµÄÔÉúÔÆÆ½Ì¨£¬Ê¹ÓÃSpring
Cloud¹¹½¨Êµ¼ÊµÄ΢·þÎñ¼Ü¹¹¡£
»ù±¾¸ÅÄî:
ʹÓÃDocker½øÐм¯³É²âÊÔ
»ìºÏ³Ö¾Ã»¯
΢·þÎñ¼Ü¹¹
·þÎñ·¢ÏÖ
APIÍø¹Ø
Docker
ʹÓÃDocker¶Ôÿһ¸ö·þÎñ½øÐй¹½¨ºÍ²¿Êð¡£Ê¹ÓÃDocker ComposeÔÚÒ»¸ö¿ª·¢»úÉϽøÐж˵½¶ËµÄ¼¯³É²âÊÔ¡£
»ìºÏ³Ö¾Ã»¯
»ìºÏ³Ö¾Ã»¯Æäʵ¾ÍÊÇ˵ʹÓöàÖÖÊý¾Ý¿âÀ´´æ´¢¡£²»Í¬µÄ΢·þÎñʵÀý¶¼»áʹÓÃËüÃÇ×Ô¼ºµÄÊý¾Ý¿â£¬²¢Í¨¹ýREST·þÎñ»òÕßÏûÏ¢×ÜÏßÀ´Í¨ÐÅ£¬¾Ù¸öÀý×Ó£¬Äã¿ÉÒÔʹÓûùÓÚÒÔÏÂÊý¾Ý¿âÀ´¹¹½¨Î¢·þÎñ£º
Neo4j(ͼÐλ¯)
MongoDB(Îĵµ»¯)
MySQL(¹ØÁª)
΢·þÎñ¼Ü¹¹
Õâ¸öÀý×ÓÑÝʾÁËÈçºÎʹÓÃ΢·þÎñ´´½¨Ò»¸öеÄÓ¦Óá£ÓÉÓÚÔÚÏîÄ¿ÖеÄÿһ¸ö΢·þÎñÖ»ÓÐÒ»¸öµ¥Ò»µÄ¸¸ÏîÄ¿¡£¿ª·¢ÕßΪ´ËµÃµ½µÄÊÕÒæÊÇ¿ÉÒÔÔÚ±¾»úÉÏÔËÐкͿª·¢Ã¿Ò»¸ö΢·þÎñ¡£Ìí¼ÓÒ»¸öеÄ΢·þÎñ·Ç³£¼òµ¥£¬µ±·¢ÏÖ΢·þÎñʱ½«»á×Ô¶¯·¢ÏÖÔËÐÐʱµÄ¼¯Èº»·¾³ÉÏ¡£
Service Discovery
ÏîÄ¿Öаüº¬Á½¸ö·¢ÏÖ·þÎñ£¬Ò»¸öÔÚNetflix Eureka£¬ÁíÒ»¸öʹÓÃÁË
Consul from Hashicorp¡£¶àÖÖ·¢ÏÖ·þÎñÌṩÁ˶àÖÖÑ¡Ôñ£¬Ò»¸öÊÇʹÓÃ(Consul)À´×öDNS·þÎñ¼¯Èº£¬ÁíÒ»¸öÊÇ(Consul)»ùÓÚ´úÀíµÄAPI
Íø¹Ø¡£
API Íø¹Ø
ÿһ¸ö΢·þÎñ¶¼¹ØÁªEureka£¬ÔÚÕû¸ö¼¯ÈºÖмìË÷API·ÓÉ¡£Ê¹ÓÃÕâ¸ö²ßÂÔ£¬Ã¿Ò»¸öÔÚ¼¯ÈºÉÏÔËÐеÄ΢·þÎñÖ»ÐèҪͨ¹ýÒ»¸ö¹²Í¬µÄAPIÍø¹Ø½øÐиºÔؾùºâºÍ±©Â¶½Ó¿Ú£¬Ã¿Ò»¸ö·þÎñÒ²»á×Ô¶¯·¢ÏÖ²¢½«Â·ÓÉÇëÇóת·¢µ½×Ô¼ºµÄ·ÓÉ·þÎñÖС£Õâ¸ö´úÀí¼¼ÊõÓÐÖúÓÚ¿ª·¢Óû§½çÃæ£¬×÷Ϊƽ̨ÍêÕûµÄ
APIͨ¹ý×Ô¼ºµÄÖ÷»úÓ³ÉäΪ´úÀí·þÎñ¡£
Docker ʵÀý
ÏÂÃæµÄʵÀý½«»áͨ¹ýMavenÀ´¹¹½¨£¬Ê¹ÓÃDockerΪÿһ¸ö΢·þÎñ¹¹½¨ÈÝÆ÷¾µÏñ¡£ÎÒÃÇ¿ÉÒÔºÜÓÅÑŵÄʹÓÃDocker
ComposeÔÚÎÒÃÇ×Ô¼ºµÄÖ÷»úÉϴȫ²¿µÄ΢·þÎñ¼¯Èº¡£
¿ªÊ¼¹¹½¨
ÔÚÕâ֮ǰ£¬ÇëÏÈÒÆ²½ÖÁÏîÄ¿µÄGitHub ²Ö¿â¡£
https://github.com/kbastani/spring-cloud-microservice-example
¿Ë¡»òÕßforkÕâ¸öÏîÄ¿²¢ÇÒ°ÑÔ´ÂëÏÂÔØµ½×Ô¼ºµÄµçÄÔÉÏ¡£ÏÂÔØÍê±Ïºó£¬ÄãÐèҪʹÓÃMavenºÍDockerÀ´±àÒëºÍ¹¹½¨±¾µØµÄÈÝÆ÷¾µÏñ¡£
ÏÂÔØDocker
Ê×ÏÈ£¬Èç¹ûÄ㻹ûÓÐDockerÇëÏÈÏÂÔØËü¡£¿ÉÒÔ¸úËæÕâ¸öÖ¸ÄÏÀ´»ñÈ¡Docker:https://docs.docker.com/installation/£¬È»ºóÔÚ¿ª·¢»úÉϰ²×°²¢ÔËÐС£
µ±È»ÄãÒ²ÐèÒª°²×°Docker Compose(https//docs.docker.com/compose/)£¬Õâ¸öÖ¸ÄϽ«»á°ïµ½Äã:https://docs.docker.com/compose/install/¡£
»·¾³ÒªÇó
Äܹ»ÔËÐÐʵÀý³ÌÐò£¬ÐèÒªÔÚÄãµÄ¿ª·¢»úÉϰ²×°ÏÂÃæµÄÈí¼þ£º
Maven 3
Java 8
Docker
Docker Compose
¹¹½¨ÏîÄ¿
ͨ¹ýÃüÁîÐз½Ê½À´¹¹½¨µ±Ç°ÏîÄ¿£¬ÔÚÏîÄ¿µÄ¸ùĿ¼ÖÐÔËÐÐÈçϵÄÃüÁ
ÏîÄ¿½«»á¸ù¾Ýpom.xmlÖеÄÿһ¸öÏîÄ¿ÉùÃ÷ÖÐÏÂÔØÏàÓ¦µÄÒÀÀµjar°ü¡£Ã¿Ò»¸ö·þÎñ¶¼½«»á±»¹¹½¨£¬Í¬Ê±MavenµÄDocker²å¼þ½«»á×Ô¶¯´Ó±¾µØDocker
RegistryÖй¹½¨Ã¿Ò»¸öÈÝÆ÷¾µÏñ¡£Docker½«»áÔÚ¹¹½¨³É¹¦ºó£¬¸ù¾ÝÃüÁîÐÐÔËÐÐmvn clean installÀ´Çå³ýÏàÓ¦µÄ×ÊÔ´¡£
ÔÚÏîÄ¿³É¹¦¹¹½¨ºó£¬Ä㽫»á¿´µ½ÈçϵÄÊä³ö£º

ͨ¹ýDocker compose Æô¶¯¼¯Èº
ÏÖÔÚÿһ¸ö¾µÏñ¶¼³É¹¦¹¹½¨Íê±Ï£¬ÎÒÃÇʹÓÃDocker ComposeÀ´¼ÓËÙÆô¶¯ÎÒÃǵļ¯Èº¡£ÎÒÒѾ½«Docker
ComposeµÄyamlÎļþ°üº¬½øÁËÏîÄ¿ÖУ¬´ó¼Ò¿ÉÒÔ´ÓGitHubÉÏ»ñÈ¡¡£
ÏÖÔÚÎÒÃÇͨ¹ýÏÂÃæµÄÃüÁîÐÐÆô¶¯Î¢·þÎñ¼¯Èº£º
Èç¹ûÒ»ÇÐÅäÖö¼ÊÇÕýÈ·µÄ£¬Ã¿Ò»¸öÈÝÆ÷¾µÏñ½«»áͨ¹ýÔÚDockerÉϵÄÐéÄâÈÝÆ÷ºÍ×Ô¶¯·¢ÏÖµÄÍøÂç·þÎñÀ´ÔËÐС£µ±ËûÃÇ¿ªÊ¼Ë³ÐòÆô¶¯Ê±£¬Ä㽫»á¿´µ½Ò»ÏµÁеÄÈÕÖ¾Êä³ö¡£Õâ¿ÉÄÜÐèÒªÒ»¶Îʱ¼äÀ´Íê³É£¬È¡¾öÓÚÔËÐÐÄãʵÀý³ÌÐòµÄ»úÆ÷ÐÔÄÜ¡£
Ò»µ©ÈÝÆ÷Æô¶¯³É¹¦£¬Ä㽫»áͨ¹ýEurekaÖ÷»ú¿´µ½Í¨¹ýDiscovery service×¢²áÉÏÀ´µÄÓ¦Ó÷þÎñ¡£
ͨ¹ýÃüÁîÐÐÖն˸´ÖÆÕ³ÌùÏÂÃæµÄÃüÁîµ½DockerÖж¨ÒåµÄ$DOCKER_HOST»·¾³±äÁ¿ÖС£
$ open $(echo \"$(echo $DOCKER_HOST)\"| \sed 's/tcp:\/\//http:\/\//g'| \sed 's/[0-9]\{4,\}/8761/g'| \sed 's/\"//g') |
Èç¹ûEurekaÕýÈ·µÄÆô¶¯£¬ä¯ÀÀÆ÷½«»áÆô¶¯²¢´ò¿ªEureka·þÎñµÄÒDZíÅÌ£¬ÈçÏÂͼËùʾ£º

ÎÒÃǽ«»á¿´µ½Ã¿Ò»¸öÕýÔÚÔËÐеķþÎñʵÀýºÍ״̬¡£Í¨¹ýÏÂÃæµÄÃüÁîÀ´»ñÈ¡Êý¾ÝÇý¶¯·þÎñ£¬ÀýÈç movie ·þÎñ¡£
¡¡¡¡$ open $(echo \"$(echo $DOCKER_HOST)/movie\"| \sed 's/tcp:\/\//http:\/\//g'|
\sed 's/[0-9]\{4,\}/10000/g'| \sed 's/\"//g') |
Õâ¸öÃüÁ»á·ÃÎʸù¾Ýµ¼º½Íø¹ØÖÕ¶ËÌṩµÄ´úÀí·½Ê½·ÃÎÊmovie·þÎñµÄREST APIÖÕ¶Ë¡£ÕâЩREST
APIʹÓà HATEOAS À´ÅäÖã¬ËüÊÇÒ»¸öͨ¹ýÄÚǶÁ´½ÓµÄ·½Ê½Ö§³Ö×Ô¶¯·¢ÏÖ·þÎñµÄ½Ó¿Ú¡£
{ "_links" : { "self" : { "href" : "http://192.168.59.103:10000/movie" },
"resume" : { "href" : "http://192.168.59.103:10000/movie/resume" },
"pause" : { "href" : "http://192.168.59.103:10000/movie/pause" },
"restart" : { "href" : "http://192.168.59.103:10000/movie/restart" },
"metrics" : { "href" : "http://192.168.59.103:10000/movie/metrics" },
"env" : [ { "href" : "http://192.168.59.103:10000/movie/env" },
{ "href" : "http://192.168.59.103:10000/movie/env" } ],
"archaius" : { "href" : "http://192.168.59.103:10000/movie/archaius" },
"beans" : { "href" : "http://192.168.59.103:10000/movie/beans" },
"configprops" : { "href" : "http://192.168.59.103:10000/movie/configprops" },
"trace" : { "href" : "http://192.168.59.103:10000/movie/trace" },
"info" : { "href" : "http://192.168.59.103:10000/movie/info" },
"health" : { "href" : "http://192.168.59.103:10000/movie/health" },
"hystrix.stream" : { "href" : "http://192.168.59.103:10000/movie/hystrix.stream" },
"routes" : { "href" : "http://192.168.59.103:10000/movie/routes" },
"dump" : { "href" : "http://192.168.59.103:10000/movie/dump" },
"refresh" : { "href" : "http://192.168.59.103:10000/movie/refresh" },
"mappings" : { "href" : "http://192.168.59.103:10000/movie/mappings" },
"autoconfig" : { "href" : "http://192.168.59.103:10000/movie/autoconfig" } } } |
×ܽá
ÕâÊÇʹÓÃSpring CloudºÍDocker¹¹½¨Î¢·þÎñ¼Ü¹¹µÄϵÁв©ÎĵĵÚÒ»²¿·Ö¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽӴ¥µ½ÁËÈçϵĸÅÄî:
Service Discovery
Externalized Configuration
API Gateway
Service Orchestration with Docker Compose
|