±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚCSDN£¬±¾ÎĽ²½âµÄÊÇÒ»¸ö»ùÓÚ
Spring Boot¡¢Spring Cloud¡¢Spring Oauth2 ºÍ
Spring Cloud Netflix µÈ¿ò¼Ü¹¹½¨µÄ΢·þÎñÏîÄ¿¡£ |
|
¼¼ÊõÕ»
Spring boot - ΢·þÎñµÄÈëÃż¶Î¢¿ò¼Ü£¬ÓÃÀ´¼ò»¯ Spring Ó¦Óõijõʼ´î½¨ÒÔ¼°¿ª·¢¹ý³Ì¡£
Eureka - ÔÆ¶Ë·þÎñ·¢ÏÖ£¬Ò»¸ö»ùÓÚ REST µÄ·þÎñ£¬ÓÃÓÚ¶¨Î»·þÎñ£¬ÒÔʵÏÖÔÆ¶ËÖмä²ã·þÎñ·¢Ïֺ͹ÊÕÏ×ªÒÆ¡£
Spring Cloud Config - ÅäÖùÜÀí¹¤¾ß°ü£¬ÈÃÄã¿ÉÒÔ°ÑÅäÖ÷ŵ½Ô¶³Ì·þÎñÆ÷£¬¼¯Öл¯¹ÜÀí¼¯ÈºÅäÖã¬Ä¿Ç°Ö§³Ö±¾µØ´æ´¢¡¢Git
ÒÔ¼° Subversion¡£
Hystrix - ÈÛ¶ÏÆ÷£¬ÈÝ´í¹ÜÀí¹¤¾ß£¬Ö¼ÔÚͨ¹ýÈÛ¶Ï»úÖÆ¿ØÖÆ·þÎñºÍµÚÈý·½¿âµÄ½Úµã,´Ó¶ø¶ÔÑӳٺ͹ÊÕÏÌṩ¸üÇ¿´óµÄÈÝ´íÄÜÁ¦¡£
Zuul - Zuul ÊÇÔÚÔÆÆ½Ì¨ÉÏÌṩ¶¯Ì¬Â·ÓÉ£¬¼à¿Ø£¬µ¯ÐÔ£¬°²È«µÈ±ßÔµ·þÎñµÄ¿ò¼Ü¡£Zuul Ï൱ÓÚÊÇÉ豸ºÍ
Netflix Á÷Ó¦ÓÃµÄ Web ÍøÕ¾ºó¶ËËùÓÐÇëÇóµÄǰÃÅ¡£
Spring Cloud Bus - ʼþ¡¢ÏûÏ¢×ÜÏߣ¬ÓÃÓÚÔÚ¼¯Èº£¨ÀýÈ磬ÅäÖñ仯ʼþ£©Öд«²¥×´Ì¬±ä»¯£¬¿ÉÓë
Spring Cloud Config ÁªºÏʵÏÖÈȲ¿Êð¡£
Spring Cloud Sleuth - ÈÕÖ¾ÊÕ¼¯¹¤¾ß°ü£¬·â×°ÁË Dapper ºÍ log-based
×·×ÙÒÔ¼° Zipkin ºÍ HTrace ²Ù×÷£¬Îª SpringCloud Ó¦ÓÃʵÏÖÁËÒ»ÖÖ·Ö²¼Ê½×·×Ù½â¾ö·½°¸¡£
Ribbon - Ìá¹©ÔÆ¶Ë¸ºÔؾùºâ£¬ÓжàÖÖ¸ºÔؾùºâ²ßÂԿɹ©Ñ¡Ôñ£¬¿ÉÅäºÏ·þÎñ·¢ÏֺͶÏ·Æ÷ʹÓá£
Turbine - Turbine ÊǾۺϷþÎñÆ÷·¢ËÍʼþÁ÷Êý¾ÝµÄÒ»¸ö¹¤¾ß£¬ÓÃÀ´¼à¿Ø¼¯ÈºÏ hystrix
µÄ metrics Çé¿ö¡£
Spring Cloud Stream - Spring Êý¾ÝÁ÷²Ù×÷¿ª·¢°ü£¬·â×°ÁËÓë Redis¡¢Rabbit¡¢Kafka
µÈ·¢ËͽÓÊÕÏûÏ¢¡£
Feign - Feign ÊÇÒ»ÖÖÉùÃ÷ʽ¡¢Ä£°å»¯µÄ HTTP ¿Í»§¶Ë¡£
Spring Cloud OAuth2 - »ùÓÚ Spring Security ºÍ OAuth2
µÄ°²È«¹¤¾ß°ü£¬ÎªÄãµÄÓ¦ÓóÌÐòÌí¼Ó°²È«¿ØÖÆ¡£
Ó¦Óüܹ¹
¸ÃÏîÄ¿°üº¬ 8 ¸ö·þÎñ
registry - ·þÎñ×¢²áÓë·¢ÏÖ
config - ÍⲿÅäÖÃ
monitor - ¼à¿Ø
zipkin - ·Ö²¼Ê½¸ú×Ù
gateway - ´úÀíËùÓÐ΢·þÎñµÄ½Ó¿ÚÍø¹Ø
auth-service - OAuth2 ÈÏÖ¤·þÎñ
svca-service - ÒµÎñ·þÎñA
svcb-service - ÒµÎñ·þÎñB
Ìåϵ¼Ü¹¹

