中国重汽微服务管理_干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统
点击蓝色“泥瓦匠BYSocket”,关注我哟
加个“星标”,不忘文末签到哦
作者:王杰
项目地址
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 完成了资源服务器的全部功能 及其整合注册中的负载均衡
@EnablePigResourceServer
@EnablePigFeignClients
@SpringCloudApplication
public class PigAdminApplication {
public static void main(String[] args) {
SpringApplication.run(PigAdminApplication.class, args);
}
}
3. 服务端动态路由
动态路由需要达到可持久化配置,动态刷新的效果。不仅要能满足从spring的配置文件properties加载路由信息,还需要从数据库加载我们的配置。另外一点是,路由信息在容器启动时就已经加载进入了内存,我们希望配置完成后,实施发布,动态刷新内存中的路由信息,达到不停机维护路由信息的效果,无论是zuul,还是spring cloud gateway 都提供了实现.通过内存 + Redis 的二级缓存策略让性能更加高效
4. 单点登录
单点登录是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。pig 1.X 分支基于 Spring security oauth 也提供了生产实践
5. 灰度发布
通过客户端声明的不同版本,可以通过网关进行转发到不同版本的业务微服务,实现生产不停机的灰度发布,保障服务的高可用。
在微服务的eureka客户端声明版本所属
eureka:
instance:
metadata-map:
version: v1.0
6. 多维度限流
zuul版本整合spring-cloud-zuul-ratelimit,gateway版本是原生扩展
目前支持的限流粒度
1.服务粒度 (默认配置,当前服务模块的限流控制)
2.用户粒度 (详细说明,见文末总结)
3.ORIGIN粒度 (用户请求的origin作为粒度控制)
4.接口粒度 (请求接口的地址作为粒度控制)
7. 分库分表
zuul版本.采用现在 Sharding-JDBC实现分库分表。主要业务场景是对日志表进行安装ID hash 进行拆分,避免生产大数据量存储问题。在Java的JDBC层以对业务应用零侵入的方式额外提供数据分片,读写分离,柔性事务和分布式治理能力。
8. 前端解决方案,数据驱动视图
只需要的配置每列属性即可完成入上图 令牌管理CRUD,是不是很神奇? 下边对两种写法进行对比,读者可以从代码量中比较出差异,实现的效果完全一致,让规则数据可以直接可视化。
// pig 前端写法
export const tableOption = {
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
align: 'center',
viewBtn: true,
addBtn: false,
editBtn: false,
delBtn: false,
column: [{
label: '用户ID',
prop: 'user_id',
align: 'center'
}
...
]
}
// element 原生写法
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="180">
el-table-column>
...
el-table>
template>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}
...
]
}
}
}
script>
项目截图
9. 总结
Pig 1.0 已经在多家公司内部生产运行,各方面表现还不错。提供了从开发到生产的整套解决方案
Pig 2.0 聚焦瘦身减少中间件的引入,目的是让更多人快速以pig入门Spring Cloud 提供完整的组件链,快速上手。
限于篇幅以上只是对部分功能进行说明,欢迎大家交流学习
以下专题教程也许您会有兴趣
《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 Boot 2.x 教程那些事
为啥强制子类、父类变量名不同?
拓展技术视野的套路
Spring Boot集成Security实现权限认证
防止数据重复插入的解决方案
亲,推荐: 《泥瓦匠的技术朋友》
推荐号主
文末力荐公益
聆听做技术你的困惑,并解答
如果文章对你有帮助的话
点“在看”,转发朋友圈
↓↓↓↓
中国重汽微服务管理_干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统相关推荐
- nacos oaut服务地址_用户认证的例子:Spring Security oAuth2 + Spring Cloud Gateway + Nacos + Dubbo...
这个例子是商城后台项目的一部分,主要使用了oAuth2的密码模式完成用户名密码认证功能.主要流程是:使用Nacos作为注册中心,操作用户的服务user-mgr-service作为服务提供者,注册到Na ...
- eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...
友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...
- 微服务架构与Spring Cloud Alibaba
微服务架构与Spring Cloud Spring Cloud 微服务架构 1 微服务架构概述 2 Spring Cloud 微服务简介 3 Spring Cloud 技术栈 4 总结 Spring ...
- 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统
<深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...
- 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config
<深入理解 Spring Cloud 与微服务构建>第十三章 配置中心 Spring Cloud Config 文章目录 <深入理解 Spring Cloud 与微服务构建>第 ...
- Spring Cloud OAuth2 JWT 微服务认证服务器得构建
文章目录 Spring Cloud OAuth2 JWT 微服务认证服务器得构建 前言 认证服务得搭建 `AuthorizationServer` `WebSecurityConfig` `Autho ...
- php分布式微服务开发_分布式微服务架构
学习.跳槽涨薪?请关注 随着业务的不断发展, 用户体量的快速扩张. 从单体/垂直架构转移到分布式/微服务架构是自然而然的选择. 01 分布式理论 分布式理论是分布式系统的基础, 在任何情况下分布式系统 ...
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...
- 2.基于ITIL的IT服务管理基础篇 --- IT服务管理的背景
2.IT服务管理的背景1.服务和质量1.质量保证2.组织成熟度2.组织和政策1.愿景.目标和策略2.规划周期3.文化4.人力资源管理5.IT客户关系管理3.流程管理1.流程2.流程和部门3.IT服务管 ...
最新文章
- [再寄小读者之数学篇](2014-11-19 $\sin(x+y)=\sin x\cos y+\cos x\sin y$)
- 【C#】using用法
- 阻塞队列 java 源码_Java源码解析阻塞队列ArrayBlockingQueue常用方法
- 【开发工具】学习记录 初学MATLAB
- Mysql慢查询深入剖析_《深入精通Mysql(六)》系列之如何通过慢查询日志进行SQL分析和优化...
- 在钉钉上怎么手写_胖·评测|亲测!磐度A5数字纸笔手写板能适配多少直播平台?...
- sklearn自学指南(part47)--主成分分析
- Dotnet Core
- 童装英文外贸网站系统源码 v1.5.5
- 以社会工程学助力网络安全
- 有趣、高效的编程示例
- 微信小程序获取access_token报错errcode: 40125,errmsg: invalid appsecret
- 各种格式的文件用什么软件打开
- arduino定时器函数如何使用_Arduino定时器配置(Timer0,Timer1,Timer2)
- 所有的美好,都始于遇见
- android之银联支付,android端银联支付
- Letv电视品牌升级为乐融,携手漫威打造超级营销
- Android逆向:通过Xposed解密柠某直播本地数据
- Elixir-Atoms
- Linux修改用户名后,每次开机提示configure it with blueman-service解决方法
热门文章
- java 筛选地区语句_Java选择语句
- android listview添加数据_Android系统列表控件
- 所有的计算机语言都必须进行多进制运算,2018职称计算机考试巩固练习及答案17...
- 如何证明CPU缓存行cacheline的存在?
- 内核引导参数IOMMU与INTEL_IOMMU有何不同?
- segment段,setjmp和longjmp
- 怎么修改远程服务器的地址,怎么修改远程服务器的地址
- mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
- yum安装软件出错解决方法
- linux文件状态,Linux命令之stat - 显示文件或文件系统状态