guns 最新开源框架企业版下载_国内比较火的5款Java微服务开源项目

本文介绍国内比较火的5款Java微服务开源项目,pig是基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式, 多系统SSO登录。

作者:程序员杨

目录:

  • 1.pig
  • 2.zheng
  • 3.Cloud-Platform
  • 4.SpringBlade
  • 5.Guns

一、 pig

开源地址:https://gitee.com/log4j/pig

基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式, 多系统SSO登录。

1559fa237b9f0679856defc4c3492a86.png

功能列表:

完善登录:账号密码模式、短信验证码模式、社交账号模式均整合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企业级开发解决方案。

a2b9cb363448aad1d098612130e2a3e5.png

三 、Cloud-Platform

开源地址:https://gitee.com/minull/ace-securityCloud-Platform

是国内首个基于Spring Cloud微服务化开发平台,核心技术采用Spring Boot2以及Spring Cloud Gateway相关核心组件,前端采用vue-element-admin组件。具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。

d9e33929a26d11c17b7ef776b77a4215.png

架构摘要

服务鉴权通过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有相似之处。

1b801765c1c07fb36492e20724d99fa0.png

主要特性&&变化

采用前后端分离的模式,前端单独开源出一个框架: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版本!

b3b5ae45bf3e1f3f928e4d74e902ba37.png

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://www.mzph.cn/news/504403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode笔记】剑指 Offer 10-I. 斐波那契数列 (Java、递归、动态规划)

文章目录题目描述思路 & 代码递归动态规划二刷题目描述 呃~说来尴尬,在简单题栽跟头了 (超时)一般来说,这玩意是递归教学题了。但实际上会有很多重复的冗余步骤,实际上用动态规划效率会更高 思路 &…

addeventlistener事件参数_Vue的钩子事件和程序化侦听

对于Vue的事件机制,其实有一些高级技巧,我们最好能够掌握。一、组件的生命周期钩子事件Vue的生命周期函数,其实就是Vue开发者设定的一些hook钩子,你只要往hook里面编写代码,它就可以执行。如vue实例里的beforeCreate、…

【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)

文章目录题目描述思路 & 代码二刷题目描述 注意点:满足数位和大于 k 的格子,不一定可以从 [0, 0] 走到,因此实际上不满足条件 思路 & 代码 考虑到可达性问题,决定用 dfs 来一个个走,不能走 or 走过了就 re…

计算机专业大学排名_U.S.News全美大学排名出炉:UCLA超越伯克利;计算机MIT排第一,斯坦福跌出前四...

栗子 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI一年一度,USNews2020美国大学排名公布。前两位依然稳定,普林斯顿第一,哈佛第二。后面开始就有了变化,今年有三所学校并列第三:哥伦比亚大学、麻省理工学院 (MIT) 以…

【LeetCode笔记】剑指 Offer 15-. 二进制中1的个数 (Java、位运算)

文章目录题目描述思路 & 代码二刷题目描述 涉及二进制,位运算跑不了~ 思路 & 代码 既然是32位,那么通过一次遍历,每次判断一个位是否为1即可 public class Solution {// you need to treat n as an unsigned valuepu…

apollo 配置中心_.NET Core 下使用 Apollo 配置中心

“Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spr…

【LeetCode笔记】剑指 Offer 21-. 调整数组顺序使奇数位于偶数前面(Java、双指针)

文章目录题目描述思路 & 代码二刷题目描述 有点像快排的交换操作 思路 & 代码 类似快排中的找法&#xff0c;具体见代码注释 class Solution {public int[] exchange(int[] nums) {// 双指针啦&#xff5e;int left 0, right nums.length - 1;while(left < r…

【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)

文章目录题目描述思路 & 代码二刷题目描述 思路很值得看的一道题&#xff0c;和之前路径总和 III的双递归思路、结构很像 思路 & 代码 isSubStructrue() 进行一个前序的遍历&#xff1b;通过 || 运算符&#xff0c;在找到时直接终止遍历具体函数功能、思路见代码注…

python使用pip安装包_12.2.1 使用pip安装Python包

12.2.1 使用pip安装Python包 大多数较新的Python版本都自带pip&#xff0c;因此首先可检查系统是否已经安装了pip。在Python 3中&#xff0c;pip有时被称为pip3。 1. 在Linux和OS X系统中检查是否安装了pip 打开一个终端窗口&#xff0c;并执行如下命令&#xff1a; $ pip --v…

