IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> spring boot升级spring cloud注意事项 -> 正文阅读

[Java知识库]spring boot升级spring cloud注意事项

项目升级,从springboot转成springcloud,记录一些过程中遇到的问题和坑。

一、确定版本和组件选型

版本不兼容会造成很多问题,所以需要根据项目使用的Spring Boot Version确定相关版本。
此处使用的是Spring Boot Version: 2.3.5.RELEASE,参考官网推荐以及支持的稳定版本最终确定各版本如下:
Spring Boot Version: 2.3.5.RELEASE
Spring Cloud Version: Hoxton.SR9
Spring Cloud Alibaba Version:2.2.6.RELEASE

组件选型如下:
1、服务注册与发现:Nacos 1.4.2
2、配置中心:Nacos 1.4.2
3、网关:Spring Cloud Gateway 2.2.6 RELEASE
4、服务调用和负载均衡:OpenFeign 2.2.6 RELEASE
5、服务降级:Sentinel 1.8.1

如何确定版本?

Git版本说明网址:(组件版本以及依赖关系)
在这里插入图片描述

Spring Cloud Version: Hoxton.SR9 官方文档
在这里插入图片描述

ps:如果页面上没有展示你要找的版本,可以把后缀版本换成你要找的。
Spring Cloud 官网地址
spring-cloud-alibaba项目git网址

如何确定组件选型?

根据项目需求,确定相关组件的选择,主要从以下几点入手:
1、兼容性问题(选择合适自身项目的组件,不一定是越新越好)
2、官方仍升级与维护、社区活跃度(便于后续问题的查找与解决)
3、性能与特殊需求(如有要求可针对性选择)
具体可以先了解一下各个组件的功能与差异、侧重点等,可以参考如下文章 :
spring cloud 组件使用
Spring Cloud笔记(2) 组件的搭配和选择

二、父工程

原涉及业务逻辑相关(需要拆分代码的)暂时可以先不做,Spring Cloud下有多个微服务,首先需要新建maven父工程,无需包含src文件等,保留pom文件,主要用来聚合各个子模块。原业务逻辑整体作为一个微服务子模块,后续可以根据需要拆分成各个子模块,例如:定时任务模块、数据库实体类模块、公共方法工具类模块、业务区分模块(根据需要:例 用户模块、商品模块等),登录授权模块、网关模块、注册中心、配置中心等。父工程中只保留pom文件即可,此处注意dependencyManagement和dependencies标签的区别,dependencyManagement并没有真正引入依赖,只是在父工程中做了声明,真正引入需要各个子项目显式声明引入。

具体区别可参考此文章 dependencyManagement与dependencies的区别

以下各个微服务搭建具体流程可以自行搜索更为详细的资料,本文简单做流程记录,我是参考b站视频搭建初步各组件demo,后续再慢慢完善各个细节。

三、nacos作为注册中心与配置中心

单机版

1、下载nacos服务端并解压
此处选择版本为1.4.2,nacos 1.4.2 网址
选择其他版本可自行查找下载,nacos git 网址
windows环境下下载nacos-server-1.4.2.zip文件

2、解压后运行startup.cmd。
使用windows控制台启动,命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
或者修改脚本文件startup.cmd的启动模式为单机模式:
//set MODE=”standalone”
不修改默认是集群模式 set MODE=”cluster”

3、服务启动后访问:http://localhost:8848/nacos 用户名和密码都是nacos

持久化到数据库

1、在开始搭建集群之前,需要先将Nacos的默认数据库derby切换成mysql。
首先启动本机mysql,创建nacos_config数据库,并在nacos_config数据库下执行conf目录下的nacos-mysql.sql脚本(完成数据库创建及表创建)

2、进入conf目录下,打开application.properties,修改如下参数:

spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

注:数据库端口及账号密码换成自己的

集群版

1、脚本文件startup.cmd的启动模式为集群模式:set MODE=”cluster” (默认即是集群模式)

2、开启持久化到数据库。

3、将 cluster.conf.example文件重命名为 cluster.conf,打开文件并将集群中所有节点的ip:port写入。

4、集群占用内存较大,在一台电脑启动集群模式建议修改默认内存配置。否则可能再启动多个时会因为内存不足启动失败。参数含义:
-Xms: 设定程序启动时占用内存大小
-Xmx: 设定程序运行期间最大可占用的内存大小
-Xmn:新生代大小

