【微服务笔记19】微服务组件之Nacos注册中心基础环境搭建

news2024/11/15 8:26:57

这篇文章,主要介绍微服务组件之Nacos注册中心基础环境搭建。

目录

一、Nacos注册中心

1.1、Nacos注册中心

1.2、搭建NacosServer服务端

(1)下载Nacos Server服务端工程

(2)修改配置信息

(3)单机启动nacos服务

(4)访问nacos控制台

1.3、搭建nacos客户端工程

(1)引入依赖

(2)添加配置信息

(3)编写启动类

(4)运行测试

1.4、服务发现配置属性介绍

1.5、nacos控制台介绍

(1)数据模型

(2)命名空间

(3)Group分组

(4)服务Service

(5)集群Cluster


一、Nacos注册中心

1.1、Nacos注册中心

Nacos是Spring Cloud Alibaba微服务组件之一,因为Spring Cloud Netflix中有些组件停止更新维护了,所以Alibaba就基于Spring Cloud Netflix第一代微服务组件之上,开发出了自己的一套微服务组件,即:第二代微服务组件Spring Cloud Alibaba。

Nacos就是Spring Cloud Alibaba中的一个组件,这个组件不仅具备了注册中心的作用,而且还具备配置中心的,此外Nacos提供了一个可视化的管理界面,可以方便的管理服务、服务配置信息等。

Nacos是Dynamic Naming and Configuration Service的缩写,中文含义就是:动态命名和配置服务,所以Nacos具备的两个核心功能就是:服务发现、配置管理。这里首先介绍一下,Nacos实现的注册中心功能。

Nacos注册中心的核心思想和Eureka注册中心是类似的,也是采用的C/S架构模式,但是和Eureka注册中心的区别在于,Nacos已经给我们提供了Nacos Server服务端工程,我们只需要下载对应的jar包即可使用,不需要我们自己搭建注册中心服务端工程。

1.2、搭建NacosServer服务端

(1)下载Nacos Server服务端工程

Nacos注册中心服务端工程不需要我们自己搭建,从Nacos官网下载对应版本的Nacos Server对应的jar包即可。目前nacos已经开发到了2.x版本,对于之前的1.x版本已经不再进行维护,所以推荐使用2.x版本的nacos,我下载的是nacos2.2.2最新版本作为案例。

下载nacos server服务端之后,解压目录,目录结构如下所示:

(2)修改配置信息

nacos官网说,对于2.2.2和2.2.1版本的NacosServer安装包,需要修改【conf/application.properties】配置文件中的【nacos.core.auth.plugin.nacos.token.secret.key】属性值,这个属性就是自定义密钥,修改成自己的即可。为了方便演示,官网也给出了一个测试密钥,我们可以暂时拿来使用。

### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789和VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
  • 注意:没有修改这个配置信息,将无法启动。

(3)单机启动nacos服务

这里我们是采用单机的nacos服务,所以执行下面的命令就可以启动服务。

# windows下执行这个启动
startup.cmd -m standalone

# linux下执行下面命令启动
sh startup.sh -m standalone

 执行命令之后,就可以正常启动nacos服务端啦,如下所示。

(4)访问nacos控制台

nacos服务端工程,给我们提供了一个可视化的管理界面,可以清楚的看到各微服务实例的运行状态,配置信息等内容,nacos控制台访问【http://127.0.0.1:8848/nacos】地址即可进入到nacos控制台界面(nacos默认的启动端口是8848)。

到此,nacos server服务端工程就已经搭建好啦,下面就搭建一个客户端工程。

1.3、搭建nacos客户端工程

nacos客户端工程,其实就是每一个微服务应用程序,在应用程序中引入【nacos-discovery】依赖,启动类上面使用【】注解。因为现在是要使用Spring Cloud Alibaba微服务,所以在原先微服务的基础之上,我们还需要引入【Spring Cloud Alibaba】的微服务依赖。

(1)引入依赖

  • 父工程:需要引入SpringBoot依赖、Spring Cloud依赖、Spring Cloud Alibaba依赖。
  • 需要注意的是,这三个依赖之间的版本需要匹配,具体的版本可以查看【版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub】地址。
  • 有时候可能因为版本不匹配问题,会导致服务搭建失败。
