springcloud 及組件的基本使用


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() {}}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM