首页 > 其他分享 >Nacos

Nacos

时间:2023-05-29 11:25:24浏览次数:40  
标签:服务 Service spring Nacos nacos cloud

命名空间

image-20230306215920179

1.Nacos 简介

官网: https://nacos.io/zh-cn/

Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速

实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心

的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2.Nacos 的核心概念

image-20230306220153927

2.1 服务 (Service)

服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客

户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,

如 Kubernetes Service 、 gRPC|Dubbo RPC Service 或 者 Spring Cloud RESTful

Service.

2.2 服务注册中心 (Service Registry)

服务注册中心,它是服务实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在

关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。服务注册中心可

能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

2.3 服务元数据 (Service Metadata)

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规

则、安全策略等描述服务的数据

2.4 服务提供方 (Service Provider)

是指提供可复用和可调用服务的应用方

2.5 服务消费方 (Service Consumer)

是指会发起对某个服务调用的应用方

2.6 配置 (Configuration)---****配置文件中心

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立

的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地

和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者

运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。

2.7 配置管理 (Configuration Management)

在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等

所有与配置相关的活动统称为配置管理。

2.8 名字服务 (Naming Service)

提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管

理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock

Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的

2大场景

2.9 配置服务 (Configuration Service)

在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。

3.NacosServer 的安装和启动

NacosServer 相当于 EurekaServer,只不过 eurekaServer 使我们自己搭建的一个项目,

而 NacosServer 别人已经提供好了

3.1 NacosServer 的下载

我们要对应版本,目前 alibaba 稳定版是 2.2.6.RELEASE

在上一节中了解了版本对应关系,alibaba 2.2.6.RELEASE 对应的 nacos 版本为 1.4.2

3.2 解压以及目录说明

image-20230306220403061

3.3 修改配置文件【重点】

进入${Nacos}/conf 目录里面,使用文件编辑器打开 application.properties 文件,这里

面我使用的是 Nodepad++:

Nacos 默认使用嵌入式数据库实现数据的存储,并不方便观察数据存储的基本情况,这里面

我们修改为使用 Mysql 数据库做数据的存储,方便我们观察数据的结构。

在配置文件末尾添加如下配置

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://**localhost:3306/nacos**?characterEncoding=utf8&connectTimeout=1

000&socketTimeout=3000&autoReconnect=true

db.user=**root**

db.password=**123456**

注意:上面的 url 地址是我的服务器地址,你们的就填写自己的地址。

3.4 Mysql 表的导入

在 config 目录下找到对应的 sql 脚本,提示:Nacos 建议使用 5.7 的 Mysql 数据库,版本

较低或者较高可能存储兼容性问题

我使用的 Mysql 数据库版本为 5.7

image-20230306220511900

image-20230306220519619

3.5 NacosServer 的启动、

可以直接 startup.cmd -m standalone 启动单击版本

上面工作都完成后,现在我们来启动一个单机版的 Nacos 服务器。

进入到${Nacos}/bin 目录里面:

image-20230306220537400

image-20230306220546890

双击 startup.cmd 文件,完成 nacosServer 的启动。

http://localhost:8848/nacos ,即可访问启动 Nacos 实例。

Nacos 默认用户名和密码都是 nacos

如果想修改密码,可以直接修改数据库的 user 表,密码可以使用 BcryptPasswordEncoder

加密

输入正确的用户名和密码提交后,出现 Nacos 的控制台界面

4.使用 Nacos 做注册中心

4.2 版本依赖【重点再贴图一次】

image-20230306232119951

4.3 创建两个项目,选择依赖

start.aliyun.com

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.powernode</groupId>
    <artifactId>nacos-client-b</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>02-nacos-client-b</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
    	 <!-- 导入了spring-boot-starter-web依赖,由于spring cloud是基于springboot的,所以此依赖必须要有-->
        <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

4.4 application.yml

两个配置文件基本一致,注意端口和应用名称:

server:
    port: 8081
spring:
    application:
        name: nacos-client-b
    cloud:
        nacos:
            server-addr: localhost:8848
            username: nacos
            password: nacos
            discovery:  # 这里是和注册相关的配置
                namespace: dbd434aa-4547-4348-8bf1-32a896ca241d
                group: A_GROUP # 往哪个组注册
                service: user-service  # 这个才是注册列表的名字 如果不写 默认是取${spring.application.name}

4.5 修改两个启动类

@EnableDiscoveryClient //开启服务发现客户端 也就是 nacosServer 的客户端

4.6 服务发现详解

只能找到 同一个命名空间下的同一个组:

    @Autowired
    public DiscoveryClient discoveryClient; //提供的服务发现

   
    @GetMapping("test")
    public String test() {
        List<ServiceInstance> instances = discoveryClient.getInstances("user-service");
        System.out.println(instances);
        return "ok";
    }

5.集成 openfeign 做远程调用和负载均衡

跟之前是一样的:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

6.Nacos Discovery 对外暴露 Endpoint

Nacos Discovery 内 部 提 供 了 一 个

Endpoint, 对 应 的

endpoint id 为

