SpringCloud Alibaba项目实战之nacos-server服务搭建过程


Posted in Java/Android onJune 21, 2021
目录
  • 1、Nacos简介
    • 1.1、什么是Nacos
    • 1.2、Nacos基本原理
  • 2、Nacos-Server服务部署
    • 2.1、standalone 模式
    • 2.2、cluster 模式

源码地址:https://gitee.com/fighter3/eshop-project.git

持续更新中……

大家好,我是三分恶。

这一节我们来学习SpringCloud Alibaba体系中一个非常重要的组件——Nacos。

 

1、Nacos简介

Nacos官方网站:https://nacos.io/zh-cn/

 

1.1、什么是Nacos

Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。

Nacos英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

Nacos 无缝支持一些主流的开源生态,使用Nacos,可以简化服务发现、配置管理、服务治理及管理。

如果要把Nacas和SpringCloud Netflix的组件对标的话,那么:

Nacos = Eureka/Consule + Config + Admin

 

1.2、Nacos基本原理

Nacos作为注册中心分为server与client。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

Server采用Java编写,为client提供注册发现服务与配置服务。而client可以用多语言实现,client与微服务嵌套在一起,nacos提供sdk和openApi,如果没有sdk也可以根据openApi手动写服务注册与发现和配置拉取的逻辑。

1.2.1、注册中心原理

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

服务注册方法:服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。

1.2.2、配置中心原理

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

 

2、Nacos-Server服务部署

Nacos 依赖 Java 环境来运行。如果是从代码开始构建并运行Nacos,还需要配置 Maven环境。我们直接使用发行版,需要保证JDK版本在1.8以上。

Nacos Server 有两种运行模式:

  • standalone
  • cluster

 

2.1、standalone 模式

我们使用win10来进行Nacos Server的standalone 模式的部署。

下载nacos-server

从https://github.com/alibaba/nacos/releases 下载nacos-server发行版。

官方推荐的版本是1.4.2或2.0.1。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

按照官方推荐,我们来尝(踩)鲜(坑)最新的发行版2.0.1,下载压缩包,下载完成后解压

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

启动nacos-server服务

进入%path%\nacos\bin文件夹,执行cmd命令startup.cmd -m standalone,其中-m standalone指定为单机模式,否则以cluster集群模式启动。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

可以看到Nacos Server的地址,访问 http://192.168.31.39:8848/nacos/index.html

需要登录,初始账号/密码是 nacos/nacos

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

登录之后可以看到Nacos的控制台。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

Linux下部署Nacos-Server服务也是类似,同样是先解压发行压缩包,然后执行启动脚本启动:

startup.sh -m standalone

这种默认情况下,我们的数据写入了了嵌入式数据库。不太方便观察数据存储的情况,nacos也提供了支持mysql数据源的能力。

注意:以下操作我在2.0.1版本失败了,所以以下操作是基于1.4.2版本。

MySQL数据库版本要求5.5以上。

1.创建数据库库,使用初始化文件nacos-mysql.sql初始化

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

2.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),修改mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

使用命令startup.cmd -m standalone启动Nacos Server

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

 

2.2、cluster 模式

开发和测试,我们直接用standalone 模式,OK,没什么问题。但是生产环境,为了保证Nacos的高可用,我们就得使用 cluster模式。

cluster 模式必须要用 MySQL,MySQL数据导入和上面一致,然后改两个配置文件:

conf/cluster.conf
conf/application.properties

大致如下:

cluster.conf,填入要运行 Nacos Server 机器的 ip

192.168.100.155
192.168.100.156
192.168.100.157   

修改NACOS_PATH/conf/application.properties,加入 MySQL 配置

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

Nacos采用的一个Leader节点,多个Follower节点的集群架构,数据一致性算法采用的是Raft。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

至于实战,由于机器资源资源原因,这里就不再演示。

SpringCloud Alibaba项目实战之nacos-server服务搭建过程

下一节,我们会把服务注册到Nacos注册中心,敬请期待!

"简单的事情重复做,重复的事情认真做,认真的事情有创造性地做!"——

我是三分恶,可以叫我老三/三分/三哥/三子,一个能文能武的全栈开发,咱们下期见!

参考:

【1】:Nacos 文档

【2】:什么是Nacos?Nacos注册配置中心介绍

【3】:Spring Cloud实战 | 第一篇:Windows搭建Nacos服务

【4】:nacos 实战(史上最全)

【5】:Nacos部署环境

以上就是SpringCloud Alibaba项目实战之nacos-server服务搭建过程的详细内容,更多关于SpringCloud Alibaba nacos-server搭建的资料请关注三水点靠木其它相关文章!

Java/Android 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
新手入门Jvm-- JVM对象创建与内存分配机制
Jun 18 Java/Android
Netty结合Protobuf进行编解码的方法
Jun 26 Java/Android
springboot临时文件存储目录配置方式
Jul 01 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
dubbo集成zipkin获取Traceid的实现
Jul 26 Java/Android
idea 在springboot中使用lombok插件的方法
Aug 02 Java/Android
Java获取e.printStackTrace()打印的信息方式
Aug 07 Java/Android
spring cloud 配置中心native配置方式
Sep 25 Java/Android
Java 数据结构七大排序使用分析
Apr 02 Java/Android
SpringBoot整合Minio文件存储
Apr 03 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
java中重写父类方法加不加@Override详解
Jun 21 #Java/Android
Java并发编程之Executor接口的使用
深入理解以DEBUG方式线程的底层运行原理
浅谈什么是SpringBoot异常处理自动配置的原理
SpringAop日志找不到方法的处理
详解SpringBoot异常处理流程及原理
Java新手教程之ArrayList的基本使用
You might like
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
php学习笔记之面向对象
2014/11/08 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
php多线程并发实现方法
2016/09/30 PHP
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python和Go语言的区别总结
2019/02/20 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
python和php哪个容易学
2020/06/19 Python
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
税务专业毕业生自荐信
2013/11/10 职场文书
高二物理教学反思
2014/02/08 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
文艺晚会主持词
2014/03/24 职场文书
天猫活动策划方案
2014/08/21 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android