若依优秀的开源框架 
若依版本: 
  • RuoYi-Vue 前端分离版
  • RuoYi-Cloud 微服务版
  • RuoYi-App 移动版

RouYi-Cloud 基于Spring Boot、Spring Cloud & Alibaba、Vue、Element 的前后端分离微服务极速后台开发框架。
RouYi-Cloud 是一个Java EE 企业级分布式微服务架构平台,基于经典技术组合(Spring Boot、Spring Cloud & Alibaba、Vue、Element),内置模块如: 部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线灯饰任务;支持集群,支持多数据源。

主要特性
  • 完全响应式布局(支持电脑、平板、手机等所有的主流设备)
  • 强大的一键生成功能(包括控制器、模型、试图、菜单等)
  • 支持多数据源,简单配置即可实现切换。
  • 支持按钮及数据权限,可自定义部门数据权限。
  • 对常用js插件进行二次封装,使js代码变得简洁,更加易维护
  • 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击; XSS攻击全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
  • Maven多项目依赖,模块及插件分项目,尽量低耦合,方便模块升级、增减模块。
  • 国际化支持,服务端及客户端支持
  • 完善的日志记录体系简单注解即可实现

内置功能
  • 用户管理:主要完成系统用户配置。
  • 部门管理: 配置系统组织机构,树结构展现支持数据权限。
  • 岗位管理:配置系统菜单,操作权限,按钮权限识别等。
  • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围的权限划分。
  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  • 参数管理:对系统动态配置常用参数。
  • 通知公告:系统通知公告信息发布维护。
  • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  • 登录日志:系统登录日志记录查询包含登录异常。
  • 在线用户:当前系统中活跃用户状态监控。
  • 定时任务:在线添加、修改、删除任务调度包含执行结果日志。
  • 代码生成:前后端代码的生成支持CRUD下载。
  • 系统接口:根据业务代码自动生成相关的api接口文档
  • 服务监控: 监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  • 缓存监控: 对系统的缓存信息查询,命令统计等。
  • 在线构建器:拖动表单元素生成相对应的Vue代码。
  • 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

文件结构——后端结构
后端技术  
  • 后端技术栈 Spring Boot、Spring Cloud & Alibaba、Nacos、Sentinel
    SpringBoot框架
  1. SpringBoot框架:开箱即用框架,提供各种默认配置来简化项目配置。让我们的Spring应用变得更轻量化、更快的入门。在主程序执行main函数就可以运行。你也可以打包你的应用为jar并通过 使用Java-jar来运行你的web应用。它遵循“约定大于配置”的原则,使用SpringBoot只需要很少的配置,大部分时候直接使用默认的配置即可。同时可以与Spring Cloud 的微服务无缝结合。                       版本要求就是 Spring Boot 2.0以上版本要求 jdk8 或者以上 服务器tomcat8或者以上
  2. 优点 
  • 使编码变得简单:推荐使用注解
  • 使配置变得简单:自动配置、快速集成新技术能力没有冗余的代码生成和XML配置的要求
  • 使部署变得简单:内嵌Tomact、Jetty、Undertow等web容器,无需以war包形式部署
  • 使监控变得简单:提供运行时的应用监控
  • 使集成变得简单:对主流开发框架的无配置集成。
  • 使开发变得简单:极大地提高了开发快速构建项目、部署效率。
  Spring  Cloud 框架
  1. Spring  Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考研的服务框架组合起来,通过Spring  Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
  2. 优点
  • 把模块拆分,使用接口通信,降低模块之间的耦合度。
  • 把项目拆分成若干子项目,不同团队负责不同的子项目。
  • 增加功能时只需要暂时增加一个子项目,调用其他系统的接口就可以。
  • 可以灵活的进项分布式部署
 Spring Security安全机制
  1.  Spring Security·是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
  2. 功能 
  • Authentication 认证,就是用户登录
  • Authorization   授权,判断用户拥有什么权限,可以访问什么资源
  • 安全防护, XSS跨站脚本攻击,session攻击等
  • 非常容易结合Spring进行使用
    Spring Security 与 Shiro 的区别 
相同点
  1. 认证功能
  2. 授权功能
  3. 加密功能
  4. 会话管理
  5. 缓存支持
  6. rememberMe功能