nacos-discovery。我们通过该 Endpoint,能获取到:

 当前服务有哪些服务订阅者 ;

 当前应用 Nacos 的基础配置信息 ;

6.1 给任意项目添加依赖

假设我们想看消费者的一些信息,我们给消费者添加

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

6.2 修改配置文件

Endpoint 本身对外界隐藏显示,我们需要在配置里面开启对 Endponit 的显示支持。

修改 application.yml 配置文件,在里面添加如下的配置

management:
  endpoints:
    web:
      exposure:
        include: '*'  # 暴露所有的监控端点 # 如果一个服务需要被监控 那么就要讲自身的一些情况(一些信息接口)暴露出去
        
   

说明:

 exposure.include:对外界保留那些 Endpoint,若是所有则使用* ;

6.3 启动项目访问查看效果

http://localhost:8001/actuator

http://localhost:8001/actuator/nacosdiscovery

image-20230307125339659

7.Nacos Discovery Starter更多的配置项

image-20230307192000763

image-20230307192011283

8.nacos 集群设置

修改nacos项目下的conf目录下面的: cluster.conf


#it is ip  nacos 2.x 端口需要间隔一个 端口号
#example
192.168.16.101:8848
192.168.16.102:8850
192.168.16.103:8852

nacos-client 的配置文件:

spring:
    application:
        name: nacos-client-b
    cloud:
        nacos:
            server-addr: localhost:8848,localhost:8850

标签:服务,Service,spring,Nacos,nacos,cloud
From: https://www.cnblogs.com/firsthelloworld/p/17439903.html

相关文章

  • Nacos-Config
    Nacos配置文件中心使用SpringCloudAlibabaNacosConfig,可基于SpringCloud的编程模型快速接入Nacos配置管理功能2.1创建项目选择依赖<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactI......
  • nacos
    1.官网https://nacos.io/zh-cn/docs/quick-start.html2.下载Nacos输入网址:https://github.com/alibaba/nacos选择Naocs版本1.4.2Linux版:nacos-server-1.4.2.tar.gzWindows版:nacos-server-1.4.2.zip3.安装Nacos3.1Windows下安装解压到需要安装的文件夹下即......
  • rnacos v0.1.6版本发布
    rnacos是一个用rust重新实现的nacos。rnacos比java实现的nacos更轻量、快速、稳定;合适在开发、测试、受资限服务等环境平替nacos服务使用。rnacosv0.1.6变更内容完成历史配置历史变更记录页面开发。主要包含查询配置历史记录,与历史记录内容恢复两个功能。修复grpc处理日志......
  • 8.Nacos
    9.Nacos9.1.SpringCloudAlibaba简介SpringCloudAlibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。依托SpringCloudAlibaba,只需要添加一些注解和少量配置,就可......
  • docker部署nacos集群
    1.环境准备准备4台服务器,一台安装nginx和mysql另三台做集群使用IP服务操作系统192.168.3.215Nginx/MysqlCentOS7.9192.168.3.216Nacos-1CentOS7.9192.168.3.217Nacos-2CentOS7.9192.168.3.218Nacos-3CentOS7.9     mysql选用5.7......
  • 使用 Nacos 的配置功能和自动更新
    Nacos不但可以作为注册中心,同时也可以作为配置中心,方便我们对SpringCloud中的各个SpringBoot微服务的配置进行统一的管理维护。尤其是当微服务数量较多,并且在不同的服务器上进行部署时,使用配置中心进行统一管理维护的优势就更加明显。本篇博客仍然使用之前搭建的Nacos集群......
  • nacos的使用
    nacos的使用1.nacos可以作为注册中心和配置中心使用nacos的配置中心和注册中心的话,我们需要在配置文件中增加关于nacos的配置namespace,group可以不写,那么就是注册到默认的namespace和group下,不同namespace和group下是隔离开来的 2.如果我们只是想要注册到na......
  • Netty+Nacos+Disruptor自研企业级API网关-江潭落月复西斜
    Netty+Nacos+Disruptor自研企业级API网关download:3w51xuebccom使用Netty和SpringBoot实现仿微信的示例在本文中,我们将使用Netty和SpringBoot框架来创建一个简单的聊天应用程序,类似于微信。这个应用程序将支持多用户聊天和即时消息发送。下面让我们来一步步看看如何实现。第一步......
  • centos7上配置nacos及开机启动服务
    这里安装的是nacos2.2.0 https://github.com/alibaba/nacos/releasescentos7中需要配置java环境这里一般java1.8或1116都行sudoyumupdate#安装OpenJDK(JavaDevelopmentKit):#对于Java8:sudoyuminstalljava-1.8.0-openjdk#对于Java11:sudoyuminstalljava-1......
  • Linux上nacos启动成功,但网页无法加载
    Linux上nacos启动成功,但网页无法加载1、docker查询dockerps2、查询firewall防火墙是否打开8848端口firewall-cmd--query-port=8848/tcp若是返回yes则是打开,若是返回FirewallDisnotrunning则先打开防火墙。systemctlstartfirewalld.service3、打开8848端口f......