Nacos是SpringCloudAilibaba提供的开源组件,有了Nacos我们就可以代替Eureka和SpringCloudConfig了,我们只需要在服务器启动该组件就行

Nacos

Nacos是一个易于构建云原生得动态服务发现、服务配置和服务管理平台。

常用于做注册中心、配置中心和服务管理平台

注册中心

注册中心的演变过程:

  • 使用RestTemplate来远程调用其他服务

  • 手动维护一份服务的信息,每次需要查询时从这个注册表中去获取

  • 通过nginx反向代理来实现服务的配置(upStream)

核心功能

服务注册: Nacos客户以REST请求形式向NacosServer注册自己的服务,提供自身元数据,NacosServer接收注册请求后,保存在一个双层Map中。

服务心跳: Nacos客户端会维护一个定时心跳告诉Nacos Server,说明服务一直处于可用状态,默认5s一次心跳。

服务同步: Nacos Server之间需要相互同步服务实例,用来保证服务信息的一致性。

服务发现: 服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。

服务健康检查: Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)。

配置启动

在启动前需要先安装Nacos,可以参考官网上的安装,启动方式单机的话就使用standalone,这里不过多讲述。

首先,我们需要先查看自己的SpringCloudAilibaba版本和对应Nacos版本,避免因为版本的不适配从而踩一些坑。

版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

在建立好一个SpringCloudAilibaba项目后,我们可以引入nacos-discovery依赖,因为我这里需要引入web来做测试,所以也把web的相关依赖引入了进来。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在各个Service的application配置项目运行的端口和Nacos的配置文件

server:
port: 8010 spring:
application:
name: stock-service # 服务名称
cloud:
nacos:
server-addr: localhost:8847 # 注册地址
discovery:
username: nacos # nacos登录的账户
password: nacos # nacos登录密码
namespace: public # 命名空间
# ephemeral: false # 服务宕机是否需要下线

然后通过启动项目,在nacos中就可以看到对应注册的服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJo6rj32-1677595993392)(C:\Users\DY\AppData\Roaming\marktext\images\2023-02-21-16-40-38-image.png)]

  • 从上面可以看到public的命名空间是默认的,我们可以自己定制自己的命名空间,从而可以满足各种场景的需求

  • ephemeral是配置非临时实例,默认是true,即代表当这个服务节点宕机或者挂掉,会删除在服务内的节点,配置了false的话,就不会将这个节点移除,可以配合是否触发阈值保护使用达到雪崩保护的目的

  • 同时可以结合负载均衡器,可以配置服务节点的权重,设置越大,分配请求越多。

集群搭建

  1. 默认下载中的startup.sh中mode默认是cluster,我们不需要修改

  2. 修改JVM内存参数,给节点设定内存,防止内存不够(可不配置)

  3. 修改conf/application.properties的配置,将数据源修改成mysql,密码也需要对应修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n7ttYBio-1677595993393)(C:\Users\DY\AppData\Roaming\marktext\images\2023-02-21-16-48-47-image.png)]

  1. 复制三份,分别对各个节点进行运行端口的修改

  2. 复制conf/cluster-example.conf到cluster.conf,并将各个节点都添加到该文件中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xsnpZBPX-1677595993393)(C:\Users\DY\AppData\Roaming\marktext\images\2023-02-21-16-52-00-image.png)]

  1. 启动各个节点,访问端口查看是否成功。

  2. 配置nginx,将注册请求转发到Nacos集群上

nginx配置:

#user  nobody;
worker_processes 1; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on;
#tcp_nopush on;
keepalive_timeout 65; upstream nacos-cluster{
server 10.60.36.29:8849;
server 10.60.36.29:8851;
server 10.60.36.29:8853;
}
server {
listen 8847;
server_name localhost; location /nacos {
proxy_pass http://nacos-cluster;
} location / {
root html;
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

修改项目的地址,注册中心修改成 注册中心IP:8847即可,端口和IP根据自己机子决定


最后:

这里就到文章的末尾啦,如果有什么错误的话指大佬指正,
root html;
}
}
}


