【项目技术介绍篇】若依开源项目RuoYi-Cloud后端技术介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。

本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快的、更好的入门JAVA后端开发工作。

文章目录

    • 一、前言
    • 二、技术介绍
      • 2.1 工程结构介绍
      • 2.2 技术架构介绍
        • 2.2.1 核心组件
        • 2.2.2 数据存储中间件
        • 2.2.3 其他中间件组件
    • 三、总结

一、前言

由于本专栏项目实战学习,是以若依开源项目RuoYi-Cloud为示例。所以,本文介绍一下若依开源项目RuoYi-Cloud后端技术;

  • 若依项目RuoYi-Cloud简介

    若依项目RuoYi-Cloud 是一个 Java EE 企业级的开源免费的快速开发平台,是一个基于Spring Boot、Spring Cloud & Alibaba的微服务的权限管理系统。如果想快速的开发一个Java EE 企业级项目,可以在若依项目的基础上,开发定制自己的项目。尤其是如果要开发一个后台管理系统,由于若依开源项目中已经内置完整的权限管理模块,所以能够更加快速的完成项目的开发工作;

  • 若依项目RuoYi-Cloud技术选型

采用前后端分离的模式,微服务版本前端基于 Vue/Element UI ;
后端采用Spring Boot、Spring Cloud & Alibaba微服务架构;
注册中心、配置中心选型Nacos,权限认证使用Redis;
流量控制框架选型Sentinel,分布式事务选型Seata;

  • 若依项目官方网站和文档地址

若依官网地址:https://www.ruoyi.vip/

若依演示地址:https://vue.ruoyi.vip/login

技术文档地址:https://doc.ruoyi.vip/ruoyi-cloud/

代码下载地址:https://gitee.com/y_project/RuoYi-Cloud

二、技术介绍

2.1 工程结构介绍

如下是若依项目RuoYi-Cloud工程的目录结构:

com.ruoyi     
├── ruoyi-ui              // 前端框架 [80]
├── ruoyi-gateway         // 网关模块 [8080]
├── ruoyi-auth            // 认证中心 [9200]
├── ruoyi-api             // 接口模块
│       └── ruoyi-api-system                          // 系统接口
├── ruoyi-common          // 通用模块
│       └── ruoyi-common-core                         // 核心模块
│       └── ruoyi-common-datascope                    // 权限范围
│       └── ruoyi-common-datasource                   // 多数据源
│       └── ruoyi-common-log                          // 日志记录
│       └── ruoyi-common-redis                        // 缓存服务
│       └── ruoyi-common-seata                        // 分布式事务
│       └── ruoyi-common-security                     // 安全模块
│       └── ruoyi-common-swagger                      // 系统接口
├── ruoyi-modules         // 业务模块
│       └── ruoyi-system                              // 系统模块 [9201]
│       └── ruoyi-gen                                 // 代码生成 [9202]
│       └── ruoyi-job                                 // 定时任务 [9203]
│       └── ruoyi-file                                // 文件服务 [9300]
├── ruoyi-visual          // 图形化管理模块
│       └── ruoyi-visual-monitor                      // 监控中心 [9100]
├──pom.xml   

目录结构使用说明如下:

  • ruoyi-ui ,前端工程目录,在实际项目开发中,由于是采用前后端分离模式的,该目录会单独剥离出来,成为一个独立的前端工程,由专门的前端开发人员进行管理维护;

  • ruoyi-gateway,网关模块,包括路由转发、异常处理、限流、降级、接口、鉴权等等,是系统对外提供接口服务的唯一入口;

  • ruoyi-auth,认证模块,包括登录认证,系统退出,刷新令牌等等,用于判断一个用户是否为合法用户的处理过程;

  • ruoyi-api,接口模块,即内部的微服务模块之间,需要提供接口给对方调用,需要在接口模块中进行定义;如ruoyi-api-system中提供系统接口;

  • ruoyi-common,通用模块,即在这里封装各个模块公用的方法,包括核心模块、权限范围、多数据源、日志记录、系统接口等等;

  • ruoyi-modules,业务模块,即在这里定义项目中的业务模块(也叫微服务),比如用户模块、订单模块、商品模块等等跟项目实际业务相关的模块;

  • ruoyi-visual,微服务状态监控模块,一个图形化管理工具,用来对系统中的所有微服务的状态进行监控;

2.2 技术架构介绍