【LeetCode笔记】剑指 Offer 61-. 扑克牌中的顺子 (Java、哈希表)

文章目录题目描述思路 & 代码二刷题目描述 感觉算比较有意思的简单题了&#xff0c;耗了不少时间优化 思路 & 代码 这次注释写得比较详细&#xff0c;直接看注释吧&#xff5e; class Solution {public boolean isStraight(int[] nums) {// O(n) && O(n)…

5分绩点转4分_工作复盘|因为这5点,4月份目标没完成

写在前面&#xff1a;用文字记录生活&#xff0c;让成长变得有迹可循&#xff01;4月份非常的繁忙&#xff0c;疫情慢慢消退&#xff0c;公司的业绩也慢慢在恢复&#xff1b;4月初的时候&#xff0c;公司定了月目标&#xff1a;成交100个学员&#xff08;非团单&#xff09;&am…

【LeetCode笔记】剑指 Offer 58 - I. 翻转单词顺序(Java、栈、双指针)

文章目录题目描述思路 & 代码二刷题目描述 用栈来做挺简单的&#xff0c;也可以用双指针。 思路 & 代码 既然是反向&#xff0c;那么从后往前&#xff0c;用双指针截取出字符串即可。 class Solution {// 双指针public String reverseWords(String s) {StringBuil…

【LeetCode笔记】剑指 Offer 57-. 和为s的两个数字 (Java、对撞双指针)

文章目录题目描述思路 & 代码二刷题目描述 很好的一道思路题&#xff0c;可以用来理解状态、双指针。注意&#xff1a;数组有序&#xff0c;否则需要用哈希表来做。 思路 & 代码 双指针&#xff1a;从头、尾往里走&#xff0c;重点在于为何不会丢失解状态 S(x, y)&…

python tkinter画笑脸_Python3 tkinter基础 Canvas create_polygon 画三角形

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ Author : 行初心 Date : 18-9-30 Blog : www.cnblogs.com/xingchuxin GitHub : github.com/GratefulHeartCoder """ fr…

【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)

文章目录题目描述思路 & 代码二刷题目描述 花了不少时间来优化 &#xff0c;很好的一道用来理解滑动窗口的题&#xff5e; 思路 & 代码 要点&#xff1a;为了 O(n) 复杂度&#xff0c;左右边界都只能往右走滑动窗口&#xff1a;存储当前连续正数序列 class Soluti…

设计一个类代表二维空间的一个圆。_平面设计基础——点、线、面

平面构成是以研究造型要素及构成规律为内容&#xff0c;讲点、线、面和基本形等视觉要素进行合理的排版合成在一个二维的平面上的艺术表现形式。平面构成是一种视觉形象的二维构成&#xff0c;主要是视觉的二维空间。平面构成他通过对造型要素的理性分析和严格的形式构成训练来…

【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)

文章目录思路 & 代码代码 & 思路二刷思路 & 代码 应该在二叉树的最近公共祖先之前写 需要用到二叉搜索树的特性&#xff5e; 代码 & 思路 分成四种情况即可&#xff0c;具体见代码注释时间复杂度 O(logn) /*** Definition for a binary tree node.* publ…

python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

本文实例讲述了Python 类属性与实例属性&#xff0c;类对象与实例对象用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;demo.py&#xff08;类属性&#xff0c;所有实例对象共用类属性&#xff09;&#xff1a; # 定义工具类 继承object是为了兼容python2.x class …

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)

文章目录题目描述思路 & 代码二刷题目描述 讲道理&#xff0c;感觉算有点难度的题目了 &#xff0c;还是需要时不时看看。 思路 & 代码 正负数情况可以不考虑&#xff08;补码&#xff09;核心&#xff1a;加法 进位和 非进位和关于位运算符的选择&#xff0c;le…

【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)

文章目录题目描述思路 & 代码链表模拟法数学方法二刷题目描述 约瑟夫环&#xff01;题目可太经典了说实话还是有点难度的 思路 & 代码 链表模拟法 第一想法是用 LinkedList&#xff0c;但是会超时&#xff0c;于是选择ArrayList关键在于 index (index m - 1) %…