Spring Cloud Alibaba Nacos入门学习

文章来源:华科小宝   作者:詹爱府     发布时间:2021-02-28 06:55    浏览量:

Netflix公司开源的 EurekaHystrixZuul 等都纷纷闭源或者不再维护了,所以我们要找到其它替代方案,那就是Spring Cloud Alibaba技术体系。

 

一:eurekanacosconsul 对比

1.1配置中心

eureka 不支持。

consul 支持 但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新。

nacos 支持 用起来简单,符合springBoot的命名风格,支持动态刷新。

1.2注册中心

1.2.1 Eureka

应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现。

ACP原则:遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但牺牲了一定的一致性。

版本迭代:目前已经不进行升级。

集成支持:只支持SpringCloud集成。

访问协议:HTTP

雪崩保护:支持雪崩保护。

界面:英文界面,不符合国人习惯。

上手:容易。

二、Nacos

服务发现和服务健康检查

Nacos使服务更容易注册自己并通过DNSHTTP接口发现其他服务。Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。

动态配置管理

动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序和服务的需要,这使配置更改更加高效和灵活。

动态DNS服务

动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。

服务和元数据管理

Nacos提供易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes DNS,服务运行状况和指标统计。

安装

Nacos安装可以采用如下两种方式:

1.官网下载稳定版本解压使用。

2.下载源代码编译使用,目前最新的版本是0.9.0版本。

本文使用第一种方式,到Nacos的稳定版本下载地址https://github.com/alibaba/nacos/releases,下载最新版,下载后解压即安装完成,然后进入解压目录后的bin目录。

1

2

3

unzip nacos-server-0.9.0.zip

或者

tar -xvf nacos-server-0.9.0.tar.gz

进入解压目录后的bin目录执行如下命令启动Nacos。

1

2

3

4

#Linux/Unix/Mac 下

sh startup.sh -m standalone

#Windows 下

cmd startup.cmd

启动成功后,访问Nacos服务,http://localhost:8848/nacos/#/login,默认情况用户名密码都是nacos,登录页如图所示。

1.jpg

登录后如图所示。

2.jpg

SpringBoot 使用 Nacos 配置管理

创建一个springboot项目,主要代码如下。

pom.xml

1

2

3

4

5

<dependency>

  <groupId>com.alibaba.boot</groupId>

  <artifactId>nacos-config-spring-boot-starter</artifactId>

  <version>0.2.1</version>

</dependency>

application.yml

1

2

3

4

5

6

7

spring:

 application:

  name: springcloud-nacos-hello

 

nacos:

 config:

  server-addr: 127.0.0.1:8848

配置说明:

· spring.application.name:配置应用名。

· nacos.config.server-addr:Nacos server 的地址。

启动类

在启动类,加入 @NacosPropertySource 注解其中包含两个属性,如下:

· dataId:这个属性是需要在Nacos中配置的Data Id。

· autoRefreshed:为true的话开启自动更新。

在使用Nacos做配置中心后,需要使用@NacosValue注解获取配置,使用方式与@Value一样,完整启动类代码如下所示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@SpringBootApplication

@NacosPropertySource(dataId = "springcloud-nacos-hello", autoRefreshed = true)

@RestController

public class SpringcloudNacosHelloApplication {

 

  public static void main(String[] args) {

    SpringApplication.run( SpringcloudNacosHelloApplication.class, args );

  }

 

  @NacosValue(value = "${test.properties.useLocalCache:false}", autoRefreshed = true)

  private boolean useLocalCache;

 

 

  @GetMapping("/get")

  public boolean get(){

    return useLocalCache;

  }

 

}

启动应用,访问http://localhost:8080/get ,返回配置的默认值 “false”

使用Nacos修改配置

添加刚刚创建的data id 的服务,并将配置由 false 修改为 true,如图所示。

3.jpg

发布后,返回配置列表,出现新添加的配置,如图所示。

4.jpg

再次访问 http://localhost:8080/get ,返回值为 “true”。

数据源

经过了上边的一些简单操作,我们已经可以正常使用 Nacos 配置中心了。

但是不知道你有没有想过:配置数据是存在哪里呢?

我们没有对 Nacos Server 做任何配置,那么数据只有两个位置可以存储:

· 内存

· 本地数据库

重启了 Nacos server ,你会发现原先创建的配置依然,这说明不是内存存储的。

这时候我们打开NACOS_PATH/data,会发现里边有个derby-data目录,Derby 是 Java 编写的数据库,属于 Apache 的一个开源项目。我们的配置数据现在就存储在这个库中。

Derby 我们并不是很熟悉,但是数据源可以改为我们熟悉的 MySQL。具体的操作步骤如下。

创建一个名为nacos_config的 database。

NACOS_PATH/conf/nacos-mysql.sql中的表结构导入刚才创建的库中。

修改NACOS_PATH/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

1

2

3

4

5

6

spring.datasource.platform=mysql

 

db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=root

db.password=root

再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql了。

到这里SpringBoot使用Nacos配置中心就完成了,关于Nacos更多功能及详细使用,可以参看官方文档。

 


甘肃华科信息技术有限责任公司    版权所有    陇ICP备17001897-1号   甘公网安备 62010202001329 号