修改项目的地址,注册中心修改成 注册中心IP:8847即可,端口和IP根据自己机子决定 ---------- > **最后:**
>
> 这里就到文章的末尾啦,如果有什么错误的话指大佬指正,

SpringCloud之Nacos学习使用的更多相关文章

  1. 肝了很久,冰河整理出这份4万字的SpringCloud与SpringCloudAlibaba学习笔记!!

    写在前面 不少小伙伴让我整理下有关SpringCloud和SpringCloudAlibaba的知识点,经过3天的收集和整理,冰河整理出这份4万字的SpringCloud与SpringCloudAli ...

  2. SpringCloud使用Nacos服务发现实现远程调用

    本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo. 1 Nacos 关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下. ...

  3. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  4. SpringCloud微服务学习笔记

    SpringCloud微服务学习笔记 项目地址: https://github.com/taoweidong/Micro-service-learning 单体架构(Monolithic架构) Mon ...

  5. Alibaba Nacos 学习(五):K8S Nacos搭建,使用nfs

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  6. Alibaba Nacos 学习(一):Nacos介绍与安装

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  7. Alibaba Nacos 学习(二):Spring Cloud Nacos Config

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  8. Alibaba Nacos 学习(三):Spring Cloud Nacos Discovery - FeignClient,Nacos 服务注册与发现

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  9. Alibaba Nacos 学习(四):Nacos Docker

    Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ...

  10. SpringCloud全家桶学习之Feign负载均衡----Feign(四)

    一.Feign概述 (1)Feign是什么? 官网地址:https://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-f ...

随机推荐

  1. windows电脑设置【定时任务】开机、关机、启动程序

    windows电脑设置[定时任务]开机.关机.启动程序 shutdown -s -t **(延时秒数):关机 shutdown -r -t **(延时秒数):重启 gina -s -t 36 (开机) ...

  2. 关于C#的async和await

    1.async 与 await需要同时出现在方法中  如下图所示 public static async Task b() { await Task.Run(() => { //Thread.S ...

  3. 博弈论练习4 Calendar Game(SG函数)

    题目链接在这里:D-Calendar Game_牛客竞赛博弈专题班组合游戏基本概念.对抗搜索.Bash游戏.Nim游戏习题 (nowcoder.com) 这题网上有关于奇偶性来找规律的做法,有点人类智 ...

  4. Google Play新功能 让您的应用在Play商店中闪耀

    Google Play 商店的商品详情内容是帮助潜在用户了解您应用的功能和价值的最佳方式.您提供的资源和信息 (应用说明.图像和视频) 对用户决定下载应用而言至关重要. 随着越来越多的用户购买移动设备 ...

  5. Django Models字段设置为空,界面上还校验必填问题

    models.CharField(max_length=1000,null=True,blank=True) 其中blank=True是admin管理后台自动校验放开

  6. 记录linux上无法和本地传输文件

    在学习docker搭建nacos的过程中,涉及到上传本地文件,但是包括从xshell直接拖拽还是xftp上传,都是失败, 最后百度查找多种不同的结果,最后实验下来是文件夹没有权限的问题. 解决步骤如下 ...

  7. 07-Spring的事务处理

    Spring中提供了七种事务的传播行为: PROPAGATION_REQUIRED:默认值,最常用,统一事务,出现异常,全部回滚 其余参考Spring事务处理word文档. 0.原转账业务(不含事务处 ...

  8. Java面向对象 --2

    22.面向对象特征之二: 继  承     2020-04-29  21:39:33 01.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么子类无需再定义这些属性和行为,只要继承父类即 ...

  9. [rk3568][common] 环境搭建

    1. 安装依赖 sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop \ git-cor ...

  10. 使用sync.Once实现高效的单例模式

    1. 简介 本文介绍使用sync.Once来实现单例模式,包括单例模式的定义,以及使用sync.Once实现单例模式的示例,同时也比较了其他单例模式的实现.最后以一个开源框架中使用sync.Once实 ...