当前位置: 首页 > 科技观察

国内流行的5个Java微服务开源项目

时间:2023-03-13 18:39:11 科技观察

目录:1.pig2.zheng3.Cloud-Platform4.SpringBlade5.Guns1.Pig开源地址:https://gitee.com/log4j/pigA基于SpringCloud、OAuth2.0、Vue的前后端分离系统。通用RBAC权限设计及其数据权限和分库分表支持服务限流、动态路由、灰度释放、支持常用登录方式、多系统SSO登录。功能列表:完美登录:账号密码方式、短信验证码方式、社交账号方式全部集成SpringsecurityoAuth单点登录:基于SpringsecurityoAuth,提供单点登录接口,方便连接其他系统用户管理:用户是系统的操作者,该功能主要完成系统用户配置。组织管理:配置系统组织,树形结构展示,上下级随意调整。菜单管理:配置系统菜单、操作权限、按钮权限标识等。角色管理:角色菜单权限分配、角色设置、数据范围按组织权限划分。动态路由:基于zuul实现动态路由,后端可配置。灰色发布:自定义功能区路由规则匹配多版本请求。终端管理:动态配置oauth终端,后端可配置。字典管理:维护系统中经常用到的一些相对固定的数据,比如是否。操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。服务限流:多维度流控(服务、IP、用户等)消息总线:配置分库分表动态实时刷新:shardingdbc分库分表策略数据权限:使用mybatis对原有的查询进行了增强,业务代码不需要控制,就可以实现。文件系统:支持FastDFS、七牛云,扩展API,几行代码实现上传下载。消息中心:短信、邮件模板发送,几行代码发送聚合文档:基于zuul实现swagger模块代码生成:前后端代码生成,支持Vue缓存管理:基于CacheCloud保证Redis的高可用服务监控:SpringBootAdmin分布式任务调度:基于elastic-job的分布式任务,zookeeper作为调度中心Zipkin链接跟踪:数据存储ELK,图形显示pinpoint链接跟踪:数据存储在hbase,图形显示2.郑开源地址:https://gitee.com/shuzheng/zheng基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供一整套公共微服务服务模块:集中权限管理(单点登录),内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务与通知等,支持t服务治理、监控和跟踪,倾力打造全方位的中小企业J2EE企业级开发解决方案。3、Cloud-Platform开源地址:https://gitee.com/minull/ace-securityCloud-Platform是国内第一个基于SpringCloud的微服务开发平台。核心技术采用SpringBoot2和SpringCloudGateway相关核心组件。前端采用vue-element-admin组件。拥有统一的授权认证后台管理系统,包括用户管理、资源权限管理、网关API管理等多个模块。支持多服务系统并行开发,可作为后端服务的开发脚手架。代码简洁,结构清晰,适合学习和项目中直接使用。架构总结服务认证使用JWT加强服务间调度的权限验证,保证服务内部的安全。监控使用SpringBootAdmin监控各个独立Service的运行状态;使用HystrixDashboard实时查看接口的运行状态和调用频率。负载均衡使用服务保留的其余部分来执行代理和网关控制。除了常用的node.js和nginx,SpringCloud系列的zuul和ribbon可以帮助我们进行正常的网关控制和负载均衡。其中国外项目的扩展和参考是基于JWT的Zuul限流插件,限流。服务注册和调用服务注册和调用是基于Consul的。在SpringCloud中使用Feign,我们可以实现使用HTTP请求远程服务时调用本地方法一样的编码体验。开发人员完全不知道这是一个远程服务。方法,更不知道这是一个HTTP请求。因为熔断机制采用了服务的分布,为了避免服务之间调用的“雪崩”,采用了Hystrix作为熔断器来避免服务之间的“雪崩”。4、SpringBlade开源地址:https://gitee.com/smallc/SpringBladeSpringBlade2.0是基于SpringBoot2&SpringCloudFinchley&Mybatis等核心技术快速构建中大型系统的基础框架。与bootdo有相似之处。主要特点&&变化采用前后端分离模式。前端独立开源了一个框架:Sword,主要选用的技术有React、AntDesign、Umi、Dva。封装,单一开源框架:Blade-ToolBlade-Tool已经推送到Maven中央库,可以直接导入,减少项目的臃肿,也可以更专注于业务开发注册中心选择Consul部署使用Docker或者K8s+Jenkins使用Traefik作为反向代理,踩到了Kong的坑。有一个基本的使用方案,但是因为涉及到OpenResty,所以不深入。它封装了一个简单的Secure模块,使用JWT进行Token认证,可以扩展集成Redis等细粒度控制方案。在2.0诞生之前,已经稳定生产了将近一年。经历了从Camden->Finchley的技术架构,也经历了从fatjar->docker->k8s+jenkins,部署架构项目分包清晰,规范了微服务的开发模型,包与包之间分工明确清除。5、Guns开源地址:https://gitee.com/stylefeng/gunsGuns基于SpringBoot2,致力于做一个更简洁的后台管理系统。完美整合了springmvc+shiro+mybatis-plus+beetl。Guns项目代码简洁,注释丰富易用,Guns包含很多基础模块(用户管理、角色管理、部门管理、字典管理等10个模块),可以直接作为后台管理的脚手架系统!同时提供springcloud版本!Guns微服务版Guns的核心是roses-kernel项目https://gitee.com/stylefeng-Roses/roses-kernel,提供对springcloud的支持。Roses框架基于SpringBoot2和SpringCloudFinchley.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可以生成通用的controller、html页面和相关的带有首页跳转和增删改查的js,还可以生成Service和Dao,而且这些生成项是可选的,通过一系列的xxxSwitch开关ContextConfig下可以灵活控制模板代码的生成,让你把时间花在真正的业务上。controller层统一的异常拦截机制使用@ControllerAdvice统一拦截异常,详见com.stylefeng.guns.core.aop.GlobalExceptionHandler类。统一页面jskey-value单例模式写法,每个页面生成唯一的全局变量,提高js的使用效率,有效防止多人开发造成的函数名/类名冲突,可以更好的去维护代码。业务日志记录日志记录使用aop(LogAop类)对所有包含@BussinessLog注解的方法进行aop切入,会记录当前用户进行了哪些操作(即@BussinessLog值属性的内容)。如果涉及到数据修改,则会将当前http请求的所有requestParameters与LogObjectHolder类中缓存的Object对象的所有字段进行比较(所以需要在接口中缓存修改对象前的字段信息,以便在编辑前获取详情),日志内容将异步存储在数据库中(通过ScheduledThreadPoolExecutor类)。