我是靠谱客的博主 冷静小霸王,最近开发中收集的这篇文章主要介绍springCloud微服务学习笔记Zuul Fallback,SideCar,Config Serve,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

微服务之Zuul Fallback

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<!-- 不添加的华,zuul的路由页面无法访问 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

public class MyZuulFallback implements FallbackProvider


@Component
public class MyZuulFallback implements FallbackProvider {
@Override
public String getRoute() {
// 表明是为哪个微服务提供回退,*表示为所有微服务提供回退
// return "*";
return "provider-user";
}
@Override
public ClientHttpResponse fallbackResponse() {
return new ClientHttpResponse() {
@Override
public HttpStatus getStatusCode() throws IOException {
return HttpStatus.BAD_REQUEST;
}
@Override
public int getRawStatusCode() throws IOException {
return HttpStatus.BAD_REQUEST.value();
}
@Override
public String getStatusText() throws IOException {
return HttpStatus.BAD_REQUEST.getReasonPhrase();
}
@Override
public InputStream getBody() throws IOException {
return new ByteArrayInputStream(("出现错误" + getRoute()).getBytes());
}
@Override
public HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
return headers;
}
@Override
public void close() {
}
};
}
@Override
public ClientHttpResponse fallbackResponse(Throwable cause) {// 参数代表异常原因
if (cause instanceof HystrixTimeoutException) {
return this.fallbackResponse(cause);
} else {
return this.fallbackResponse();
}
}
}

启动类

@SpringBootApplication
@EnableZuulProxy//启动zuul,自带熔断和自动注册到eureka,需要导入eureka client依赖
public class ApiGetWayZuylApp {
public static void main(String[] args) {
SpringApplication.run(ApiGetWayZuylApp.class, args);
}
}

微服务之SideCar访问异构服务
如果项目比较大,不可能只有一种语言,非JVM的app

 

微服务之Zuul过滤器(安全控制,权限控制)


@Component
public class MyPreZuulFilter extends ZuulFilter{
/**
* 类型包含 pre post route error
* pre代表在路由代理之前
* route代表代理的时候执行
* error代表出现错的时候执行
* post代表在route或者是error执行完成后执行
*/
@Override
public String filterType() {
/*
* 在这里可以做登录验证,权限控制
*/
return "pre";
}
/**
* filter是一个链式调用,一个filter会电泳鞋面的一个filter,那如何知道顺序呢
* javeee中跟紧filter的配置先后顺序来决定
* zuul是根据order决定,越小的越先执行
*/
@Override
public int filterOrder() {
// TODO Auto-generated method stub
return 1;
}
/**
* 是否执行这个过滤器
*/
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() throws ZuulException {
return "过滤器执行了";
}
}
@SpringBootApplication
@EnableZuulProxy//启动zuul,自带熔断和自动注册到eureka,需要导入eureka client依赖
public class ApiGetWayZuylApp {
public static void main(String[] args) {
SpringApplication.run(ApiGetWayZuylApp.class, args);
}
}


微服务之Zuul高可用(搭建zuul集群)

微服务之Spring Cloud Config Server

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

很多服务经常变动,还有很多配置环境变量配置
很多配置文件配置这些都是开发的麻烦

云端版本控制

 

#配置文件的仓库地址
spring.cloud.config.server.git.url=https://gitee.com/javaljw/SpringCloud

Config Server通配符

#通配符
#spring.cloud.config.server.git.url=https://gitee.com/javaljw/{application}

Config Server模式匹配
 

#默认配置
spring.cloud.config.server.git.url=https://gitee.com/javaljw/SpringCloud
#当方位的是simple的时候执行
spring.cloud.config.server.git.simple.url=https://gitee.com/javaljw/simple
#当访问的是special并且符合以下规则的时候请求的url
spring.cloud.config.server.git.special.pattern=special*/dev*,special*/test*
spring.cloud.config.server.git.special.url=https://gitee.com/javaljw/special

Config Server搜做路径和密码
 

#启动时加载
spring.cloud.config.server.git.clone-on-start=true
#搜索匹配路径 以abc开头的会被转到abc目录
spring.cloud.config.server.git.search-paths=-abc,-def
#用户密码
spring.cloud.config.server.git.username=usuas
spring.cloud.config.server.git.password=asda


Config Server加解密


Config Server认证

修改pom
修改application文件
#开启认证,设置账户及密码
 

security.basic.enabled=true
security.user.name=user
security.password=123

config Client基本使用

application.properties文件

server.port=12900

 

bootstrap.properties文件

#配置configserver的地址必须放在bootstrap文件中
spging.cloud.config.url=http://localhost:11900/
spging.cloud.config.profile=dev
#当使用git的时候label默认是master
spging.cloud.config.label=master
#代表要找name+profile对应的文件
会找foobar开头的dev文件
spging.application.name=foobar

controller类

@RestController
public class ConfigClientController {
@Value("${profile}")
private String profile;
@GetMapping("/profile")
public String getProfile() {
return this.profile;
}
}

 

最后

以上就是冷静小霸王为你收集整理的springCloud微服务学习笔记Zuul Fallback,SideCar,Config Serve的全部内容,希望文章能够帮你解决springCloud微服务学习笔记Zuul Fallback,SideCar,Config Serve所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部