SpringCloud Gateway(三)自定义全局过滤器

全局过滤器 很多时候Gateway内置的过滤器工厂不能够覆盖我们的业务需求,难免我们会进行自定义过滤器工厂,说白了就是我们需要自定义http请求的匹配逻辑,可以是从URL请求的各个地方切入做逻辑的匹配,当匹配通过后执行对应匹配的微服务,所以一个简单的自定义过滤器拦截实现处理。在Gateway中的过滤器区分全局和局部的过滤器,前者只需要定义声明即可,后者除了定义声明以外还需要在路由规则中进行使用声明,即全局过滤器对所有的路由请求均生效;局部过滤器只对声明了的路由才起作用。 一个用于统计请求耗时的全局过滤器实现如下: packagecn.chendd.cofig.filters; import... /** *request请求耗时全局过滤器 * *@authorchendd *@date2022/12/2721:12 */ @Component publicclassRequestCon...

文章分类:后端一部分 Spring Cloud

Gateway

SpringCloud Gateway(二)自定义谓词工厂

很多时候Gateway内置的谓词工厂不能够覆盖我们的业务需求,难免我们会进行自定义谓词工厂,说白了就是我们需要自定义http请求的匹配逻辑,可以是从URL请求的各个地方切入做逻辑的匹配,当匹配通过后执行对应匹配的微服务,所以一个简单的自定义谓词工厂的示例参考如下代码所示: 配置参数 spring: application: name:chendd-gateway #gateway网关 gateway: discovery: locator: #开启当前项目的服务注册与发现功能 enabled:true #把服务名转换为小写 lower-case-service-id:true routes: #匹配nacos-client路径下的所有子路径路由 -id:nacos-client-urlContains uri:lb://chendd-nacos-client order:10010 pre...

文章分类:后端一部分 Spring Cloud

Gateway

SpringCloud Gateway(一)简单认识

背景介绍 SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty,Spring Cloud Gateway需要Spring Boot和Spring Webflux提供的N...

文章分类:后端一部分 Spring Cloud

Gateway

JWT(2)对称加密和非对称加密

对称加密 packagecn.chendd.jjwt; /** *对称加密简单示例 * *@authorchendd *@date2022/11/69:02 */ @RunWith(JUnit4.class) publicclassJjwtShaTest{ @Test publicvoidtest(){ //生成随机key StringjwtTokenRandomKey=Jwts.builder().setPayload("chendd").signWith(Keys.secretKeyFor(SignatureAlgorithm.HS256)).compact(); System.out.println("随机密钥key生成Token:"+jwtTokenRandomKey); System.out.println("--------------------------------...

文章分类:后端一部分 Spring Cloud

JWT

JWT(1)简介和基础示例

基础知识 JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对签名。简单来说,JWT就是通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输,这个令牌Token,是一串字符串,三部分组成:标头(Header)、有效载荷(Payload)、签名(Signature),它的数据被分为以“.”分割的三段文本,格式如:xxx.yyy.zzz,其中xxx和yyy是使用Base64编码的文本,可将这两部分的数据直接采用Base64解码得到原始的文本数据,所以在这两段的文本中xxx是定义当前的Token加密方式;yyy部分是存储Token解码后...

文章分类:后端一部分 Spring Cloud

JWT

SpringBoot Admin (四)项目根路径的问题参考

本篇文章则显得像是个人笔记了,在项目搭建集成nacos和admin监控过程中无意中的改写导致的问题,原因是当项目配置context-path为空白值和为/时,在访问项目的根路径无区别,但是在集成服务监控时会导致多出一个/,带来无法正确集成成功的问题,详细参考下图: (gateway项目的application配置) (gateway项目的启动控制台日志) (监控集成出现问题)...

文章分类:后端一部分 Spring Cloud

SpringBoot Admin

SpringBoot Admin (三)在线滚动日志和实现原理

背景介绍 你信吗,就因为多看了一眼,就有了本文以及本文背后的那么多时间和实践。有一次在运维同事那边分析问题时,起初期望拿到日志文件的log,不经意的发现别的组的同事同样查看日志时是在SpringBoot Admin提供的功能页面上看到的,当时就觉得真酷炫,牛X了。要搁我看来单独的写一个日志文件下载的或者在线展示列表的功能还是不错的,对于大日志文件的实时滚动输出我还没想过呢,不过这个亮点在我心里扎根了,这不在我学习SpringBoot Admin时并未发现这个功能,于是找啊找,改啊改,终于在结合我的使用经验后得到了我期望的预期。 对于日志配置这块个人比较倾向于在application.yml中配置logback.xml的路径,所有的日志相关的配置全在logback.xml中进行设置,不推荐在直接在application.yml中进行设置,本时这个主文件就是个大杂烩,何不把日志的配置给剥离出去...

文章分类:后端一部分 Spring Cloud

SpringBoot Admin

SpringBoot Admin (二)计划任务增强

背景介绍 前面一篇在介绍了SpringBoot Admin的基本介绍和配置集成后,本篇对于计划任务做一个小小的增强。在介绍之前我们先看下图,展示了系统内的所有的计划(定时)任务列表,分为两列分别是类方法的限定路径和定时触发策略的表达式,不难看出该列表没有对定时任务的说明或描述做实现,若系统存在几十上百的定时任务时,基本上很难知晓各个定时任务的具体含义,除非方法的名称定义成中文(这么干能行,但合适吗,科学吗),图片如下: 本次增强的实现在于对源代码的简单分析后,尝试修改的结果。实现方式通过对SpringBoot的定时任务函数增加自定义注解声明注解的含义,且通过反射拿到注解的数据并将数据追加至列表展示的属性中,所以增强后的列表展示效果如下图所示: 代码参考 packagecn.chendd.task; import...; /** *SpringBootAdmin计划任务增强 * *@au...

文章分类:后端一部分 Spring Cloud

SpringBoot Admin

SpringBoot Admin (一)基本介绍与配置集成

基本说明 SpringBoot Admin是对Spring Boot应用程序提供的管理UI界面集成,区分Server和Client端,使用Http接口对外提供监控参数输出。提供的管理功能丰富多样,如Insights、日志配置、JVM、映射、缓存等多个功能的接入,同时对于注册的服务状态可以适时的呈现,详细展示如下: Insights 细节:信息、健康、元数据、进程、线程、垃圾回收、内存: Heap、内存: Non heap; 性能:给指定服务增加监控状态指标; 环境:输出application.yml和Jvm启动时包含的参数,如:java.home、user.dir等; 类:输出Spring Bean的实例名称和类型; 配置属性:spring.boot.admin、inetUtilsProperties、serviceInstanceConverter、management.endpoint...

文章分类:后端一部分 Spring Cloud

SpringBoot Admin

Nacos (二) 客户端简单集成

版本介绍 本次Nacos的客户端示例不再是一个纯净的Spring Boot项目,而是作为个人在学习Spring Cloud系列技术的一部分,所以它隶属于我的Spring Cloud项目示例中。首先创建Spring Cloud项目,再创建nacos-client模块,重点在于需要先明确Spring Boot和对应的Spring Cloud版本匹配,可以从“https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明”选择匹配的版本,本次实践选择的Spring Boot版本为:2.4.2,Spring Cloud Alibaba版本为2021.1,参考如下图所示: 另外在集成Spring Boot时最好是继承spring-boot-starter-parent模块,可以在加载很多的组件时省略版本号。 代码集成 关于代码集成部分给出关键部分,...

文章分类:后端一部分 Spring Cloud

Nacos
本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云