即将开播: 4 月 29 日, 民生银行郭庆谈商业银行金融科技赋能的探索与实践
目录:
- pig
- zheng
- Cloud-Platform
- SpringBlade
- Guns
一, pig
开源地址: https://gitee.com/log4j/pig
基于 Spring Cloud,OAuth2.0,vue 的前后端分离的系统. 通用 RBAC 权限设计及其数据权限和分库分表 支持服务限流, 动态路由, 灰度发布, 支持常见登录方式, 多系统 SSO 登录.
功能列表:
完善登录: 账号密码模式, 短信验证码模式, 社交账号模式均整合 Spring security OAuth
单点登录: 基于 Srping security OAuth 提供单点登录接口, 方便其他系统对接
用户管理: 用户是系统操作者, 该功能主要完成系统用户配置.
机构管理: 配置系统组织机构, 树结构展现, 可随意调整上下级.
菜单管理: 配置系统菜单, 操作权限, 按钮权限标识等.
角色管理: 角色菜单权限分配, 设置角色按机构进行数据范围权限划分.
动态路由: 基于 zuul 实现动态路由, 后端可配置化.
灰度发布: 自定义 ribbon 路由规则匹配多版本请求.
终端管理: 动态配置 OAuth 终端, 后端可配置化.
字典管理: 对系统中经常使用的一些较为固定的数据进行维护, 如: 是否等.
操作日志: 系统正常操作日志记录和查询; 系统异常信息日志记录和查询.
服务限流: 多种维度的流量控制(服务, IP, 用户等)
消息总线: 配置动态实时刷新
分库分表: shardingdbc 分库分表策略
数据权限: 使用 mybatis 对原查询做增强, 业务代码不用控制, 即可实现.
文件系统: 支持 FastDFS, 七牛云, 扩展 API 几行代码实现上传下载
消息中心: 短信, 邮件模板发送, 几行代码实现发送
聚合文档: 基于 zuul 实现 swagger 各个模块的实现
代码生成: 前后端代码的生成, 支持 Vue
缓存管理: 基于 Cache Cloud 保证 Redis 的高可用
服务监控: Spring Boot Admin
分布式任务调度: 基于 elastic-job 的分布式任务, zookeeper 做调度中心
zipkin 链路追踪: 数据保存 ELK, 图形化展示
pinpoint 链路追踪: 数据保存 hbase, 图形化展示
二, zheng
开源地址: https://gitee.com/shuzheng/zheng
基于 Spring+SpringMVC+Mybatis 分布式敏捷开发系统架构, 提供整套公共微服务服务模块: 集中权限管理(单点登录), 内容管理, 支付中心, 用户管理(支持第三方登录), 微信平台, 存储系统, 配置中心, 日志分析, 任务和通知等, 支持服务治理, 监控和追踪, 努力为中小型企业打造全方位 J2EE 企业级开发解决方案.
三 ,Cloud-Platform
开源地址: https://gitee.com/minull/ace-securityCloud-Platform
是国内首个基于 Spring Cloud 微服务化开发平台, 核心技术采用 Spring Boot2 以及 Spring Cloud Gateway 相关核心组件, 前端采用 vue-element-admin 组件. 具有统一授权, 认证后台管理系统, 其中包含具备用户管理, 资源权限管理, 网关 API 管理等多个模块, 支持多业务系统并行开发, 可以作为后端服务的开发脚手架. 代码简洁, 架构清晰, 适合学习和直接项目中使用.
架构摘要
服务鉴权通过 JWT 的方式来加强服务之间调度的权限验证, 保证内部服务的安全性.
监控利用 Spring Boot Admin 来监控各个独立 Service 的运行状态; 利用 Hystrix Dashboard 来实时查看接口的运行状态和调用频率等.
负载均衡将服务保留的 REST 进行代理和网关控制, 除了平常经常使用的 node.JS,nginx 外, Spring Cloud 系列的 zuul 和 ribbon, 可以帮我们进行正常的网关管控和负载均衡. 其中扩展和借鉴国外项目的扩展基于 JWT 的 Zuul 限流插件, 方面进行限流.
服务注册与调用基于 Consul 来实现的服务注册与调用, 在 Spring Cloud 中使用 Feign, 我们可以做到使用 HTTP 请求远程服务时能与调用本地方法一样的编码体验, 开发者完全感知不到这是远程方法, 更感知不到这是个 HTTP 请求.
熔断机制因为采取了服务的分布, 为了避免服务之间的调用 "雪崩", 采用了 Hystrix 的作为熔断器, 避免了服务之间的 "雪崩".
四 ,SpringBlade
开源地址: https://gitee.com/smallc/SpringBladeSpringBlade 2.0 是一个基于 Spring Boot 2 & Spring Cloud Finchley & Mybatis 等核心技术, 用于快速构建中大型系统的基础框架. 和 bootdo 有相似之处.
主要特性 && 变化
采用前后端分离的模式, 前端单独开源出一个框架: Sword, 主要选型技术为 React,Ant Design,Umi,Dva
后端采用 SpringCloud 全家桶, 并同时对其基础组件做了高度的封装, 单独开源出一个框架: Blade-Tool
Blade-Tool 已推送至 Maven 中央库, 直接引入即可, 减少了工程的臃肿, 也可更注重于业务开发
注册中心选型 Consul
部署使用 Docker 或 K8s + Jenkins
使用 Traefik 进行反向代理
踩了踩 Kong 的坑, 有个基本的使用方案, 但不深入, 因为涉及到 OpenResty.
封装了简单的 Secure 模块, 采用 JWT 做 Token 认证, 可拓展集成 Redis 等细颗粒度控制方案
在 2.0 诞生之前, 已经稳定生产了近一年, 经历了从 Camden -> Finchley 的技术架构, 也经历了从 fat jar -> docker -> k8s + jenkins 的部署架构
项目分包明确, 规范微服务的开发模式, 使包与包之间的分工清晰.
五 ,Guns
开源地址: https://gitee.com/stylefeng/gunsGuns
基于 Spring Boot 2, 致力于做更简洁的后台管理系统, 完美整合 springmvc + shiro + mybatis-plus + beetl,Guns 项目代码简洁, 注释丰富, 上手容易, 同时 Guns 包含许多基础模块(用户管理, 角色管理, 部门管理, 字典管理等 10 个模块), 可以直接作为一个后台管理系统的脚手架! 同时提供 spring cloud 版本!
Guns 微服务版本
Guns 的核心是 roses-kernel 项目 https://gitee.com/stylefeng-Roses/roses-kernel, 提供对 spring cloud 的支持.
Roses 框架基于 Spring Boot 2 和 Spring Cloud Finchley.RELEASE, 整合 Eureka + Hystrix + Ribbon + Feign + Zuul, 更符合企业级的分布式和服务化解决方案, Roses 拥有高效率的开发体验, 提供可靠消息最终一致性分布式事务解决方案, 提供基于调用链的服务治理, 提供可靠的服务异常定位方案 (Log + Trace) 等等, 一个分布式框架不仅需要构建高效稳定的底层开发框架, 更需要解决分布式带来的种种挑战!
管理系统功能
1. 用户管理 2. 角色管理 3. 部门管理 4. 菜单管理 5. 字典管理 6. 业务日志 7. 登录日志 8. 监控管理 9. 通知管理 10. 代码生成(旗舰版目前还没完成)
项目特点
基于 SpringBoot, 简化了大量项目配置和 maven 依赖, 让您更专注于业务开发, 独特的分包方式, 代码多而不乱.
完善的日志记录体系, 可记录登录日志, 业务操作日志 (可记录操作前和操作后的数据), 异常日志到数据库, 通过 @BussinessLog 注解和 LogObjectHolder.me().set() 方法, 业务操作日志可具体记录哪个用户, 执行了哪些业务, 修改了哪些数据, 并且日志记录为异步执行, 详情请见 @BussinessLog 注解和 LogObjectHolder,LogManager,LogAop 类.
利用 beetl 模板引擎对前台页面进行封装和拆分, 使臃肿的 html 代码变得简洁, 更加易维护.
对常用 JS 插件进行二次封装, 使 JS 代码变得简洁, 更加易维护, 具体请见 webapp/static/JS/common 文件夹内 JS 代码.
利用 ehcache 框架对经常调用的查询进行缓存, 提升运行速度, 具体请见 ConstantFactory 类中 @Cacheable 标记的方法.
controller 层采用 map + warpper 方式的返回结果, 返回给前端更为灵活的数据, 具体参见 com.stylefeng.guns.modular.system.warpper 包中具体类.
防止 XSS 攻击, 通过 XssFilter 类对所有的输入的非法字符串进行过滤以及替换.
简单可用的代码生成体系, 通过 SimpleTemplateEngine 可生成带有主页跳转和增删改查的通用控制器, HTML 页面以及相关的 JS, 还可以生成 Service 和 Dao, 并且这些生成项都为可选的, 通过 ContextConfig 下的一些列 xxxSwitch 开关, 可灵活控制生成模板代码, 让您把时间放在真正的业务上.
控制器层统一的异常拦截机制, 利用 @ControllerAdvice 统一对异常拦截, 具体见 com.stylefeng.guns.core.aop.GlobalExceptionHandler 类.
页面统一的 JS key-value 单例模式写法, 每个页面生成一个唯一的全局变量, 提高 JS 的利用效率, 并且有效防止多个人员开发引起的函数名 / 类名冲突, 并且可以更好地去维护代码.
业务日志记录
日志记录采用 aop(LogAop 类)方式对所有包含 @BussinessLog 注解的方法进行 aop 切入, 会记录下当前用户执行了哪些操作(即 @BussinessLog value 属性的内容), 如果涉及到数据修改, 会取当前 http 请求的所有 requestParameters 与 LogObjectHolder 类中缓存的 Object 对象的所有字段作比较(所以在编辑之前的获取详情接口中需要缓存被修改对象之前的字段信息), 日志内容会异步存入数据库中(通过 ScheduledThreadPoolExecutor 类).
来源: http://news.51cto.com/art/202004/615453.htm