eureka 注冊中心 pom:spring-cloud-starter-eureka-server 服務端 啟動類上@EnableEurekaServer application.xml eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 客戶端 啟動類上@EnableEurekaClient ribbon 負載均衡客戶端 pom:spring-cloud-starter-ribbon 啟動類 @EnableDiscoveryClient 注冊服務到客戶端 @LoadBalanced注解表明這個restRemplate開啟負載均衡的功能。 feigin Feign 主要做服務調用 默認集成了ribbon,采用的是基於接口的注解 pom:spring-cloud-starter-eureka spring-cloud-starter-feign 啟動類上@EnableDiscoveryClient @EnableFeignClients :啟用服務注冊與發現:啟用feign進行遠程調用 @FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi",method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); } 調用這個SchedualServiceHi.sayHiFromClientOne方法時 其實是調用的 服務名為service-hi,/hi的服務 Hystrix 熔斷器 application.xml feign.hystrix.enabled=true 創建一個實現類 HelloRemoteHystrix 實現該接口 然后對應方法進行熔斷回調 對應接口加上 熔斷回調的注解 @FeignClient(value = "service-hi" fallback = HelloRemoteHystrix.class) zuul Zuul的主要功能是路由轉發和過濾器。負載均衡 pom :spring-cloud-starter-zuul 啟動類 @EnableZuulProxy application.xml zuul.routes.api-a.path=/demand/** zuul.routes.api-a.serviceId=sybus-demand-service 前綴為 /demand/的請求都轉發給 sybus-demand-service服務 (路由) 代理注冊在eureka上的服務,實現在服務端的負載均衡。 過濾: 攔截非法請求 定義多個攔截器繼承ZuulFilter public class MyFilter extends ZuulFilter{ private static Logger log = LoggerFactory.getLogger(MyFilter.class); //過濾類型 有pre:路由之前 routing:路由之時 post: 路由之后 error:發送錯誤調用 @Override public String filterType() { return "pre"; } //過濾的順序 @Override public int filterOrder() { return 0; } //本文true,永遠過濾。 @Override public boolean shouldFilter() { return true; } //run:過濾器的具體邏輯。可用很復雜,包括查sql,nosql去判斷該請求到底有沒有權限訪問 @Override public Object run() { } }
eureka 注冊中心pom:spring-cloud-starter-eureka-server 服務端 啟動類上@EnableEurekaServer application.xmleureka: instance:hostname: localhost client:registerWithEureka: falsefetchRegistry: falseserviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/客戶端 啟動類上@EnableEurekaClient ribbon 負載均衡客戶端 pom:spring-cloud-starter-ribbon啟動類 @EnableDiscoveryClient 注冊服務到客戶端@LoadBalanced注解表明這個restRemplate開啟負載均衡的功能。feigin Feign 主要做服務調用 默認集成了ribbon,采用的是基於接口的注解pom:spring-cloud-starter-eureka spring-cloud-starter-feign 啟動類上@EnableDiscoveryClient @EnableFeignClients :啟用服務注冊與發現:啟用feign進行遠程調用@FeignClient(value = "service-hi")public interface SchedualServiceHi {@RequestMapping(value = "/hi",method = RequestMethod.GET)String sayHiFromClientOne(@RequestParam(value = "name") String name);}調用這個SchedualServiceHi.sayHiFromClientOne方法時 其實是調用的 服務名為service-hi,/hi的服務
Hystrix 熔斷器 application.xml feign.hystrix.enabled=true 創建一個實現類 HelloRemoteHystrix 實現該接口 然后對應方法進行熔斷回調 對應接口加上 熔斷回調的注解 @FeignClient(value = "service-hi" fallback = HelloRemoteHystrix.class) zuul Zuul的主要功能是路由轉發和過濾器。負載均衡 pom :spring-cloud-starter-zuul 啟動類 @EnableZuulProxy application.xml zuul.routes.api-a.path=/demand/**zuul.routes.api-a.serviceId=sybus-demand-service前綴為/demand/的請求都轉發給 sybus-demand-service服務 (路由)代理注冊在eureka上的服務,實現在服務端的負載均衡。過濾: 攔截非法請求 定義多個攔截器繼承ZuulFilterpublic class MyFilter extends ZuulFilter{
private static Logger log = LoggerFactory.getLogger(MyFilter.class);//過濾類型 有pre:路由之前 routing:路由之時 post: 路由之后 error:發送錯誤調用@Overridepublic String filterType() {return "pre";}//過濾的順序@Overridepublic int filterOrder() {return 0;}//本文true,永遠過濾。@Overridepublic boolean shouldFilter() {return true;}//run:過濾器的具體邏輯。可用很復雜,包括查sql,nosql去判斷該請求到底有沒有權限訪問@Overridepublic Object run() {}}