Ó¦ÓÃ×é¼þ

Æô¶¯ÏîÄ¿
ʹÓà Docker ¿ìËÙÆô¶¯
ÅäÖÃ Docker »·¾³
mvn clean package ´ò°üÏîÄ¿¼° Docker ¾µÏñ
ÔÚÏîÄ¿¸ùĿ¼ÏÂÖ´ÐÐ docker-compose up -d Æô¶¯ËùÓÐÏîÄ¿
±¾µØÊÖ¶¯Æô¶¯
ÅäÖÃ rabbitmq
ÐÞ¸Ä hosts ½«Ö÷»úÃûÖ¸Ïòµ½±¾µØ
127.0.0.1 registry config monitor rabbitmq auth-service
»òÕßÐ޸ĸ÷·þÎñÅäÖÃÎļþÖеÄÏàÓ¦Ö÷»úÃûΪ±¾µØ ip
Æô¶¯ registry¡¢config¡¢monitor¡¢zipkin
Æô¶¯ gateway¡¢auth-service¡¢svca-service¡¢svcb-service
ÏîĿԤÀÀ
×¢²áÖÐÐÄ
·ÃÎÊ http://localhost:8761/ ĬÈÏÕ˺Šuser£¬ÃÜÂë password

¼à¿Ø
·ÃÎÊ http://localhost:8040/ ĬÈÏÕ˺Šadmin£¬ÃÜÂë admin
¿ØÖÆÃæ°å 
Ó¦ÓÃ×¢²áÀúÊ· 
Turbine HystrixÃæ°å 
Ó¦ÓÃÐÅÏ¢¡¢½¡¿µ×´¿ö¡¢À¬»ø»ØÊÕµÈÏêÇé 
¼ÆÊýÆ÷ 
²é¿´ºÍÐ޸Ļ·¾³±äÁ¿ 
¹ÜÀí Logback ÈÕÖ¾¼¶±ð 
²é¿´²¢Ê¹Óà JMX 
²é¿´Ïß³Ì 
ÈÏÖ¤ÀúÊ· 
²é¿´ Http ÇëÇó¹ì¼£ 
Hystrix Ãæ°å 
Á´Â·¸ú×Ù
·ÃÎÊ http://localhost:9411/ ĬÈÏÕ˺Šadmin£¬ÃÜÂë admin
¿ØÖÆÃæ°å 
Á´Â·¸ú×ÙÃ÷ϸ 
·þÎñÒÀÀµ¹ØÏµ 
RabbitMQ ¼à¿Ø
Docker Æô¶¯·ÃÎÊ http://localhost:15673/ ĬÈÏÕ˺Šguest£¬ÃÜÂë
guest£¨±¾µØ rabbit ¹ÜÀíϵͳĬÈ϶˿Ú15672£©

½Ó¿Ú²âÊÔ
1.»ñÈ¡ Token
curl -X POST
-vu client:secret http://localhost:8060/ uaa/oauth/token
-H "Accept: application/json" -d "password=password&username=anil&grant_type=password &scope=read%20write"
|
·µ»ØÈçϸñʽÊý¾Ý£º
{ "access_token":
"eac56504-c4f0-4706-b72e-3dc3acdf45e9",
"token_type": "bearer",
"refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",
"expires_in": 3599, "scope":
"read write"
}
|
2.ʹÓà access token ·ÃÎÊ service a ½Ó¿Ú
curl -i -H "Authorization:
Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9"
http://localhost:8060/svca |
·µ»ØÈçÏÂÊý¾Ý£º
svca-service
(172.18.0.8:8080)===>name:zhangxd
svcb-service (172.18.0.2:8070)===>Say Hello |
3.ʹÓà access token ·ÃÎÊ service b ½Ó¿Ú
curl -i -H "Authorization:
Bearer eac56504-c4f0-4706-b72e-3dc3acdf45e9"
http://localhost:8060/svcb |
·µ»ØÈçÏÂÊý¾Ý£º
svcb-service
(172.18.0.2:8070)===>Say Hello |
4.ʹÓà refresh token ˢРtoken
curl -X POST
-vu client:secret http://localhost:8060/uaa/oauth/token
-H "Accept: application/json" -d "grant_type=refresh_token&refresh_token=da1007dc-683c-4309-965d-370b15aa4aeb" |
·µ»Ø¸üкóµÄ Token£º
{ "access_token":
"63ff57ce-f140-482e-ba7e-b6f29df35c88",
"token_type": "bearer",
"refresh_token": "da1007dc-683c-4309-965d-370b15aa4aeb",
"expires_in": 3599, "scope":
"read write"
} |
5.Ë¢ÐÂÅäÖÃ
curl -X POST
-vu user:password http://localhost:8888/bus/refresh |
|