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

Posted 程序员泥瓦匠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统相关的知识,希望对你有一定的参考价值。

点击蓝色“泥瓦匠BYSocket”,关注我哟

加个星标”,不忘文末签到哦


项目地址

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 完成了资源服务器的全部功能 及其整合注册中的负载均衡

 
   
   
 
  1. @EnablePigResourceServer

  2. @EnablePigFeignClients

  3. @SpringCloudApplication

  4. public class PigAdminApplication {

  5. public static void main(String[] args) {

  6. SpringApplication.run(PigAdminApplication.class, args);

  7. }


  8. }

3. 服务端动态路由

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

4. 单点登录

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

5. 灰度发布

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

 
   
   
 
  1. 在微服务的eureka客户端声明版本所属

  2. eureka:

  3. instance:

  4. metadata-map:

  5. version: v1.0

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

6. 多维度限流

zuul版本整合spring-cloud-zuul-ratelimit,gateway版本是原生扩展
目前支持的限流粒度

7. 分库分表

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

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

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

 
   
   
 
  1. // pig 前端写法

  2. export const tableOption = {

  3. border: true,

  4. index: true,

  5. indexLabel: '序号',

  6. stripe: true,

  7. menuAlign: 'center',

  8. align: 'center',

  9. viewBtn: true,

  10. addBtn: false,

  11. editBtn: false,

  12. delBtn: false,

  13. column: [{

  14. label: '用户ID',

  15. prop: 'user_id',

  16. align: 'center'

  17. }

  18. ...

  19. ]

  20. }


  21. // element 原生写法

  22. <template>

  23. <el-table

  24. :data="tableData"

  25. style="width: 100%">

  26. <el-table-column

  27. prop="date"

  28. label="日期"

  29. width="180">

  30. </el-table-column>

  31. ...

  32. </el-table>

  33. </template>


  34. <script>

  35. export default {

  36. data() {

  37. return {

  38. tableData: [{

  39. date: '2016-05-02',

  40. name: '王小虎',

  41. address: '上海市普陀区金沙江路 1518 弄'

  42. }

  43. ...

  44. ]

  45. }

  46. }

  47. }

  48. </script>


项目截图

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

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、微服务架构等。



 热门文章:




推荐号主

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


文末力荐公益

聆听做技术你的困惑,并解答


如果文章对你有帮助的话

↓↓↓↓

以上是关于干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统的主要内容,如果未能解决你的问题,请参考以下文章

简单了解 Spring Cloud 的微服务架构

干货 | 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践总结

微服务架构 | 8.1 使用 Spring Cloud Stream 整合 Apache kafka #yyds干货盘点#

高并发高可用微服务架构选型Dubbo与Spring Cloud纯干货,必收藏!

基于Spring Cloud 的微服务架构脚手架,满满的干货来啦~

基于Spring Cloud 的微服务架构脚手架,满满的干货来啦~