5、复制nacos文件三份,分别修改application.properties 各自绑定端口,或者启动时添加端口参数

6、配置nginx实现负载均衡,修改nginx/conf 路径下的 nginx.conf 文件

7、先启动 nginx,再依次启动3333、4444、5555的 nacos 节点(此处3333、4444、5555 是不同的nacos端口)
服务启动后访问:127.0.0.1:1111/nacos 用户名和密码都是nacos,查看集群管理结点列表(此处1111 是nginx配置的对外端口)

nacos集群搭建参考博客:Nacos集群的搭建过程详解
nacos注册中心参考文章:Nacos 注册中心实战
具体使用可参考:nacos文档

注意事项:
1、配置文件必须是bootstrap.properties或者bootstrap.yml,如果配置application.properties或者application.yml会导致加载不到配置。
2、@RefreshScope实现自动刷新,此注解主要用来让这个类下的配置内容支持动态刷新,也就是当我们的应用启动之后,修改了Nacos中的配置内容之后,这里也会马上生效。
3、nacos配置中心文件命名规则:server-name+profile+文件格式 ,例如:nacos-config-client-dev.yaml ,注意yaml不要写成yml。

四、gateway网关

网关这块主要注意路径匹配规则配置,还有注意跨域相关配置,否则搭建完有可能会报不允许跨域访问的错误。以下仅供参考

import org.springframework.web.cors.CorsConfigurationSource; //导入依赖的package包/类
private CorsConfigurationSource corsConfiguration() {
    	CorsConfigurationSource source= new UrlBasedCorsConfigurationSource();
    	CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");//同源配置,*表示任何请求都视为同源,若需指定ip和端口可修改例 "localhost:8080",以","分隔
        corsConfiguration.addAllowedHeader("*");//允许哪些header,本初使用token,可将*替换成token
        corsConfiguration.addAllowedMethod("*");//允许的请求方法,例如GET、POST
        corsConfiguration.setMaxAge(3600L);
        corsConfiguration.setAllowCredentials(true);
        ((UrlBasedCorsConfigurationSource) source).registerCorsConfiguration("/**", corsConfiguration);
        return source;
}

升级此处还涉及到了SpringCloud Gateway + Spring Security 整合,需要注意的是Spring Cloud Gateway中使用的是Spring-Webflux,所以不能用Spring MVC的那套安全配置。
Reactor与传统MVC配置对应如图:
Reactor与传统MVC配置对应
更为具体的实践可参考这篇文章 SpringCloud Gateway + Spring Security

五、sentinel熔断限流

1、Dashboard的部署,下载 sentinel 服务端jar包,此处使用版本1.8.1。
下载地址:sentinel 1.8.1
具体使用可参考:Sentinel项目git网址 中文文档

2、启动
前提:java8环境ok、8080端口不能被占用(默认8080端口,可以指定端口启动)
进入下载好的目录,打开cmd,输入命令

java -jar -Dserver.port=7080 sentinel-dashboard-1.8.1.jar

启动Sentinel成功后,登录localhost:7080 进入登录页面,默认账号密码都是sentinel。
注意:Sentinel采用懒加载模式,访问路径一次后,才能在控制台上看到结果。

3、持久化配置,此处使用的是结合 nacos 持久化到数据库。需要引入依赖,添加配置。

4、添加Nacos业务规则配置,文件名称即为对应的服务应用名称。
例限流json配置:

[
    {
         "resource": "/byUrl",
         "limitApp": "default",
         "grade":   1,
         "count":   1,
         "strategy": 0,
         "controlBehavior": 0,
         "clusterMode": false    
    }
]

resource:资源名称
limitApp:来源应用
grade:阈值类型,0代表线程数,1代表QPS
count:单击阈值
strategy:流控模式,0代表直接,1代表关联,2代表链路
controlBehavior:流控效果,0代表快速失败,1代表Warm Up,2代表排队等待
clusterMode:是否集群

例降级json配置:

[
    {
         "resource": "/byUrl",
         "grade":   2,
         "count":   2,
         "minRequestAmount": 3,
         "timeWindow": 3,
         "statIntervalMs": 6000    
    }
]

图片来自官方文档:
在这里插入图片描述
注意配置降级的时候,需要改变配置文件中的rule-type,否则对不上不会生效。
在这里插入图片描述
在这里插入图片描述

Sentinel搭建参考博客:SpringCloud Alibaba Sentinel(史上最详细)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:22:54  更:2022-07-21 21:24:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:58:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码