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. 西电oj135题 拼数字并排序

    类别综合 时间限制 1S 内存限制 1000Kb 问题描述 对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出.例如字符串"abc123d5e ...

  2. python xlwings实用操作记录

    import xlwings as xw tfile="test.xlsx" newfile="new.xlsx" app = xw.App(visible=F ...

  3. 在目标服务器Centos7上安装 GitLab Runner

    1.安装提示: 注意:如果你打算通过gitlab-ci,将项目部署到"目标服务器"上,那么这个GitLab Runner就要提前安装到这个"目标服务器"上 (这 ...

  4. STM32定时器(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,配置使用

    2.1    时钟来源 计数器时钟可以由下列时钟源提供: ·内部时钟(CK_INT) ·外部时钟模式1:外部输入脚(TIx) ·外部时钟模式2:外部触发输入(ETR) ·内部触发输入(ITRx):使用 ...

  5. 几行代码,把zip文件直接破解

    几行代码,把zip文件直接破解,不想讲解了,如果要使用就直接复制吧,讲解挺累的 import itertools import zipfile import os filename = "z ...

  6. 01. vim入门

    0. 前言 我打算写一个系列文章,用来详细介绍vim的使用技巧,我会从头开始,从vim入门,到vim的各种配置,这是第一篇 1. vim 的三种模式 Normal mode (正常模式) Inster ...

  7. 对使用网站模板编写自己的jsp页面的收获

    收获与问题 先感叹一句模板的强大,模板只要按照我的上一篇博客的步骤进行修改,我们就能拥有一个自己写好看许多的界面了. 我目前套用模板还不是很熟练,套用的速度还需要加快,不过目前的我,已经掌握了基本要领 ...

  8. [WinUI 3] 如何利用D3D11在SwapChainPanel控件上绘制OpenGL(Uwp通用)

    预览 技术实现 看过我上篇在 WPF 中实现 OpenGL 与 D3D 渲染的同学应该知道,我是依靠 WGL 中 WGL_NV_DX_interop 扩展与 D3D Surface 关联并在使用该 S ...

  9. Markdown 的常用语法

    声明(叠甲):鄙人水平有限,本文章仅供参考. 且本文章是一个不全的分享,只有我目前用的比较多的语法,如果有什么错误,欢迎大家指正.具体可以查看该网站 写博客我使用的是 Markdown,为熟悉 Mar ...

  10. SpringCloud Fegin 负载均衡

    Spring Cloud Ribbon 和 Spring Cloud Hystrix 在微服务中实现了客户端负载均衡的服务调用以及通过断路器来保护微服务应用.这两者作为基础工具类框架广泛地应用在各个微 ...