微服务探索:nuoyi-cloud(诺伊)

一、环境部署

1.准备工作

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 10
nacos >= 1.1.0
sentinel >= 1.6.0
测试系统:Ubuntu 20.04.2 LTS

2.MYSQL安装

  • 安装指令:sudo bash msmysql.pkg

  • 软件版本:5.7.33

3.REDIS安装

  • 安装指令:sudo bash msredis.pkg

  • 软件版本:5.0.3

4.JDK安装

  • 安装指令:sudo bash mstomcat.pkg

  • 软件版本:1.8.0_191

5.MINIO安装

  • 安装指令:sudo bash msminio.pkg

  • 软件版本:2021-06-17T00:10:46Z

  • 本地访问:浏览器输入http://localhost:9000

  • 默认账号admin,密码为msos123minio

6.SENTIEL(哨兵)安装

  • Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

  • 下载地址:sentinel-dashboard-1.8.1.jar

  • 软件版本:1.8.1

  • 安装指令:/usr/lib/jdk/jdk1.8/bin/java -jar /home/sugao/Downloads/sentinel-dashboard-1.8.1.jar --server.port=8718

  • 本地访问:浏览器输入http://localhost:8718

  • 默认账号密码均为sentinel

8.RABBITMQ安装

  • 安装脚本
#!/bin/sh
sudo apt-get install curl gnupg debian-keyring debian-archive-keyring apt-transport-https -y
## Team RabbitMQ's main signing key
sudo apt-key adv --keyserver "hkps://keys.openpgp.org" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
## Launchpad PPA that provides modern Erlang releases
sudo apt-key adv --keyserver "keyserver.ubuntu.com" --recv-keys "F77F1EDA57EBB1CC"
## PackageCloud RabbitMQ repository
sudo apt-key adv --keyserver "keyserver.ubuntu.com" --recv-keys "F6609E60DC62814E"

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
## "focal" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main
deb-src http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main

## Provides RabbitMQ
##
## "focal" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main
deb-src https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ focal main
EOF

## Update package indices
sudo apt-get update -y

## Install Erlang packages
sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

rabbitmq-plugins enable rabbitmq_management

service rabbitmq-server restart
  • 本地访问:浏览器输入http://localhost:15672,默认账号密码均为guest

9.ideaIU安装

  • 下载ideaIU-2021.1.tar.gz,并解压安装;

10.工程导入和初始化

  • 获取源码:git clone https://gitee.com/y_project/RuoYi-Cloud

  • 将源码导入Ided工程:File>New>Project from Exsiting Sources…

  • 导入源码后,等待idea自动下载相关依赖;

  • 配置SDK:File>Project Structure>Project

  • 配置数据库:Database>+>Data Source>Mysql>配置名称,数据库密码和帐号,数据库名称。本次配置如下:

      配置名称                     数据库名称
    (必选)msavskit               msavskit
    (必选)msavskit_config        msavskit_config
    (可选)msavskit_seata         msavskit_seata
    
  • 创建数据库,使用以下指令:

    sudo mysql -uroot -pmsos123mysql -e "create database IF NOT EXISTS msavskit" 
    sudo mysql -uroot -pmsos123mysql -e "create database IF NOT EXISTS msavskit_config" 
    sudo mysql -uroot -pmsos123mysql -e "create database IF NOT EXISTS msavskit_seata" 
    
  • 执行相关sql文件。注意ry_config_20210531.sql和ry_seata_20210128.sql会创建文件中设定的数据库,执行后数据库

       sql文件名称                     数据库名称             备注
      (必选)ry_20210608.sql          msavskit
      (必选)ry_config_20210531.sql   msavskit_config      需要修改sql文件中的数据库名称为msavskit_config,否则默认创建的数据库为ry-config
      (可选)quartz.sql               msavskit      
      (可选)ry_seata_20210128.sql    msavskit_seata       需要修改sql文件中的数据库名称为msavskit_seata,否则默认创建的数据库为ry-seata
    

