Nacos实战学习入门

1、Nacos认识及安装

1.1 Nacos简介

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。Nacos的主要作用是动态服务发现、配置管理和服务管理平台。

1.2 Nacos安装

我本次使用的是1.4.1版本的Nacos,下载地址
linux版本:
链接:https://pan.baidu.com/s/1WbtenixWAoGMvsrz_S3_ew
提取码:xuyd
windows版本:
链接:https://pan.baidu.com/s/1NmWYz9jwxU-00jusMOLhfA
提取码:xuyd
下载之后放到指定目录解压即可,解压目录如下:
Nacos实战学习入门_第1张图片
到nacos的bin目录下执行命令:

./startup.sh -m standalone

入门,目前不用集群启动,后续会有集群启动的教学。
启动成功之后,访问地址即可
http://ip:8848/nacos
账号密码都为nacos,登陆之后如下:
Nacos实战学习入门_第2张图片
至此,nacos安装启动成功。
nacos的配置文件在conf目录下的application.properties文件。

2、Nacos作为注册中心入门

2.1 springBoot集成Nacos

1、引入依赖

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    <version>2.2.6.RELEASEversion>
dependency>

2、添加配置

spring:
  cloud:
    nacos:
      server-addr: ip:port

3、启动服务
4、查看结果
Nacos实战学习入门_第3张图片
如果如上图结果,即可证明集成(服务注册)成功。

2.2 服务注册深入了解

1、Nacos的服务所属集群了解(非Nacos集群)
一级是服务
二级是集群
三级是实例
可以先看一下下面这个图:
Nacos实战学习入门_第4张图片
由图可知,多个相同的服务可以存储到不同的集群里,常见的场景为地域划分,尽可能选择本地集群的服务,可以达到最优速度,跨集群调用的话,延迟较高,一般只有当本地的集群不可使用时,才会去访问其他集群
Nacos实战学习入门_第5张图片
集群的配置也是通过配置文件来配置如下图所示:

spring:
  cloud:
    nacos:
      server-addr: ip:port # nacos服务端地址
      discovery:
        cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州

修改配置之后重新启动,可以在nacos控制台查看集群变化:
Nacos实战学习入门_第6张图片
配置了集群,还需要配置负载均衡规则,否则不会起到实际作用。负载均衡配置如下:
在服务调用方配置被调用的服务的负载均衡规则。

userservice: # 服务名称
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 

配置好之后,A服务如果集群是HZ,就会优先调用集群为HZ的userservice服务实例。
2、根据权重负载均衡
进入实例详情之后,编辑权重(默认是1)。如果两个实例一个是1,另一个修改为0.1,则访问时会以10比1的比例来分配。
Nacos实战学习入门_第7张图片
关于权重,知道以下三点即可:
1、Nacos控制台可以设置实例的权重值,0~1之间
2、同集群内的多个实例,权重越高被访问的频率越高
3、权重设置为0则完全不会被访问

2.3 环境隔离namespace

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。
Nacos实战学习入门_第8张图片
1、在控制台可以创建namespace,用来隔离不同的环境。
Nacos实战学习入门_第9张图片
2、保存之后即可看见这个命名空间的id
命名空间
3、修改order-service的application.yml,添加namespace

spring:
  cloud:
    nacos:
      server-addr: ip:port # nacos服务地址
      discovery:
        cluster-name: HZ
        namespace: 1b783dc8-11d3-4726-9343-d297ee4e8e50

4、此时启动orderservice,即可在dev的命名空间下看到服务实例。
Nacos实战学习入门_第10张图片
public下面没有刚才启动的orderservice,此时如果orderservice去调用uservice的内容,则会报错找不到服务,因为他们的namespace不同,被隔离开了,无法进行服务调用。

3、Nacos注册中心原理

Nacos实战学习入门_第11张图片

4、Nacos配置中心入门

4.1、统一配置管理

Nacos实战学习入门_第12张图片
步骤:
1、在Nacos中添加配置信息:
Nacos实战学习入门_第13张图片
Nacos实战学习入门_第14张图片
Nacos实战学习入门_第15张图片
2、引入nacos配置依赖


<dependency>    
	<groupId>com.alibaba.cloudgroupId>    
	<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>

3、在bootstrap.yml下新增配置。这个文件是引导文件,优先级高于application.yml

spring:
 application:    
  name: userservice # 服务名称
 profiles: 
  active: dev #开发环境,这里是dev 
 cloud:
  nacos: 
   server-addr: localhost:8848 # Nacos地址
   config:        
    file-extension: yaml # 文件后缀名

测试:注意,此时需要多一个注解,@RefreshScope,此注解可以让微服务无需重启即可感知配置的变化。
我们在user-service中将pattern.dateformat这个属性注入到UserController中做测试:

@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
    // 注入nacos中的配置属性    
    @Value("${pattern.dateformat}")
    private String dateformat; 
    // 编写controller,通过日期格式化器来格式化现在时间并返回
    @GetMapping("now")    
    public String now(){
        return LocalDate.now().format(DateTimeFormatter.ofPattern(dateformat, Locale.CHINA));
    }
    // ... 略
}

方式2:使用@ConfigurationProperties注解

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateFormat;
}

4.2、配置共享

多环境共享:
微服务启动时会从nacos读取多个配置文件:
[spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml
[spring.application.name].yaml,例如:userservice.yaml
无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件
Nacos实战学习入门_第16张图片
多个服务配置的优先级如下:
[服务名]-[环境].yaml >[服务名].yaml > 本地配置
Nacos实战学习入门_第17张图片
多服务共享:
不同微服务之间可以共享配置文件,通过下面的两种方式来指定:
方式1:

spring:
 cloud:
  nacos:
   server-addr: localhost:8848 
   config:
    file-extension: yaml
    shared-configs: #多微服务间共享的配置列表
      - dataId: common.yaml # 要共享的配置文件id

方式二:

spring:
 cloud:
  nacos:
   server-addr: localhost:8848 
   config:
    file-extension: yaml
    extends-configs: #多微服务间共享的配置列表
      - dataId: extend.yaml # 要共享的配置文件id

多服务配置的优先级:
环境配置 >服务名.yaml > extension-config > extension-configs > shared-configs > 本地配置
总结:
微服务默认读取的配置文件:
1、[服务名]-[spring.profile.active].yaml,默认配置
2、[服务名].yaml,多环境共享
不同微服务共享的配置文件:
1、通过shared-configs指定
2、通过extension-configs指定

你可能感兴趣的:(nacos,Java,学习,spring,cloud,java)