Spring Cloud Alibaba 实操 (四) Nacos持久化与集群

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Nacos持久化与集群

1.概述

《Spring Cloud极简入门》应用架构演变一文中我们有提到,我们可以通过集群手段来实现来提高应用的作业能力,防止单节点故障。在之前的Nacos案例中我们玩的都是单机版的, 本片文章我们来探讨一下Nacos的集群部署。

在Nacos中数据默认是基于内存存储的,当Nacos重启数据(服务列表,配置列表)将会丢失,在Nacos中支持将数据持久到数据库。那么当我们对Nacos做了集群部署之后,多个Nacos节点之间是需要数据同步(数据共享)的,而正好Nacos节点之间的数据同步也是基于数据库来实现。所以我们要多Nacos做集群操作得向对Nacos做数据持久化。

这里我演示的是在centos7上面进行Nacos的集群部署,使用一个服务器上模拟三个Nacos的部署,你需要准备好centos7的环境,安装好JDK,配置好JAVA_HOME,安装好MySql数据库,同时我们会用到Nginx,请先安装好Nginx。

2.Nacos数据持久到Mysql

2.1.配置db信息

找到Nacos的安装目录,然后找到配置文件 : conf/application.properties配置文件,添加db相关的信息如下:

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

提示:这里选择的是mysql数据库,并且配置dataSource的四要素,数据库为Nacos。

2.2.创建相关表

在Nacos安装目录中有一个 conf/nacos-mysql.sql 脚本文件,这个是Nacos自带的,你需要创建一个数据库“nacos” 根我们上一个步骤配置的db.url中的数据库保持一致。(我这里用的MySql 5.5.25,你可以选择更高一点的版本)如下:
image.png

这里就是Nacos数据持久所需要的表,这里不详细所表的含义,你也可以不用关心。

2.3.小结

到这里其实我们已经完成了持久化的配置,Nacos中的数据会自动持久到Mysql中,重启Nacos也不怕数据的丢失,您可以自己测试一下看看 。数据持久化是Nacos集群的基石。

当然,要做集群是一定要做持久化,做了持久化不一定非得做集群。

3.Nacos集群部署

3.1.Nacos集群方案

在Nacos官网有这么一个集群图例:
image.png

这里采用三个Nacos节点(三个centos服务器),通过“VIP”代理到三个Nacos,这里的“VIP”指的是代理,我们后续会采用Nginx来实现,可能你不太明白这里的代理的作用,其实跟我们在《Spring Cloud极简入门》中提高的“负载均衡”的概念是一样的。现在我有三个Nacos,那么我的Java程序客户端应该向哪个Nacos发起服务注册呢?你总不可能让我向三个Nacos都发起注册(实际上也可以),这里的“VIP”(Nginx)代理的作用就是统一接受请求,然后将请求分发(路由)到后端的三个Nacos服务。我们客户端只需要关注“VIP”(Nginx)的地址就可以了。

3.2.集群配置

修改配置文件 cluster.conf,配置三个Nacos的地址和端口 , 如下:

# ip:port
172.17.0.15:8841
172.17.0.15:8842
172.17.0.15:8843

我这里是一个服务器模拟三个Nacos,所以使用端口进行区分。

3.3.修改启动命令

因为是本地测试,所以在启动Nacos的时候需要一个Nacos启动三次(当然你也可以安装和配置三个Nacos),并且每次启动都要修改端口,那么我们就复制三份启动脚本,脚本中的端口修改成不同的端口 , 在生成环境并不需要做如此操作.
复制并修改 bin/startup.sh 如下:

startup-8841.sh
startup-8842.sh
startup-8843.sh

编辑三个启动命令,修改JVM启动端口,分别为:8841,8842,8843如下:
image.png

然后启动三启动命令,启动三个Nacos。

3.4.安装Nginx代理

安装工具和依赖

yum install wget -y     //已经安装就可以不用安装了
yum install gcc
yum install pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel

创建安装目录

mkdir /usr/local/nginx
cd /usr/local/nginx

下载和解压

wget http://nginx.org/download/nginx-1.13.7.tar.gz    //下载nginx

tar -xvf nginx-1.13.7.tar.g        //解压tar包

编译和安装

./configure
make                //执行make命令
make install        //执行make install命令

启动Nginx

/usr/local/nginx/sbin/nginx
或者
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

关闭Nginx

pkill -9 nginx

3.5.配置Nginx代理Nacos

修改Nginx配置文件 /usr/local/nginx/conf/nginx.conf,增加主机配置(Server) 配置三个Nacos的代理(upstream)
image.png

提示:这里通过 server 配置了一个主机 ,listen监听的端口是 8848,这个是暴露给客户端的端口,location配置了/nacos/的访问路径,通过 proxy_pass配置代理,然后通过 upstream配置了三个Nacos节点。

4.集群测试

4.1.浏览器测试

通过访问 Nginx 访问Nacos界面: http://centos的ip:8848/nacos/ ,记得使用centos的ip
image.png

这里可以看到,在集群管理里面出现了三个节点。

4.2.客户端配置

修改springcloudalibaba-user-server-1010的yml配置,将注册中心地址指向Nginx。

spring:
  cloud:
    nacos:
      discovery:
        server-addr: centos的ip:8848    #这里指向Nginx地址即可

5.小结

到这里,Nacos就已经完成了,虽然是使用一个服务器模拟三个Nacos,但是集成方式都是一模一样,在生产环境需要把ip指向响应的服务器即可。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
20天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
7天前
|
存储 人工智能 Java
Spring AI Alibaba 配置管理,用 Nacos 就够了
本文通过一些实操案例展示了 Spring AI Alibaba + Nacos 在解决 AI 应用中一系列复杂配置管理挑战的方案,从动态 Prompt 模板的灵活调整、模型参数的即时优化,到敏感信息的安全加密存储。Spring AI Alibaba 简化了对接阿里云通义大模型的流程,内置 Nacos 集成也为开发者提供了无缝衔接云端配置托管的捷径,整体上极大提升了 AI 应用开发的灵活性和响应速度。
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
1月前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
1月前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
阿里云开源 Spring AI Alibaba,旨在帮助 Java 开发者快速构建 AI 应用,共同构建物理新世界。
|
2月前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
3月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
126 1
|
1月前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
131 1
Springcloud Alibaba + jdk17+nacos 项目实践
|
1月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
2月前
|
人工智能 前端开发 Java
Spring Cloud Alibaba AI,阿里AI这不得玩一下
🏀闪亮主角: 大家好,我是JavaDog程序狗。今天分享Spring Cloud Alibaba AI,基于Spring AI并提供阿里云通义大模型的Java AI应用。本狗用SpringBoot+uniapp+uview2对接Spring Cloud Alibaba AI,带你打造聊天小AI。 📘故事背景: 🎁获取源码: 关注公众号“JavaDog程序狗”,发送“alibaba-ai”即可获取源码。 🎯主要目标:
95 0
下一篇
无影云桌面