天天看點

springcloud元件搭建fegin/ribbon/hystrix/config

eureka

1、添加依賴

<!--提供注冊中心服務依賴開始-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
 <!--提供注冊中心依賴服務結束-->
  <!--springcloud依賴開始-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Dalston.SR4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  <!--springcloud依賴結束-->
           

2、在核心配置類上添加注解

@EnableEurekaServer
           

3、在配置檔案中添加以下配置

server:
 port: 8761//預設端口号
eureka:
 instance:
   hostname: localhost
 client:
   #不注冊自己
   registerWithEureka: false
   #不檢索服務
   fetchRegistry: false
   serviceUrl:
     defaultZone: http://${eureka.instance.hostname}:${server.port}
           

消費者與服務者搭建

1.添加依賴

<!--提供向注冊中心注冊依賴開始-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!--提供向注冊中心注冊依賴結束-->
           

2、核心配置類添加注解

@EnableEurekaClient
           

3、添加配置

server:
  port: 8762
spring:
  application:
    name: wxf-springcloud-web
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
           

feign

1、添加依賴

<!--fegin依賴開始-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<!--fegin依賴結束-->
<!--google工具類依賴開始-->
<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>27.1-jre</version>
</dependency>
<!--google工具類依賴結束-->
           

2、添加注解到核心配置類上

@EnableFeignClients
           

3、 寫接口 ,接口寫在調用者的服務中

在接口類上,添加以下注解

@FeignClient(name = "wxf-springcloud-service") //這裡的name是你想調用服務的name
           

在接口方法上

@GetMapping(value = "api/show") //這裡的請求方式是根據你想請求的接口的類型來定義的 這裡的value是你想請求接口的uri
           

hystrix

1 、添加依賴

因為我們的spring-cloud-starter-feign依賴中包含了熔斷相關依賴所有不用單獨引用了

2、添加配置

feign:
  hystrix:
    enabled: true
           

3、添加注解

在@FeignClient中添加fallback 它的值為指定熔斷的class,繼承接口,并用@conpinent進行諸如,這個class是要實作需要熔斷的類,實作他其中的方法即可;

Ribbon

1、在調用者中添加配

#服務名,添加到web層
wxf-springcloud-service:
  ribbon:
  #政策-随機
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
    #輪尋
    什麼都不添加,預設為輪尋
           

zuul

1、新建立一個項目

2、添加eureka依賴,讓zuul注冊;添加zuul依賴

<!--提供向注冊中心注冊依賴開始-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!--提供向注冊中心注冊依賴結束-->
      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
           

3、核心配置類添加注解

@EnableZuulProxy
           

4、添加配置

zuul:
  routes:
    api-b:
      path: /test/**
      serviceId: wxf-springcloud-web
           

5、自定義一個filter

建立一個類,并且讓這個類繼承zuulfilter,注入;重寫方法

filterType()
傳回pre等于在路由之前
傳回post等于在路由之後
傳回routing等于在之時
傳回error等于在發生錯誤時候
filterOrder()
filter順序
shouldFilter()
是否過濾
run()
filter時候自定義的一些方法
    RequestContext cxk = RequestContext.getCurrentContext();
        HttpServletRequest request = cxk.getRequest();
        //todo
        cxk.setSendZuulResponse(false);
        cxk.setResponseStatusCode(511);
        cxk.getResponse().getWriter().write();
           
@Component
public class FirstFilter extends ZuulFilter {
    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext cxk=RequestContext.getCurrentContext();
        HttpServletRequest request=cxk.getRequest();
        String token=request.getSession().getId();
        cxk.setSendZuulResponse(true);
        cxk.setResponseStatusCode(123);
        request.setAttribute("token",token);
        return null;
    }
}
           

config

建立一個項目config-server;提供配置的服務

1、添加依賴

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-server</artifactId>
</dependency>
           

2、添加注解

@EnableConfigServer 
           

3、添加配置

spring:
  cloud:
    config:
      server:
        git:
          uri: https://gitlab.com/kgc-springcloud/app-springcloud.git
          search-paths: clientconfig
          username: 17366031***@163.com
          password:
          force-pull: true
      label: master
           

建立一個項目config-client;提供配置的服務

1、添加依賴

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
           

2、添加配置

新的bootstrap.yml 檔案,看到這個檔案就要知道這是spring-cloud-config

spring:
  cloud:
    config:
      uri: http://localhost:8888/
      label: master
      profile: dev
  application:
    name: app //這裡是配置檔案的名稱的字首
           

繼續閱讀