zlt-mp v5.3.0 发布,基于 Spring Cloud Alibaba 的微服务平台

功能介绍

更新内容

特性 / 增强

  • 增加服务版本号隔离

  • 优化授权中心redis-token内存占用

  • 适配mybatis-plus拦截器新配置方式

  • 升级spring-boot到2.5.13

  • 升级spring-cloud到2020.0.5

  • 升级spring-boot-admin到2.5.6

  • 升级mybatis-plus到3.5.1内容说明

一、服务版本号隔离

1.1. 适用场景

这个是用于解决微服务服务冲突乱窜的问题;

指的是在开发环境过程中,开发人员可能只会在本地启动自己开发的服务进行调试,而其他服务则使用服务器上的;这样就可能会在注册中心中出现同一个服务同时存在多个不同版本的实例(如下图所示的业务服务B

这样如果 开发A 本来想要调试自己本地服务的时候,网关调用业务服务B时的请求则有可能会跳转到其他人的实例上,如服务器上的或者开发B的实例。

1.2. 隔离逻辑

本次更新主要是基于 Spring Cloud 的负载均衡组件 LoadBalancer,通过 版本号 来实现 自定义负载均衡 规则,解决这个服务乱窜问题;以上图为例,主要实例选择逻辑如下:

  1. 普通用户访问服务器上的页面时,请求的所有路由只调用 服务器实例

  2. 开发A访问时,请求的所有路由优先调用 开发A本机实例 如果没有则调用 服务器实例

  3. 开发B访问时同上,请求的所有路由优先调用 开发B本机实例 如果没有则调用 服务器实例

1.3. 使用说明

1.3.1. 开关配置

通过以下配置来设置是否开启 版本隔离 功能,默认为 false

zlt:
  loadbalance:
    isolation:
      enabled: true

1.3.2. 服务版本配置

使用注册中心的元数据(metadata)来区分版本。

主流的注册中心都带有元数据管理,以Nacos为例,可以在 Spring Cloud 的配置中通过以下两种方式添加服务的版本号:

spring:
  cloud:
    nacos:
      discovery:
        metadata:
          version: zlt

或者

zlt:
  loadbalance:
    version: zlt

启动服务后元数据就会注册上去,如下图所示:

1.3.3. 版本入参

开发人员可以通过 postman 工具调用接口的时候在 header参数 中添加自己的 版本号

二、优化授权中心redis-token内存占用

使用 redis-token 时,每授权一个 token 之后 security 会在 redis 中生成 client_id_to_access  uname_to_access 两个队列,分别用于存放某个 client_id 下的所有 access_token 以及某个 username 下的所有 access_token。

由于集合无法单独对元素进行过期时间设置,所以理论上如果一直有用户授权,会一直刷新集合的过期时间,导致内容无限扩大,存在 内存溢出 的风险。

本版本的解决方式:增加一个 redis 的销毁监听器,专门负责清除这两个集合下的过期数据。

三、适配 mybatis-plus 拦截器新配置方式

mybatis-plus 3.4 版本后分页拦截器 PaginationInterceptor 被弃用,替换成 MybatisPlusInterceptor

项目地址

Gitee 地址: https://gitee.com/zlt2000/microservices-platform

Github 地址: https://github.com/zlt2000/microservices-platform

项目文档

https://www.kancloud.cn/zlt2000/microservices-platform/919417

项目更新日志

https://www.kancloud.cn/zlt2000/microservices-platform/9362

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/194890/zlt-mp-5-3-0-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。