源码地址: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是指该注册/配置中心都是以服务为核心。

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

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

Nacos = Eureka/Consule + Config + Admin

1.2、Nacos基本原理

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

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

1.2.1、注册中心原理

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

1.2.2、配置中心原理

2、Nacos-Server服务部署

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

Nacos Server 有两种运行模式:

  • standalone
  • cluster

2.1、standalone 模式

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

  1. 下载nacos-server

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

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

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

  1. 启动nacos-server服务

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

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

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

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

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

startup.sh -m standalone

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

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

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

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

  1. 修改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
  1. 使用命令startup.cmd -m standalone启动Nacos Server

2.2、cluster 模式

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

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

conf/cluster.conf
conf/application.properties

大致如下:

  1. cluster.conf,填入要运行 Nacos Server 机器的 ip
192.168.100.155
192.168.100.156
192.168.100.157
  1. 修改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。

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

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

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

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


参考:

【1】:Nacos 文档

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

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

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

【5】:Nacos部署环境

SpringCloud Alibaba实战(6:nacos-server服务搭建)的更多相关文章

  1. SpringCloud Alibaba实战(8:使用OpenFeign服务调用)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一个章节,我们已经成功地将服务注册到了Nacos注册中心,实现了服务注册和服务发 ...

  2. SpringCloud Alibaba实战(11:引入服务网关Gateway)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 在前面的章节中,我们已经完成了服务间的调用.统一配置等等,在这 ...

  3. SpringCloud Alibaba微服务实战三 - 服务调用

    导读:通过前面两篇文章我们准备好了微服务的基础环境并让accout-service 和 product-service对外提供了增删改查的能力,本篇我们的内容是让order-service作为消费者远 ...

  4. SpringCloud Alibaba实战(7:nacos注册中心管理微服务)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节我们已经完成了Nacos Server的本地部署,这一节我们学习如何将Nac ...

  5. SpringCloud Alibaba实战(10:分布式配置中心)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在我们前面介绍Nacos的时候,说到,Nacos除了可以作为注册中心,还可以作为配置 ...

  6. SpringCloud Alibaba入门之Nacos(SCA)

    SpringCloud Alibaba Spring Cloud Alibaba 致力于提供微服务开发 的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Clo ...

  7. SpringCloud Alibaba实战(3:存储设计与基础架构设计)

    1.存储设计 在上一章中,我们已经完成了基本业务流程的梳理和服务模块的划分,接下来,开始设计数据存储. 虽然在微服务的理论中,没有对数据库定强制性的规范,但一般,服务拆分之后,数据库也会对应的拆分. ...

  8. SpringCloud Alibaba实战(2:电商系统业务分析)

    选用了很常见的电商业务来进行SpringCloud Alibaba的实战. 当然,因为仅仅是为了学习SpringCloud Alibaba,所以对业务进行了大幅度简化,这里只取一个精简版的用户下单业务 ...

  9. SpringCloud学习之【NACOS实现服务的注册与发现】

    根据nacos官方的介绍,Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 具有服务发现和服务健康监 ...

随机推荐

  1. linux 发送邮件

    参考资料:https://www.cnblogs.com/imweihao/p/7250500.html https://blog.csdn.net/liang19890820/article/det ...

  2. 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用

    目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...

  3. QFNU 10-09 training

    1.F - Three displays 题意:就是给出了两个数组,然后第一组数中找到i,j,k满足i<j<k,第二组数中找到a[i],a[j],a[k],满足a[i]<a[j]&l ...

  4. Linux x86_64与i386区别之 —— 内存寻址

    毫无疑问,不管是32位,还是64位处理器,所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是 存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不 ...

  5. mysql多线程备份与还原工具mydumper

    (一)mydumper介绍 之前我们已经学过如何使用mysqldump备份恢复数据库:<mysql逻辑备份与还原工具mysqldump>,就目前来说,mysqldump是使用最广泛的MyS ...

  6. 手写Promise中then方法返回的结果或者规律

    1. Promise中then()方法返回来的结果或者规律 我们知道 promise 的 then 方法返回来的结果值[result]是由: 它指定的回调函数的结果决定的 2.比如说下面这一段代码 l ...

  7. [刷题] 343 Integer Break

    要求 给定一个正数n,可将其分割成多个数字的和,求让这些数字乘积最大的分割方法(至少分成两个数) 示例 n=2,返回1(2=1+1) n=10,返回36(10=3+3+4) 实现 回溯遍历(n^2,超 ...

  8. 优启通-PE启动盘制作工具 原版Win7系统安装超详细教程!!!!!

    https://www.jianshu.com/p/cd4abc9889b6 前期准备 原版Win7系统ISO映像文件 PE启动U盘或系统光盘(本教程以纯净无捆绑的优启通PE为示例) 优启通v3.3下 ...

  9. 攻防世界(三)Web_php_unserialize

    攻防世界系列:Web_php_unserialize 0x01.代码审计 1.类Demo中struct().destruct()函数分别在代码执行开始和结束时调用.而wakeup函数会在代码执行过程中 ...

  10. Redis 安装和启动

    Redis 安装 安装准备: redis 压缩包 官网下载地址:https://redis.io/download 安装步骤: 第一步:安装 gcc 编译器 官网发布的 Redis 压缩包是 C 语言 ...