不同点
优点
  1. Spring Security 基于Spring开发,项目如果使用Spring作为基础,配合Spring Security 做权限更加方便。而Shrio需要和Spring进行整合开发
  2. Spring Security功能比Shrio更加丰富,比如安全防护方面
  3. Spring Security社区资源相对比Shrio更加丰富
缺点
  1. Apache Shiro是Java的一个安全框架,它的配置和使用比较简单,Spring Security上手复杂些
  2. Shrio依赖性低,不需要依赖任何框架和容器,可以独立运行。Spring Security依赖Spring容器。
  Nacos : 就是 Spring CloundAlibaba架构中最重要的组件,提供注册中心、配置中心和动态DNS服务三大功能,无缝对接Spring Cloud、Spring 、Dubbo等流行框架。 功能:
  •    服务注册发现和服务健康监测:支持基于DNS和基于RPC的服务发现,服务端可以通过SDK或者APi进行服务注册,相应的服务消费者可以使用DNS或者Http查找的方法获取列表。Nacos同时提供对服务的实时健康检查,阻止向不健康的主机或服务器放松请求,Nacso也有有好的控制台界面。——》(配置管理,服务管理,权限管理,命名空间,集群管理)
  • 动态DNS服务:支持权重路由,更容易地实现中间负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
  • 动态配置服务:Nacos支持动态的配置管理,将服务夫人配置信息分环境分类别外部管理,并且支持热更新。Nacos的配置信息存储与数据库中,支持配置信息的监听和版本回滚。
  • 服务及元数据管理:包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA等这些东西, 对了还有那个metrics统计数据。
Sentiel (哨兵): 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。
 主要两部分 :
  • 核心库(Java客户端)不依赖任何框架或者库,能够运行于所有Java运行时环境(jdk7),同时对Dubbo、Spring Cloud 等框架也支持。
  • 控制台 基于Spring Boot 开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。
  • 什么是熔断和降级
服务的稳定是公司可持续发展的重要基石,随着业务量的快速发展,一些平时正常运行的服务,会出现各种突发状况,而且在分布式系统中,每个服务本身又存在很多不可控的因素,比如线程池处理缓慢,导致请求超时,资源不足,导致请求被拒绝,又甚至直接服务不可用、宕机、数据库挂了、缓存挂了、消息系统挂了...对于一些非核心服务,如果出现大量的异常,可以通过技术手段,对服务进行降级并提供有损服务,保证服务的柔性可用,避免引起雪崩效应。
服务熔断一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施。
服务降级是在服务器压力陡增的情况下,利用有限资源,根据当前业务情况,关闭某些服务接口或者页面,以此释放服务器资源以保证核心任务的正常运行。
  • 为什么要使用熔断和降级
在一个分布式系统里,一个服务依赖多个服务,可能存在某个服务调用失败,比如超时、异常等,需要保证在一个依赖出问题的情况下,不会导致整体服务失败。
分布式事务
数据库事务的基本概念(ACID)
原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。要么执行,要么不执行
一致性(Consistency):事务的执行使数据从一个状态转换为另一个状态,数据库的完整性约束没有被破坏。能量守恒,总量不变
隔离性(Isolation):隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。信息彼此独立,互不干扰
持久性(Durability):当事务正确完成后,它对于数据的改变是永久性的。不会轻易丢失

#基本介绍

  • 什么是分布式事务
指一次大的操作由不同的小操作组成的,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。从本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
  • 为什么要使用分布式事务
在微服务独立数据源的思想,每一个微服务都有一个或者多个数据源,虽然单机单库事务已经非常成熟,但是由于网路延迟和不可靠的客观因素,分布式事务到现在也还没有成熟的方案,对于中大型网站,特别是涉及到交易的网站,一旦将服务拆分微服务,分布式事务一定是绕不开的一个组件,通常解决分布式事务问题。
  • seata 分布式事务
Seata是阿里开源的一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
Seata目标打造一站式的分布事务的解决方案,最终会提供四种事务模式:

AT 模式
TCC 模式
Saga 模式
XA 模式:正在开发中... 目前使用的流行度情况是: AT >  TCC >  Saga

 

Logo

快速构建 Web 应用程序

更多推荐