asp 网站开发,门户网站那个程序比较,做视频的网站多少钱, seo won本文介绍国内比较火的5款Java微服务开源项目#xff0c;pig是基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式#xff0c; 多系统SSO登录。作者#xff1a;程序员杨目录…本文介绍国内比较火的5款Java微服务开源项目pig是基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式 多系统SSO登录。作者程序员杨目录1.pig2.zheng3.Cloud-Platform4.SpringBlade5.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基于SpringSpringMVCMybatis分布式敏捷开发系统架构提供整套公共微服务服务模块集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等支持服务治理、监控和追踪努力为中小型企业打造全方位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-ToolBlade-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 beetlGuns项目代码简洁注释丰富上手容易同时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注解和LogObjectHolderLogManagerLogAop类。利用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类)。