SpringCloud OpenFeign(一)基本介绍与简单示例

基本介绍 Feign是一个声明式web服务客户端。它使编写web服务客户端更容易。要使用Feign,创建一个接口并对其进行注释。它具有可插入的注释支持,包括假注释和JAX-RS注释。fake还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并支持在Spring Web中默认使用相同的HttpMessageConverters。Spring Cloud集成了Eureka, Spring Cloud CircuitBreaker,以及Spring Cloud LoadBalancer,在使用Feign时提供一个负载平衡的http客户端。 在此前通过Http接口的请求交互可以是使用JDK内置的HttpURLConnection、Apache开源项目HttpClient、OkHttp、Spring提供的RestTemplate,以及Ribbon、Feig...

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

SpringCloud OpenFeign

SpringCloud Gateway(四)定制请求参数日志输出

背景介绍 其实在学习SpringCloud Gateway的过程中一直有在琢磨写个什么示例来证明一下这玩意我是懂一点的呢,也是反复琢磨和反复实践最终折腾出来的结果是编写过滤器获取一个http请求的所有参数,包含基本参数、Request Header、Response Header、Response等信息,说的高端一点就是拿到浏览器开发者工具F12的信息,所以我们先来看看一个复杂的F12请求包含了哪些类型的参数信息,如下图所示: 通过上图可以看到在一个http请求中有意义获取到的信息部分有:General、Request Headers、Response Headers、Qhery String Parameters、Response,有的http请求中参数使用Request Body传递的,这部分数据在Payload部分,所以在编写示例的时候专门定义了一个Http请求参数范围的枚举来按照范...

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

Gateway

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
本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云