前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ZLT-MP v5.3.0 发布

ZLT-MP v5.3.0 发布

作者头像
陶陶技术笔记
发布2022-05-30 18:04:54
3820
发布2022-05-30 18:04:54
举报
文章被收录于专栏:陶陶技术笔记陶陶技术笔记

架构图

功能介绍

更新内容

特性/增强

  • 增加服务版本号隔离
  • 优化授权中心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

代码语言:javascript
复制
zlt:
  loadbalance:
    isolation:
      enabled: true
1.3.2. 服务版本配置

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

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

代码语言:javascript
复制
spring:
  cloud:
    nacos:
      discovery:
        metadata:
          version: zlt

或者

代码语言:javascript
复制
zlt:
  loadbalance:
    version: zlt

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

1.3.3. 版本入参

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

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

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

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

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

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

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

贡献列表

非常感谢以下同学对本版本的贡献:

  • @jarivs
  • @lpphan

项目地址

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/936235

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陶陶技术笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 更新内容
    • 特性/增强
    • 内容说明
      • 一、服务版本号隔离
        • 1.1. 适用场景
        • 1.2. 隔离逻辑
        • 1.3. 使用说明
      • 二、优化授权中心redis-token内存占用
        • 三、适配 mybatis-plus 拦截器新配置方式
        • 贡献列表
        • 项目地址
        • 项目文档
        • 项目更新日志
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档