gavbus8老司机(Nacos学习)

最后更新 :2023-03-25 02:59:24

Nacos学习

一、Nacos简介

1.1SpringCloudAlibaba简介

第?代 Spring Cloud (主要是 SCN)很多组件已经进?停更维护模式。

Spring Cloud:Netflix,Spring官?,SCA(被Spring官?认可)

注意:市场上主要使?的还是SCN,SCA?套框架的集合

Alibaba 更进?步,搞出了Spring Cloud Alibaba(SCA),SCA 是由?些阿?巴巴的开源组件和云产品组成的,2018年,Spring Cloud Alibaba 正式?住了 SpringCloud 官?孵化器。比较常用的组件。

  • Nacos(服务注册中?、配置中?)
  • Sentinel哨兵(服务的熔断、限流等)
  • Dubbo RPC/LB
  • Seata分布式事务解决?案

1.2Nacos简介

Nacos(Dynamic Naming and Configuration Service)是阿?巴巴开源的?个针对微服务架构中服务发现、配置管理和服务管理平台。

Nacos就是注册中?+配置中?的组合(Nacos=Eureka+Config+Bus)

官?:https://nacos.io下载地址:https://github.com/alibaba/Nacos

Nacos功能特性

  • 服务发现与健康检查(注册中心)
  • 动态配置管理(配置中心)
  • 动态DNS服务(域名解析)
  • 服务和元数据管理(管理平台的?度,nacos也有?个ui??,可以看到注册的
  • 服务及其实例信息(元数据信息)等),动态的服务权重调整、动态服务优雅下线,都可以去做

二、Nacos使用

2.1部署

1、单机部署

下载地址https://github.com/alibaba/nacos/releases/tag/1.2.0

启动命令:

linux/mac:sh startup.sh -m standalonewindows:cmd startup.cmd

访问地址http://192.168.159.128:8848/nacos/#/login 默认用户名和密码都是nacos



2、集群部署

如果是在单台机器上玩集群的话需要进入conf文件夹找到application.properties配置文件配置nacos.inetutils.ip-address=127.0.0.1 说明绑定特殊的ip 如果不在单台机器上玩的话不需要配置。

配置多台Linux集群环境,修改cluster.conf.example 文件名为cluster.conf 添加集群机器ip

192.168.198.10:8848192.168.198.11:8848192.168.198.12:8848

配置数据库

db.num=1db.url.0=jdbc:mysql://192.168.198.10:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user.0=rootdb.password.0=123456

Nacos默认启动是2g,这个值可以进行修改startup.sh 脚本文件


2.2客户端引入Nacos

常规

父类POM

<!--spring boot 父启动器依赖-->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.6.RELEASE</version>

</parent>



<dependencyManagement>

<dependencies>


<!--SCA -->

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-alibaba-dependencies</artifactId>

<version>2.1.0.RELEASE</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

子POM

<!--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>

启动类

@SpringBootApplication

@EnableDiscoveryClient

public class ProviderApplication8090 {

public static void main(String[] args) {

SpringApplication.run(ProviderApplication8090.class, args);

}

}

单机配置文件

server:

port: 8090

spring:

application:

name: server-consumer


cloud:

nacos:

discovery:

# 配置nacos server地址

server-addr: 192.168.159.128:8848

集群配置文件


spring:

cloud:

nacos:

discovery:

# 配置nacos server地址这里也可以通过虚拟域名的方式部署

server-addr: 192.168.198.10:8848,192.168.198.11:8848,192.168.198.12:8848

三、Nacos作为注册中心应用

3.1Nacos注册中心UI介绍

1、服务列表介绍




2、服务列表详情介绍






保护阈值

指的是当前服务的健康实例数/服务总实例数;配置值在0~1之间。

起作用是当一个服务中服务宕机数量超过保护阈值之后,Nacos会将所有的实例数返回给消费者,来损失一部分请求来保证整个服务集群的高可用。

注意生产上的保护阈值会经常根据流量的大小来进行调整的,不是一成不变的。