<!-- 引入SpringBoot依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <!-- 使用 dependencyManagement 依赖管理,统一管理组件的版本 -->
    <dependencies>
        <!-- 引入 SpringCloud 微服务依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- 引入 Spring Cloud Alibaba 依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.7.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
  • 子工程:子工程中引入【nacos-discovery】客户端依赖。
<!-- 引入 web 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入 nacos-discovery 客户端依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

(2)添加配置信息

  • 在application.yml配置文件中,需要指定nacos server的服务地址。
server:
  port: 9090
spring:
  application:
    name: nacos-consumer # 微服务名称
  cloud:
    nacos:
      discovery:
        enabled: true # 启用 nacos 服务发现,默认是true
        service: ${spring.application.name} # 指定注册到nacos注册中心中的微服务名称
        server-addr: 127.0.0.1:8848 # nacos server 注册中心服务端的地址

(3)编写启动类

package com.gitee.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @version 1.0.0
 * @Date: 2023/4/22 9:28
 * @Copyright (C) ZhuYouBin
 * @Description: nacos消费者工程启动类
 */
// 启动 nacos 服务发现客户端
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApp.class, args);
    }
}

(4)运行测试

启动nacos客户端工程之后,去nacos控制台查看是否服务注册成功。

1.4、服务发现配置属性介绍

nacos服务发现常见的配置属性有下面这些:

spring.cloud.nacos.discovery.service:给当前的服务命名,默认是 ${spring.application.name}
spring.cloud.nacos.discovery.server-addr:Nacos Server 启动监听的ip地址和端口
spring.cloud.nacos.discovery.group:设置服务所处的分组,默认是DEFAULT_GROUP
spring.cloud.nacos.discovery.weight:设置服务的权重,权重越大负载均衡时候分发请求越多(取值范围 1 到 100,数值越大,权重越大)
spring.cloud.nacos.discovery.namespace:命名空间,设置不同的命名空间,就相当于是不同的环境,例如:开发环境、测试环境、生产环境。
spring.cloud.nacos.discovery.cluster-name:集群名称,默认是 DEFAULT

1.5、nacos控制台介绍

(1)数据模型

在nacos中,它将所有的微服务采用一个数据模型来定义,分别是:

  • 命名空间:相当于是将应用分成了多个环境,例如可以有:开发环境、测试环境、生产环境。
  • 分组:一个命名空间下面,可以存在多个分组,每一个分组就是一些服务的集合。
  • 服务:服务就是指一个微服务应用程序,例如:订单微服务、商品微服务。
  • 集群:一个服务中,可以部署多个结点,这些服务结点就组成了集群的概念。
  • 实例:最小的一个单元,就是指具体的微服务结点。

(2)命名空间

在nacos控制台中的【命名空间】菜单里面,可以新增、删除命名空间,默认会有public命名空间,并且这个是不能进行删除、修改的。

可以在application.yml配置文件中,通过【spring.cloud.nacos.discovery.namespace】属性指定注册到哪个命名空间里面,需要注意的是:这个是将命名空间的ID配置到namespace里面。

(3)Group分组

Group分组是对命名空间进一步细分,两个微服务名称相同,但是分组不同,那么这里个微服务就不会作为集群管理。

但是如果分组是相同的,那么两个相同的微服务将被纳入同一个集群里面管理。 

(4)服务Service

一个Group分组下面,就是一个一个的具体微服务啦,一个分组下面可以有多个微服务,例如:订单微服务、商品微服务。

(5)集群Cluster

一个服务下面,可以部署多台实例,这些实例就组成了一个集群,详情里面可以看到集群中的每一个实例,并且可以对实例进行上线、下线操作。

  • 上线是指:将实例的权重修改为1,请求会分发到这个实例上面。
  • 下线是指:将实例的权重修改为0,请求不会分发到这个实例上面,但是服务实例仍然是运行的。

到此,Nacos注册中心的基础环境就搭建好啦。

