作者:王杰

干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_spring


项目地址

Gitee: https://gitee.com/log4j/pig

Github地址失效上Gitee: https://github.com/pig4cloud/pig

演示环境: http://pigx.pig4cloud.com

关于作者: https://gitee.com/gitee-stars/15

Pig Microservice Architecture

  • 基于 Spring Cloud Greenwich 、Spring Security OAuth2 的RBAC权限管理系统 (Zuul 版本参考 1.x 分支)
  • 基于数据驱动视图的理念封装 Element-ui,即使没有 vue 的使用经验也能快速上手
  • 提供对常见容器化支持 Docker、Kubernetes、Rancher2 支持
  • 提供 lambda 、stream api 、webflux 的生产实践

1. 项目核心

  • 一个注解接入OAuth 2.0 认证。 借助spring security 完成企业级权限设计,杜绝重复造轮子
  • 让更多的微服务耳熟能详的名次,比如灰度发布、流量控制、动态路由等不仅存在于PPT,通过Spring Cloud 作为载体实现
  • 几行代码完成Vue 的CRUD。 运用layui、easyui 数据驱动视图的理念封装,让后端工程师无缝上手

2. 资源服务器接入

  • 一个EnablePigResourceServer 注解 即可接入oauth2 服务器,权限管理被spring security接管。相较于原生的spring security oauth2 复杂的配置,EnablePigResourceServer 完成了资源服务器的全部功能 及其整合注册中的负载均衡

3. 服务端动态路由

动态路由需要达到可持久化配置,动态刷新的效果。不仅要能满足从spring的配置文件properties加载路由信息,还需要从数据库加载我们的配置。另外一点是,路由信息在容器启动时就已经加载进入了内存,我们希望配置完成后,实施发布,动态刷新内存中的路由信息,达到不停机维护路由信息的效果,无论是zuul,还是spring cloud gateway 都提供了实现.通过内存 + Redis 的二级缓存策略让性能更加高效干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_微服务_02

4. 单点登录

单点登录是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。pig 1.X 分支基于 Spring security oauth 也提供了生产实践干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_git_03

5. 灰度发布

通过客户端声明的不同版本,可以通过网关进行转发到不同版本的业务微服务,实现生产不停机的灰度发布,保障服务的高可用。

干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_git_04

6. 多维度限流

zuul版本整合spring-cloud-zuul-ratelimit,gateway版本是原生扩展

目前支持的限流粒度

1.服务粒度 (默认配置,当前服务模块的限流控制)

2.用户粒度 (详细说明,见文末总结)

3.ORIGIN粒度 (用户请求的origin作为粒度控制)

4.接口粒度 (请求接口的地址作为粒度控制)

7. 分库分表

zuul版本.采用现在 Sharding-JDBC实现分库分表。主要业务场景是对日志表进行安装ID hash 进行拆分,避免生产大数据量存储问题。在Java的JDBC层以对业务应用零侵入的方式额外提供数据分片,读写分离,柔性事务和分布式治理能力。

8. 前端解决方案,数据驱动视图

  • 只需要的配置每列属性即可完成入上图 令牌管理CRUD,是不是很神奇? 下边对两种写法进行对比,读者可以从代码量中比较出差异,实现的效果完全一致,让规则数据可以直接可视化。


项目截图

干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_微服务_05干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_微服务_06

9. 总结

  1. Pig 1.0 已经在多家公司内部生产运行,各方面表现还不错。提供了从开发到生产的整套解决方案
  2. Pig 2.0 聚焦瘦身减少中间件的引入,目的是让更多人快速以pig入门Spring Cloud 提供完整的组件链,快速上手。
  3. 限于篇幅以上只是对部分功能进行说明,欢迎大家交流学习

以下专题教程也许您会有兴趣

  • 《Spring Boot 2.x 系列教程》 https://www.bysocket.com/springboot
  • 《Java 核心系列教程》 https://www.bysocket.com/archives/2100


由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!

-The End-


号外:为读者持续几份最新教程,覆盖了 Spring Boot、Spring Cloud、微服务架构等。

获取方式:下面关注公众号,并回复 java 或 666 领取


最新整理:下面关注公众号,并回复 webflux 或 888 领取《Spring Boot WebFlux 必会必知系列教程》



推荐号主

干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统_git_07