SpringCloud
1,Spring Cloud 是什么?
springcloud是一系列框架的有序集合,它基于SpringBoot的开发将一些成熟的框架做的一键部署,省去了复杂的配置和实现.SpringCloud的组件有发现注册中心,配置中心,智能路由,熔断器,跨域调用,消息总成,负载均衡等.
2,SpringCloud的优缺点?
优点:1,降低耦合度,模块容易维护
2,可以并行开发,提高开发效率
3,可以使用不同的开发语言,不同的数据库.
4,配置简单,基本可以使用注解就可以通过组件调用服务通信.
缺点:1,部署比较麻烦,给运维工程师带来一定的麻烦
2,维护比较麻烦,以为每个模块可以有自己的数据库
3,系统测试比较麻烦.
4,性能监控比较麻烦.
3. SpringBoot和SpringCloud的区别?
SpringBoot是用于快速简单开发单个个体的微服务,SpringCloud是依赖于SpringBoot 来集成管理治理各个微服务的全局协调的.
4,SpringCloud由什么组成?
1,nacos 注册发现中心
2,feign 声明式的web客户服务端. 像调用本地方法一样调用远程
3,断路器 防止一个服务导宕机致全体服务跟着雪崩
5,springcloudRibbon 客户端负载均衡,有轮询,
springgetways 网关
5,SpringCloud config 分布式同一配置管理
5,Spring Cloud 和dubbo区别?
1,dubbo的注册中心是zookeeper SpringCloud是eureka,也可以使用zookeeper.
2,dubbo的调用时RPC,cloud的是rest API
3,dubbo没有网关等服务.SpringCloud有断路器和git完美整个的配置中心的同一管理.支持版本控制
6,服务注册和发现是什么意思?Spring Cloud 如何实现?
随着服务越来越多,相互调用有错综复杂,如何某些服务地址更改,修改代码维护成本高.于是所有服务在SpringCloudEureka注册和发现,调用时通脱Eureka来完成.
Eureka
7,什么是Eureka的自我保护模式?
默认情况下,当Eureka在一定时间内检测不到某个微服务心跳时,EurekaService会启动自我保护,这时候EurekaService不会删除注册表中的数据,当网络恢复正常后,会自动退回自我保护模式.
8,Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别?
zookeeper是CP强制性行,Eureka是AP高可用.
当zk中主服务器挂了,进行选举时,注册服务不可用.而Eureka集群,只要还有一个服务器就可以正常使用
9,Eureka的使用步骤
1,添加依赖spring-cloud-starter-netflix-eureka-server.
2,配置application.yml文件
3.在引导类添加注解@EnableEurekaServer 这个好像是客户端的@EnableDiscoveryClient
1,ribbon是做什么的?
当服务提供者是一个集群是,使用使用DiscoveryClient获取服务访问的post和host时候,不太好实现赋值均衡的调用.ribbon提供一套完整的配置项,如超时,重试等.简单来说就是,在配置中列出所有的服务,ribbon基于某种规则(如简单轮询,随机连接等)帮你实现连接
2,负载平衡的意义什么?
负载平衡可以改善计算机网络,磁盘启动器,中央处理器等多种计算机资源工作的负载分布,旨在优化资源使用.也就是说干活多的让休息,干活少的加工作这种.
3,Nginx与Ribbon的区别?
NGINX是反向代理,客户端请求先发送到NGINX,NGINX在将请求进行转发
ribbon是客户端负载均衡,从注册中心读取到访问目标后,在客户端进行轮询策略对服务进行轮询访问,全程在客户端操作.
4,@LoadBalanced注解的作用?
开启客户端的负载均衡.
]
5,ribbon负载均衡策略
随机: RandomRule
轮询: RoundRobinRule
最小并发: BestAvailableRule
过滤: AvailabilityFilteringRule
响应时间: WeightedResponseTimeRule
轮询重试: RetryRule
性能可用性: ZoneAvoidanceRule
- id: contractInfo //服务spring name
uri: lb://contractInfo
predicates:
- Path=/contractInfo/**
3.2:在网关配置权限,白名单
继承 GlobalFilter接口,重写filter方法
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//获得请求和响应对象
ServerHttpRequest request = exchange.getRequest();
ServerHttpResponse response = exchange.getResponse();
AntPathMatcher matcher = new AntPathMatcher();
//对白名单中的地址放行
List<String> whiteList = whiteListConfig.getWhiteList(); //这里读取配置信息允许访问的路由- /system/login
for(String str : whiteList){
if(matcher.match(str, request.getURI().getPath())){
log.debug("白名单,放行{}",request.getURI().getPath());
return chain.filter(exchange);
}
}
implements GlobalFilter

浙公网安备 33010602011771号