综上,这篇文章结束了,主要介绍微服务组件之Nacos注册中心基础环境搭建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Hello Network】网络编程套接字(三)

作者&#xff1a;小萌新 专栏&#xff1a;网络 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;简单介绍下各种类型的Tcp协议 各种类型Tcp服务器 多进程版的TCP网络程序捕捉SIGCHLD信号让孙子进程执行任务 多线程TCP网络程序线程池版多线程TCP网络…

Elasticsearch学习,请先看这篇!

目录 一、初始elasticsearch 1、概述 简介 发展 2、倒排索引 3、基本概念 文档 索引 Mysql和es的区别 4、分词器 初始分词器 Ik分词器-扩展词库 二、索引库操作 1、mapper属性 2、创建索引库 3、查询、删除索引库 三、文档操作 1、新增文档 2、查询、删除文档…

计算机网络科普

文章目录 1、集线器2、CSMA/CD协议3、交换机3.1 交换机的桥接 4、 路由器5、 路由表6、IP地址7、MAC地址8、ARP协议9、关于网络层次模型10、路由器 1、集线器 计算机之间的相互通信&#xff0c;你会怎么设计&#xff1f; 如果是两台计算机&#xff0c;之间拉一条线&#xff0c;…

ClickHouse性能优化

目录 1 Explain查看执行计划优化sql1.1 基本语法1.2 案例实操1.2.1 查看 PLAIN1.2.2 AST 语法树1.2.3 SYNTAX 语法优化1.2.4 查看 PIPELINE 2 ClickHouse建表优化2.1 数据类型2.1.1 时间字段的类型2.1.2 空值存储类型 2.2 分区和索引2.3 表参数2.4 写入和删除优化2.5 常见配置2…

分享一些提升效率的小工具

1、 IObit Uninstaller IObit Uninstaller是一款简单专业的卸载工具&#xff0c;可以帮我们卸载电脑中顽固难卸的软件和浏览器插件&#xff0c;支持强制一键卸载和文件粉碎功能。 除了卸载软件&#xff0c;它还可以自动帮我们检测软件安装、检测软件更新、查看工具栏和插件。 …

IDEA22.3.3的三个常用经常遇到的配置问题

1、期待效果&#xff1a;【打开iDEA的时候&#xff0c;让开发者选择需要打开的项目】 设置如下 2、期待效果&#xff1a;配置默认的Maven&#xff0c;避免每次新建项目后&#xff0c;都需要去修改Maven配置 同理&#xff0c;修改默认的java版本和自己本地java环境一致 3、新建…

数据库SQL语句优化技巧

当今世界&#xff0c;数据量不断增长&#xff0c;数据库的使用变得越来越普遍。虽然数据库提供了很多强大的功能&#xff0c;但是它们也需要被优化以确保它们的性能得到最大化。在本篇博客中&#xff0c;我们将探讨SQL语句优化的几种技巧&#xff0c;这些技巧可以帮助您提高数据…

零、网络基础概述(TCP/IP模型、端口、网关、DNS、ARP、IP编址与子网划分、UDP、VRP)

文章目录 前言一、网络基础1、TCP/IP模型2、端口的作用&#xff1a;3、MAC 地址4、网关&#xff08;gateway&#xff09;5、域名解析服务&#xff08;DNS&#xff09;6、TCP端口、UDP端口区别&#xff1a;7、交换机与路由器 二、ARP 理论1、定义2、查看ARP缓存3、ARP 报文种类&…

Linux基础——远程访问及控制(SSH)

Linux基础——远程访问及控制 一、OpenSSH服务器二、sshd_config配置文件三、SSH服务端1.查询版本—— ssh -V2.SSH远程登录3.监听端口修改4.设置黑白名单5.远程复制——scp6.安全性传输——sftp 四、SSH服务的验证1.SSH服务的两种验证方式密码验证密钥验证 3.公钥与私钥的关系…

ORA-04021:等待锁定对象时发生超时