若依项目RuoYi-Cloud后端技术架构采用了阿里巴巴开源的Spring Cloud Alibaba微服务开发解决方案。(PS:官方地址:https://sca.aliyun.com/zh-cn/)

在这里插入图片描述

2.2.1 核心组件
  • Gateway:服务网关,基于Spring生态系统之上构建的API网关,包括:Spring 5.x,Spring Boot 2.x和Project Reactor,是系统对外提供接口访问的唯一入口。

  • Nacos:配置管理、服务注册和发现,是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

  • Robbin :负载均衡,是 Netflix 发布的一个负载均衡器,提供一系列完善的配置项如连接超时,重试等;

  • Feign :一个声明式Http端调用,集成了Robbin的负载均衡功能,使得Eureka和Ribbon的使用更加简单。

  • Sleuth - 服务追踪,将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示出来。

  • Sentinel:服务流量治理,是阿里巴巴开源的一款微服务流量治理组件,主要以流量为切入点,从流量限流、熔断降级、系统负载保护等多个维度来帮助开发者保障微服务的稳定性,类似于Springcloud Hystrix组件;

2.2.2 数据存储中间件
  • Minio/FastDFS/OSS:分布式文件存储服务,即将数据存储在多个存储服务器上,并使用这些分布式存储资源形成一个虚拟存储设备。

  • ElasticSearch:数据检索服务,是一个开源的分布式搜索和分析引擎,它被广泛用于构建实时的、可扩展的搜索和分析应用程序,主要作用是存储、搜索和分析大量的数据。

  • Redlis:缓存服务,是一个开源的内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。

  • Mysql :是最流行的关系型数据库管理系统之一,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,大部分项目开发都会选择 MySQL作为数据库。

2.2.3 其他中间件组件
  • SpringBootAdmin Server:服务监控中心,可以用来监控服务是否健康、是否在线、以及一些jvm数据等等;

  • Ruoyi-auth:认证中心,包括登录认证,系统退出,刷新令牌等等,用于判断一个用户是否为合法用户的处理过程;

  • Quartz /XXL-Job:分布式任务调度系统,用于在分布式环境下,定时任务的管理与执行;

  • Zipkin/sky Walking:链路监控服务中心,用于对微服务系统调用链监控,记录服务之间的请求过程;Zipkin是 Twitter 开源的调用链分析工具,目前基于 SpringCloud Sleuth 得到了广泛的使用,特点是轻量,使用部署简单;是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI 功能较强,接入端无代码侵入。目前已加入 Apache 孵化器。

  • ELK:日志聚合系统,ELK是Elasticsearch(ES) , Logstash, Kibana的结合,是一个开源日志收集软件。

  • RabbitMQ/KAFKA:消息队列,是一种在应用间或应用内不同组件间传递消息的通信模式,它允许消息在发送者和接收者之间异步地传递。在实际应用中,消息队列常用于处理大量请求、异步任务、事件驱动等场景。

三、总结

以上,本文介绍了若依开源项目RuoYi-Cloud中后端工程结构。另外,对技术框架做了简单的介绍。

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)


http://www.niftyadmin.cn/n/5459335.html

相关文章

首个基于SSM-Transformer混合架构,开源商业大模型Jamba

3月29日,知名AI研究实验室AI21在官网开源了,首个基于SSM-Transformer混合架构的商业大模型——Jamba。 目前,ChatGPT、Stable Difusion 、Lyria等产品使用的皆是Transformer架构,虽然在捕捉序列内长距离依赖关系、泛化能力、特征…

基于Arduino IDE 野火ESP8266模块 JSON数据格式处理

一、库文件 ArduinoJSON 可以使用 ArduinoJSON库 来解析和处理JSON数据。 二、JSON数据 序列化 Serialization 序列化&#xff08;serialization&#xff09;&#xff1a; 序列化是将数据结构或对象状态转换为可存储或传输的格式。 测试代码&#xff1a; #include <Ardu…

从0到1利用express搭建后端服务

目录 1 架构的选择2 环境搭建3 安装express4 创建启动文件5 express的核心功能6 加入日志记录功能7 日志记录的好处本节代码总结 不知不觉学习低代码已经进入第四个年头了&#xff0c;既然低代码很好&#xff0c;为什么突然又自己架构起后端了呢&#xff1f;我有一句话叫低代码…

第二章 面向对象的基本概念-04737-C++程序设计【自考笔记】

考核目标 1.了解传统的结构化程序设计的不足&#xff0c;初步理解面 向对象程序设计的思想、概念和特点。 2.熟悉类的定义和使用方式 3.通过示例程序剖析对象&#xff0c;理解类成员的可访问范围 第1节 结构化程序设计 结构化程序设计的基本方法:采用自顶向下、逐步求精及模块…

ThreadPoolExecutor经典面试题

经典面试题 1&#xff09;线程池是如何保证线程不被销毁的呢&#xff1f; 答案&#xff1a;如果队列中没有任务时&#xff0c;核心线程会一直阻塞在获取任务的方法&#xff0c;直到返回任务。而任务执行完后&#xff0c;又会进入下一轮 work.runWork()中循环 验证&#xff1…

pandas中mode() 函数的应用

mode() 函数用于计算 DataFrame 或 Series 中数值型数据的众数。众数是指数据集中出现频率最高的值。它可以对整个 DataFrame 或 Series 进行计算众数&#xff0c;也可以沿着指定的轴&#xff08;行或列&#xff09;进行计算众数。 下面是一个示例&#xff0c;说明如何使用 mo…

《算法笔记》系列----质数的判断(埃氏筛法)

目录 一、朴素算法 二、埃氏筛法 1、与朴素算法对比 2、算法介绍 3、例题即代码实现 一、朴素算法 从素数的定义中可以知道&#xff0c;一个整数n要被判断为素数&#xff0c;需要判断n是否能被2.3.n- 1中的一个整除。只2&#xff0c;3..n- 1都不能整除n&#xff0c;n才能…

软考101-上午题-【信息安全】-网络安全

一、网络安全 1-1、安全协议 SSL(Secure Socket Layer&#xff0c;安全套接层)是 Netscape 于 1994年开发的传输层安全协议&#xff0c;用于实现 Web 安全通信。1996 年发布的 SSL3.0 协议草案已经成为一个事实上的Web 安全标准。 端口号是43。 SSL HTTP HTTPS TLS(Transpo…