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