现场人员反馈问题&#xff0c;drop表报错&#xff0c;如下图 是个rac环境&#xff0c;处理过程 1、2个节点上查看锁表&#xff0c;没任何输出 SYSorcl2> select name from v$db_object_cache where ownerUSR_DATAI and type in(PROCEDURE,FUNCTION) and locks > 0 and …

软件版本号

版本号 上图是在MVN仓库中随便找的一个依赖的历 史版本 我们可以发现版本号一般是由 数字英文 组成 数字 一般大家都会看到1.x或者1.xx.xxx.Beta这种版本号&#xff0c;前面是数字 以 1.xx.xxx 为例 1是major号&#xff0c;一般重大更新会更新major号.xx或者.xx.xxx称为min…

arduino学习笔记1

一.hello word实验 1.基础结构 void setup() {// put your setup code here, to run once://设置初始状态&#xff0c;比如引脚、波特率等 }void loop() {// put your main code here, to run repeatedly://相当于main函数&#xff0c;但一直循环 }2.Serial&#xff08;串行通…

像素是什么

像素分为设备像素和设备无关像素。 下面说说来龙去脉。 一、显示器 显示图像的电子设备。 &#xff08;一&#xff09;显示器种类 1.LCD LCD&#xff08;Liquid crystal display&#xff09;&#xff0c;是液体晶体显示&#xff0c;也就是液晶显示器&#xff0c;LCD具有功耗低…

谷歌 Google Cloud 安装 NodeJS服务环境

目录 1. 安装 wget2. 安装 Node2.1 下载安装包2.2 安装包解压2.3 3 安装全局包并创建软链接 3. 安装 git 创建实例略过&#xff0c;点击 SSH 按钮&#xff0c; 在浏览器中打开SSH客户端 注&#xff1a; 本文基于 CentOS 9服务器操作系统 为了方便后面工具插件的顺利安装&a…

用PHP实现经典的4种排序算法

文章目录 一、前言二、4种排序算法2.1 快速排序2.2 插入排序2.3 选择排序2.4 冒泡排序 总结 一、前言 排序算法是一种将一组无序的数据元素按照某个规则(大小、字母序等)排列成有序的序列的算法。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 1.冒…

Python批量梯度下降法的举例

梯度下降法 梯度下降法是一种常用的优化算法&#xff0c;用于求解目标函数的最小值。其基本思想是&#xff0c;通过不断地朝着函数梯度下降的方向更新参数&#xff0c;直到找到函数的最小值。 具体来说&#xff0c;假设我们有一个可导的目标函数 f ( x ) f(x) f(x)&#xff…

项目五:使用路由器构建园区网

使用路由器构建园区网 1、新建拓扑2、配置交换机与主机3、配置路由交换机并进行通信4、通信测试5、配置路由器并进行通信测试1、配置路由器R-12、配置路由器R-2、R-33、通信测试 1、新建拓扑 依次添加四台主机&#xff0c;两台交换机&#xff0c;型号为S3700。两台路由交换机&…

体制内干部职务职级及领导干部排序对应关系大全

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 一、公务员级别对应关系 &#xff08;一&#xff09;综合管理公务员职务与职级 1、职务分为10级&#xff0c;包括&#xff1a;正国职、副国职、正部职、副部职、正…

【WSN定位】基于加权双曲线的Dvhop定位算法【Matlab代码#16】

文章目录 1. 原始Dvhop定位2. 基于双曲线的Dvhop定位3. 对原始模型加权4. 部分代码5. 结果展示6. 资源获取7. 参考文献 1. 原始Dvhop定位 可参考Dvhop定位算法 2. 基于双曲线的Dvhop定位 双曲线定位算法是一种通过将待定位节点定位在以锚节点为焦点、两锚节点之间距离为焦距…

字符集与字符编码(ASCII、GBK、UNICODE)

1 常见编码 1.1 单字节编码&#xff1a;ASCII ASCII使用1个字节&#xff08;8个bit&#xff09;来记录一组常用字符&#xff0c;见下表&#xff1a; 例如其中字母a的二进制位&#xff1a;1100 001 97&#xff0c;那么a在计算机中就可以用1100001来保存。 注意上表中其实只…