点击蓝色“泥瓦匠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. 总结

  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 Boot 2.x 教程那些事

  • 为啥强制子类、父类变量名不同?

  • 拓展技术视野的套路

  • Spring Boot集成Security实现权限认证

  • 防止数据重复插入的解决方案

亲,推荐: 《泥瓦匠的技术朋友》

推荐号主

文末力荐公益

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

如果文章对你有帮助的话

“在看”,转发朋友圈

↓↓↓↓

中国重汽微服务管理_干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统相关推荐

  1. nacos oaut服务地址_用户认证的例子:Spring Security oAuth2 + Spring Cloud Gateway + Nacos + Dubbo...

    这个例子是商城后台项目的一部分,主要使用了oAuth2的密码模式完成用户名密码认证功能.主要流程是:使用Nacos作为注册中心,操作用户的服务user-mgr-service作为服务提供者,注册到Na ...

  2. eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

    友情提示:全文13000多文字,预计阅读时间10-15分钟 Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题.当我 ...

  3. 微服务架构与Spring Cloud Alibaba

    微服务架构与Spring Cloud Spring Cloud 微服务架构 1 微服务架构概述 2 Spring Cloud 微服务简介 3 Spring Cloud 技术栈 4 总结 Spring ...

  4. 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...

  5. 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config

    <深入理解 Spring Cloud 与微服务构建>第十三章 配置中心 Spring Cloud Config 文章目录 <深入理解 Spring Cloud 与微服务构建>第 ...

  6. Spring Cloud OAuth2 JWT 微服务认证服务器得构建

    文章目录 Spring Cloud OAuth2 JWT 微服务认证服务器得构建 前言 认证服务得搭建 `AuthorizationServer` `WebSecurityConfig` `Autho ...

  7. php分布式微服务开发_分布式微服务架构

    学习.跳槽涨薪?请关注 随着业务的不断发展, 用户体量的快速扩张. 从单体/垂直架构转移到分布式/微服务架构是自然而然的选择. 01 分布式理论 分布式理论是分布式系统的基础, 在任何情况下分布式系统 ...

  8. 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...

    基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...

  9. 2.基于ITIL的IT服务管理基础篇 --- IT服务管理的背景

    2.IT服务管理的背景1.服务和质量1.质量保证2.组织成熟度2.组织和政策1.愿景.目标和策略2.规划周期3.文化4.人力资源管理5.IT客户关系管理3.流程管理1.流程2.流程和部门3.IT服务管 ...

最新文章

  1. [再寄小读者之数学篇](2014-11-19 $\sin(x+y)=\sin x\cos y+\cos x\sin y$)
  2. 【C#】using用法
  3. 阻塞队列 java 源码_Java源码解析阻塞队列ArrayBlockingQueue常用方法
  4. 【开发工具】学习记录 初学MATLAB
  5. Mysql慢查询深入剖析_《深入精通Mysql(六)》系列之如何通过慢查询日志进行SQL分析和优化...
  6. 在钉钉上怎么手写_胖·评测|亲测!磐度A5数字纸笔手写板能适配多少直播平台?...
  7. sklearn自学指南(part47)--主成分分析
  8. Dotnet Core
  9. 童装英文外贸网站系统源码 v1.5.5
  10. 以社会工程学助力网络安全
  11. 有趣、高效的编程示例
  12. 微信小程序获取access_token报错errcode: 40125,errmsg: invalid appsecret
  13. 各种格式的文件用什么软件打开
  14. arduino定时器函数如何使用_Arduino定时器配置(Timer0,Timer1,Timer2)
  15. 所有的美好,都始于遇见
  16. android之银联支付,android端银联支付
  17. Letv电视品牌升级为乐融,携手漫威打造超级营销
  18. Android逆向:通过Xposed解密柠某直播本地数据
  19. Elixir-Atoms
  20. Linux修改用户名后,每次开机提示configure it with blueman-service解决方法

热门文章

  1. java 筛选地区语句_Java选择语句
  2. android listview添加数据_Android系统列表控件
  3. 所有的计算机语言都必须进行多进制运算,2018职称计算机考试巩固练习及答案17...
  4. 如何证明CPU缓存行cacheline的存在?
  5. 内核引导参数IOMMU与INTEL_IOMMU有何不同?
  6. segment段,setjmp和longjmp
  7. 怎么修改远程服务器的地址,怎么修改远程服务器的地址
  8. mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
  9. yum安装软件出错解决方法
  10. linux文件状态,Linux命令之stat - 显示文件或文件系统状态