权重

通俗的解释就是权重越高流量就越多。可以通过编辑配置

上下线

点击下线之后,消费者就不会获取到当前实例的地址,流量就不会打到当前实例上。

3、订阅者列表



3.2Nacos数据模型

1、整体数据模型

Namespace命名空间、Group分组、集群这些都是为了进行归类管理,把服务配置文件进行归类,归类之后就可以是实现一定的效果,比如隔离。

对于服务来说,不用的命名空间中的服务不能够互相访问调用。


Namespace:命名空间,对于不同的环境进行隔离,比如隔离开发换将、测试环境和生产环境等。【不同命名空间之间的服务是绝对掉不同的!】

Group:分组,将若干个服务或者若干个配置归为一个组,通常习惯一个系统归位一个组。

Service:某一个服务,比如订单微服务。

DataId:配置集或者可以认为是一个配置文件。

说明:Namespace + Group + Service如同Maven中的GAV坐标,GAV坐标是为了锁定Jar,这是是为了锁定一个服务。

实践:Nacos抽象出了Namespace、Group、Service、DataId等概念,具体代表什么取决于怎么?(?常灵活),推荐?法如下

概念

描述

Namespace

代表不同的环境,如开发dev、测试test、?产环境prod

Group

代表某项?,?如拉勾云项?

Service

某个项?中具体xxx服务

DataId

某个项?中具体的xxx配置?件


2、Nacos服务分级模型


一个Service包含一个集群Cluster,一个集群下包含多个实例Instance。

3.3NacosServer数据持久化

直接找到安装包中conf/nacos-mysql.sql文件在独立的mysql服务器上创建数据表,并在/conf/

application.properties文件中进行配置即可。



user表中是nacos中用户表密码使用的是SpringSecurity进行加密的。

四、Nacos作为配置中心应用

4.1配置中心UI介绍

列表UI

新建命名空间->namseSpace



查看配置也可以根据dataId进行搜索



新增配置文件

.

注意:一般在新建的DataId以项目的spring.name为名字《server-provider.yaml》。

监听查询



4.2配置中心数据模型


Namespace+Group+DataId确定一个配置文件。

4.3业务系统引入配置中心

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

</dependency>


默认情况下创建的配置中心的名字应该和application.name保持一致。比如server-provider名字应该是server-provider.yaml

spring:

application:

name: server-provider

#配置中心

config:

server-addr: 192.168.198.10:8848,192.168.198.11:8848,192.168.198.12:8848

namespace: 0070b1fa-d4f6-4a57-9e2e-9c11d4e48a95 #指定到的命名空间

group: DEFAULT_GROUP

file-extension: yaml

注意

1、默认获取到的dataId为${prefix}-${spring.profile.active}.${file-extension}也可以自己指定

2、如果需要动态刷新的话需要在使用的类上贴上@RefreshScope注解就可以实现自动刷新了

4.4业务系统引入多个配置文件

spring:

cloud:

nacos:

discovery:

ext-config[0]:

data-id: 1.yaml #引入的配置文件名称

group: DEFAULT_GROUP #所在的分组

refresh: true #开启扩展dataId的动态刷新

ext-config[1]:

data-id: 2.yaml #引入的配置文件名称

group: DEFAULT_GROUP #所在的分组

refresh: true #开启扩展dataId的动态刷新

注意:这里开启自动刷新也需要配合@RefreshScope注解使用。

优先级首先是本机默认的配置文件优先级别最高,其次是扩展中index越大的优先级越高(覆盖)

- END -

薛之谦在哪里留学(当代歌神薛之谦学的竟然是格里昂的酒店管理专业)

今世歌神薛之谦学的居然是格里昂的旅店办理专业听过苏黎世的从前的伙伴们一定晓得谦谦在...

荷兰美国留学(欧洲留学性价比高的国家)

欧洲留学性价比高的国度欧洲作为东方文明的劈头地有着独具特征的教导体系并且在留学用度...