天天看点

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 //这里是配置文件的名称的前缀
           

继续阅读