6.NACOS安装

  • 下载地址:[nacos-server-2.0.2.tar.gz](https://github.com/alibaba/nacos/releases/download/2.0.2/nacos-server-2.0.2.tar.gz)
  • 软件版本:2.0.2
  • 修改 application.properties 配置文件,启用mysql作为nacos的数据库
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/msavskit_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=msos123mysql
  • 启动nacos注册中心

  • 在nacos/bin/startup.sh脚本中增加JDK的环境变量

    ulimit -n 1000000
    export JAVA_HOME=/usr/lib/jdk/jdk1.8
    export JRE_HOME=/usr/lib/jdk/jdk1.8/jre 
    export PATH=$JAVA_HOME/bin:$PATH 
    export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
    
  • 启动服务

    bash nacos/bin/startup.sh -m standalone
    
  • 本地访问:浏览器输入http://localhost:8848/nacos/index.html

  • 默认账号和密码:nacos

  • 登陆nacos后,修改配置:配置管理>配置列表中的所有redis和mysql的配置(帐号、密码、数据库名称等)

11.启动基础模块(没有先后顺序)

  • RuoYiGatewayApplication 网关模块 必须(修改服务端口为9080,修改)
  • RuoYiAuthApplication 认证模块 必须
  • RuoYiSystemApplication 系统模块 必须
  • RuoYiMonitorApplication 监控中心 可选
  • RuoYiGenApplication 代码生成 可选
  • RuoYiJobApplication 定时任务 可选
  • RuoYFileApplication 文件服务 可选

12.微服务

12.1.服务网关

  • 统一系统对外入口:微服务的应用可能部署在不同机房,不同地区,不同域名下,当有网关后,客户端相关的请求直接发送到网关,由网关根据请求标识解析判断出具体的微服务地址,再把请求转发到微服务实例。
  • 使用的框架技术:Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注点,例如:安全性、监视/指标、限流、熔断降级、黑名单、白名单等。
  • 核心概念:
    路由(Route):路由信息由 ID、目标 URI、一组断言和一组过滤器组成。如果断言路由为真,则说明请求的URI和配置匹配。
    断言(Predicate):Spring Cloud Gateway 中的断言函数输入类型是 Spring 5.0 框架中 的 ServerWebExchange。Spring Cloud Gateway 中的断言函数允许开发者去定义匹配来自于 Http Request 中的任何信息,比如请求头和参数等。
    过滤器(Filter):Spring Cloud Gateway 中的 Filter 分为两种类型,分别是 Gateway Filter 和 Global Filter。过滤器将会对请求和响应进行处理。

12.2.配置中心

  • 配置中心是一种统一管理各种应用配置的基础服务组件,配置中心将配置从各应用中剥离出来,对配置进行统一管理;
  • Nacos是阿里巴巴开源的一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台;
  • 配置文件加载的优先级(由高到低):bootstrap.properties > bootstrap.yml > application.properties > application.yml
  • 支持集群部署;

12.2.3.服务调用

  • 服务调用:服务之间的接口互相调用,在微服务架构中很多功能都需要调用多个服务才能完成某一项功能。

  • Feign 是Spring Cloud Netflix组件中的一量级Restful的 HTTP 服务客户端,实现了负载均衡和 Rest 调用的开源框架,封装了RibbonRestTemplate, 实现了WebService的面向接口编程,进一步降低了项目的耦合度。

  • Feign不支持Spring MVC的注解,它使用自己的一套注解,为了更方便的使用,Spring Cloud孵化了OpenFeign支持Spring MVC的注解

12.2.4.服务监控

  • 监视当前系统应用状态、内存、线程、堆栈、日志等等相关信息,主要目的在服务出现问题或者快要出现问题时能够准确快速地发现以减小影响范围。
  • spring boot actuator 服务监控接口,actuator是监控系统健康情况的工具
  • Spring Boot Admin是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。可以在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level
  • http://localhost:9100,帐号ruoyi,密码123456

12.2.5.系统接口

  • 通过Swagger,可以在写代码的时候,稍加几个注解,文档接口自动生成

12.2.6.应用容器

https://docs.docker.com/engine/install/ubuntu/

卸载旧版本容器

 sudo apt remove docker docker-engine docker.io containerd runc
 sudo apt update
 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io
 
 sudo docker run hello-world

12.2.6.2.卸载容器引擎

 sudo apt purge docker-ce docker-ce-cli containerd.io
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd

13.前端运行

  • 进入项目目录:cd ruoyi-ui
  • 安装依赖:npm install --registry=https://registry.npm.taobao.org
  • 启动项目:npm run dev
  • 本地访问:浏览器输入http://localhost:80
  • 默认账户admin,密码 admin123

14.端口情况

  • 平台页面服务:http://localhost:80,账户admin,密码 admin123
  • 网关gateway:8080
  • 哨兵服务:http://localhost:8718,账号密码均为sentinel
  • nacos配置中心服务:http://localhost:8848/nacos/index.html,账号和密码nacos
  • 服务监控服务:http://localhost:9100,帐号ruoyi,密码123456
  • 认证auth:9200
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷咪哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值