文章目录
- Nacos配置管理
- 统一配置管理
- 配置热更新![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c8a2d17baeef411980b44b432eb9692a.png)
- 配置共享
- 搭建Nacos集群
- Feign远程调用
- 介绍
- 自定义配置
- 性能优化
- 最佳实践
- Gateway服务网关
- 介绍
- 搭建网关服务
- 路由断言工厂
- 路由过滤器
- 全局过滤器
- 过滤器执行顺序
- 跨域问题处理
Nacos配置管理
统一配置管理
在Controller层编辑测试类
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
结果
配置热更新
配置共享
搭建Nacos集群
Feign远程调用
介绍
新建接口类
@FeignClient("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findByID(@PathVariable("id") Long id);
}
服务端
@Autowired
private UserClient userClient;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
//2.Feign远程调用,查询用户
User user = userClient.findByID(order.getUserId());
//3.封装User到Order
order.setUser(user);
// 4.返回
return order;
}
自定义配置
性能优化
最佳实践
Gateway服务网关
介绍
搭建网关服务
路由断言工厂
路由过滤器
全局过滤器
@Component
@Order(-1)
public class AuthorizeFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//1.获取请求参数
ServerHttpRequest request = exchange.getRequest();
MultiValueMap<String, String> params = request.getQueryParams();
//2.获取参数中的authorization参数
String auth = params.getFirst("authorization");
//3.判断参数值是否等于admin
if ("admin".equals(auth)){
//4. 是,放行
return chain.filter(exchange);
}
//5. 否,拦截
//5.1设置状态码
exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
//5.2拦截请求
return exchange.getResponse().setComplete();
}
}
过滤器执行顺序
跨域问题处理