RuoYi-Cloud诺依微服务项目

1、架构图

从图中解析出RuoYi-Cloud 使用微服务技术栈

  • 网关:Gateway
  • 远程调用:Ribbon/Feign
  • 注册中心:Nacos Discovery
  • 熔断降级:Sentinel
  • 配置中心:Nacos Config
  • 链路追踪:Sleuth + ZipKin/SkyWalking  (没有集成,需要自己加

2、系统模块

3、环境部署

  • java

  • redis

  • npm和node

  • Nocos环境

新建一个 启动的批处理文件

版本要求:

        若依要求 nacos2.0以上

访问Nocas的管理端, 浏览器输入:http://192.168.xxx.xxx:8848/nacos/idex.html

默认的用户名密码是:nocas/nocas

  • Sentinel环境
    • 启动命令:java -Dserver.port=18080 -Dcsp.sentinel.dashboard.server=localhost:18080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.5.jar
    • 比如默认的用户/口令是:sentinel/sentinel
    • 在使用java命令执行jar包时,一般会传入参数,官网提供参数常用如下:

-Dserver.port=18080,指定端口号。

-Dcsp.sentinel.dashboard.server=localhost:18080,指定ip和端口号。

-Dproject.name=sentinel-dashboard,指定项目名称。

-Dsentinel.dashboard.auth.username=sentinel,指定用户名称。

-Dsentinel.dashboard.auth.password=123456,指定登录密码。

-Dserver.servlet.session.timeout=7200,指定SpringBoot服务端session的过期时间,如7200表示7200秒;60m表示60分钟,默认为30分钟。

-Dauth.enabled=true,指定开启权限验证。

创建启动脚本,双击启动

登录Sentinel

 

4、Nacos配置

nacos持久化配置

重新启动nacos,使配置生效

5、项目启动

springboot 项目 一键启动管理

6、解读技巧

只要是java web项目,流程主干线永远不变:发起请求---处理请求---响应请求

响应大体流程图:

  • 前端
    • 客户端如何发起请求(路径/方式/参数),F12查看
  • 后端
    • 接口接收请求,处理请求,响应请求
      • 简单流程:网关---过滤器---拦截器--微服务
      • 复杂流程:网关---上游过滤器---上游拦截器---上游微服务---下游过滤器---下游拦截器---下游微服务

6.1 网关模块

        网关为项目的入库,若依(Ruoyi-Cloud)项目的可以简化为:

在Ruoyi-Gateway网关服务中配置了所有微服务路由映射

spring:
  redis:
    host: localhost
    port: 6379
    password:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        # 认证中心
        - id: ruoyi-auth
          uri: lb://ruoyi-auth
          predicates:
            - Path=/auth/**
          filters:
            # 验证码处理
            - CacheRequestFilter
            - ValidateCodeFilter
            - StripPrefix=1
        # 代码生成
        - id: ruoyi-gen
          uri: lb://ruoyi-gen
          predicates:
            - Path=/code/**
          filters:
            - StripPrefix=1
        # 定时任务
        - id: ruoyi-job
          uri: lb://ruoyi-job
          predicates:
            - Path=/schedule/**
          filters:
            - StripPrefix=1
        # 系统模块
        - id: ruoyi-system
          uri: lb://ruoyi-system
          predicates:
            - Path=/system/**
          filters:
            - StripPrefix=1
        # 文件服务
        - id: ruoyi-file
          uri: lb://ruoyi-file
          predicates:
            - Path=/file/**
          filters:
            - StripPrefix=1

# 安全配置
security:
  # 验证码
  captcha:
    enabled: true
    type: math
  # 防止XSS攻击
  xss:
    enabled: true
    excludeUrls:
      - /system/notice
  # 不校验白名单
  ignore:
    whites:
      - /auth/logout
      - /auth/login
      - /auth/register
      - /*/v2/api-docs
      - /csrf

 前端发起的所有的请求都经过网关,再由网关路由统一转发

  • 访问ruoyi-file微服务路径规则:http://localhost:80/dev-api/file/**
  • 访问ruoyi-gen微服务路径规则:http://localhost:80/dev-api/code/**
  • 访问ruoyi-job微服务路径规则:http://localhost:80/dev-api/schedule/**
  • 访问ruoyi-system微服务路径规则:http://localhost:80/dev-api/system/**
  • 访问ruoyi-auth微服务路径规则:http://localhost:80/dev-api/auth/**
6.2 鉴权模块

若依(Ruoyi-Cloud)鉴权模块涉及到这几个模块:

登录鉴权的2种模式:

  • 外部鉴权:客户端访问服务端(微服务),已JWT令牌为判断依据,有且合法放行,没有或    不合法拒绝
  • 内部鉴权:上游微服务访问下游微服务,以请求头标记:from-source=inner有无为依据,有放行,没有拒绝
6.2.1 外部鉴权
  1. JWT获取

        登录页面点击登录发起:http://localhost/dev-api/auth/login请求

6.2.2 内部鉴权

    内部鉴权是微服务与微服务间鉴权,发生在上游服务访问下游服务,以请求头标记:

from-source=inner有无为依据,有就放行,没有拒绝,其目的是实现网络隔离。

 来自网关请求,以JWT进行鉴权,来自内部远程调用请求,已from-source=inner进行鉴权,其他非法请求直接拒绝。

6.3 代码生成模块

若依Ruoyi-Cloud代码生成模块是一个简单模块,用于构建若依体系的代码

 代码生成使用过程

6.3.1 步骤1:创建表

在ry-cloud库中创建一个Employee表

CREATE TABLE `sys_employee` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name` varchar(255) DEFAULT NULL COMMENT '名称',
    `age` int DEFAULT NULL COMMENT '年龄',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='员工表';

添加几条测试数据

 

6.3.2 步骤2:导入新建表

在代码生成界面导入新建表

 

6.3.3 步骤3:定制代码信息

  • 字段列名:表中列的名称
  • 字段描述:生成实体类属性注释
  • 物理类型:表中列的类型
  • java类型:生成实体类属性变量类型
  • java属性:生成实体类属性名
  • 插入:定义添加操作模态框表单控件,选中标识模态框有这个输入空间
  • 编辑:定义编辑操作模态框表单控件,选中标识模态框有这个输入空间
  • 列表:表中数据7在列表时,该列数据是否显示,选中为要显示
  • 查询:该列是否作为列表的查询条件,选中为需要作为查询条件
  • 查询方式:作为查询条件时,使用匹配方式
  • 显示类型:查询条件输入类型
  • 字典类型:查询条件显示类型如果是下拉框,使用字典类型,实现下拉选择

生成信息:

  • 生成模板:一般不动,以表单操作为主
  • 生成包路径:指定当前代码生成根包路径
  • 生成模块名:该功能所属模块,落地到代码就是所在微服务名称,ruoyi-gateway配置的路由映射路径名
  • 生成业务名:该功能英文名,落地到代码就是controller中操作资源名,比如:/employee
  • 生成功能名:该功能中文名
  • 上级菜单:该功能是页面展示菜单连接挂在到哪个上级菜单。

预览

 配置上面各种信息成功之后,点击预览,根据需要微调

 

生成代码

确定无误后,直接点生成代码

 

6.3.4 步骤4:使用代码

说明:

  • employeeMenu.sql:涉及要添加的菜单,菜单权限,在Navicat中执行
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('员工', '1', '1', 'employee', 'system/employee/index', 1, 0, 'C', '0', '0', 'system:employee:list', '#', 'admin', sysdate(), '', null, '员工菜单');

-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();

-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('员工查询', @parentId, '1',  '#', '', 1, 0, 'F', '0', '0', 'system:employee:query',        '#', 'admin', sysdate(), '', null, '');

insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('员工新增', @parentId, '2',  '#', '', 1, 0, 'F', '0', '0', 'system:employee:add',          '#', 'admin', sysdate(), '', null, '');

insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('员工修改', @parentId, '3',  '#', '', 1, 0, 'F', '0', '0', 'system:employee:edit',         '#', 'admin', sysdate(), '', null, '');

insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('员工删除', @parentId, '4',  '#', '', 1, 0, 'F', '0', '0', 'system:employee:remove',       '#', 'admin', sysdate(), '', null, '');

insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('员工导出', @parentId, '5',  '#', '', 1, 0, 'F', '0', '0', 'system:employee:export',       '#', 'admin', sysdate(), '', null, '');

执行成功后,刷新前端项目,可以看到菜单

  • vue

分别拷贝到前端项目中

 说明:全部复制后,找到src目录后,后自动复制到api、views文件夹下,不需要一个一个的复制

刷新之后,点击员工菜单,缺少后端接口

  • main

后端接口代码,将main代码拷贝到ruoyi-system main 目录中即可

 

然后,重启ruoyi-system服务,再访问

 7、定制微服务

7.1 需求
7.2 代码结构
7.3 实现步骤

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ruoyi-cloud是一款基于Spring Cloud的微服务框架,提供了一系列方便快捷的开发工具和组件,可以帮助开发者快速构建和部署微服务架构的应用程序。 ruoyi-cloud微服务版本视频教程可以帮助开发者更好地理解和学习如何使用这个框架来开发微服务应用。视频教程通常从安装和配置开始,逐步介绍ruoyi-cloud的各个组件和功能,并且通过实际示例演示如何使用这些组件来实现特定的功能。 这些视频教程一般包括以下内容: 1. 系统环境准备:包括Java环境的安装和配置、IDE的选择与设置等。 2. ruoyi-cloud的概述:介绍ruoyi-cloud框架的基本概念、架构和特点。 3. 项目创建和配置:演示如何使用ruoyi-cloud的命令行工具或使用IDE来创建一个ruoyi-cloud微服务项目,并进行必要的配置。 4. 微服务注册与发现:介绍ruoyi-cloud的服务注册与发现组件,例如Eureka、Consul或Nacos,并展示如何在项目中进行配置与使用。 5. 微服务调用与负载均衡:讲解ruoyi-cloud的服务间调用和负载均衡机制,例如使用Feign或Ribbon来实现服务调用。 6. API网关与限流:介绍ruoyi-cloud的API网关组件,例如Spring Cloud Gateway或Zuul,并演示如何使用它们进行API的路由和限流。 7. 配置中心:讲解ruoyi-cloud配置中心组件,例如Spring Cloud Config,展示如何使用它来集中管理应用程序的配置。 8. 服务监控与日志收集:介绍ruoyi-cloud的监控与日志收集工具,例如Spring Cloud Sleuth和Zipkin,演示如何使用它们来监控和追踪微服务的运行状态和性能。 9. 高可用部署与扩展:讲解如何使用ruoyi-cloud来实现微服务的高可用部署和扩展,例如使用Docker和Kubernetes等容器化技术。 通过学习ruoyi-cloud微服务版本的视频教程,开发者可以更好地了解和掌握ruoyi-cloud框架,从而能够更高效地进行微服务的开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值