Spring Cloud Alibaba Nacos 入门详解

 更新时间:2019-03-15 03:00:39   作者:佚名   我要评论(0)

概览
阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。并表示在6-8个月完成到生产可用的0.8版本,

概览

阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。并表示在6-8个月完成到生产可用的0.8版本,目前版本是0.9版本。

Nacos提供四大功能

服务发现和服务健康检查

Nacos使服务更容易注册自己并通过DNS或HTTP接口发现其他服务。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目录。

unzip nacos-server-0.9.0.zip
或者
tar -xvf nacos-server-0.9.0.tar.gz

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

#Linux/Unix/Mac 下
sh startup.sh -m standalone
#Windows 下
cmd startup.cmd

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

登录后如图所示。

SpringBoot 使用 Nacos 配置管理

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

pom.xml

<dependency>
  <groupId>com.alibaba.boot</groupId>
  <artifactId>nacos-config-spring-boot-starter</artifactId>
  <version>0.2.1</version>
</dependency>

application.yml

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一样,完整启动类代码如下所示。

@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,如图所示。

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

再次访问 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、用户名和密码。

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更多功能及详细使用,可以参看官方文档。

源码下载

https://github.com/gf-huanchupk/SpringCloudAlibabaLearning

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • SpringBoot+Spring Security+JWT实现RESTful Api权限控制的方法
  • 在spring boot中使用java线程池ExecutorService的讲解
  • spring boot之SpringApplication 事件监听
  • SpringBoot+Swagger-ui自动生成API文档
  • SpringBoot与Quartz集成实现分布式定时任务集群的代码实例
  • 彻底搞明白Spring中的自动装配和Autowired注解的使用
  • Spring bean的实例化和IOC依赖注入详解
  • Spring配置shiro时自定义Realm中属性无法使用注解注入的解决办法
  • SpringBoot整个启动过程的分析
  • Spring AOP手动实现简单动态代理的代码

相关文章

  • Spring Cloud Alibaba Nacos 入门详解

    Spring Cloud Alibaba Nacos 入门详解

    概览 阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。并表示在6-8个月完成到生产可用的0.8版本,
    2019-03-15
  • Spring Boot设置并使用缓存的步骤

    Spring Boot设置并使用缓存的步骤

    几个缓存注解的作用: @Cacheable:将方法的返回结果根据key指定的键保存在缓存中,以后要获取相同的数据直接从缓存中共获取 cacheNames/value:指定Cache
    2019-03-15
  • springboot后端解决跨域问题

    springboot后端解决跨域问题

    首先我门要知道什么是跨域: 跨域是指 不同域名之间相互访问。跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScr
    2019-03-15
  • 浅谈PHP无限极分类原理

    浅谈PHP无限极分类原理

    1.递归:程序调用自身的编程技巧称为递归 2.案例: /** * @param 递归 $[name] */ function deeploop(&$i=1){ echo $i; $i++; if($i < 10){
    2019-03-15
  • PHP的简单跳转提示的实现详解

    PHP的简单跳转提示的实现详解

    在PHP开发中,尤其是MVC框架或者项目中,会碰到很多跳转情况,比如:登录成功或失败后的跳转等等。 以下以MVC框架开发中为基础,示例讲解: 在基础控制器类中
    2019-03-15
  • PHP封装的数据库模型Model类完整示例【基于PDO】

    PHP封装的数据库模型Model类完整示例【基于PDO】

    本文实例讲述了PHP封装的数据库模型Model类。分享给大家供大家参考,具体如下: <&#63;php //引入配置文件 include "../Config/config.php"; c
    2019-03-15
  • Spring AOP手动实现简单动态代理的代码

    Spring AOP手动实现简单动态代理的代码

    什么是AOP我们先来看一张图 图中A就是通知,比如你要给每个方法前都加一个before()方法,目标类的每一个方法叫joinpoint(切入点),每个切入点都会用到通知
    2019-03-15
  • 详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现

    详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现

    一、实践踩坑 项目使用mpvue开发 1. scroll-view默认是不滚动的。。所以要先设置scroll-x="true"或者scroll-y="true" 2. 在scroll-view里面添加定宽元素,超
    2019-03-15
  • 浅谈Java中replace与replaceAll区别

    浅谈Java中replace与replaceAll区别

    看门见山 1.java中replace API: replace(char oldChar, char newChar):寓意为:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar
    2019-03-15
  • 浅谈KOA2 Restful方式路由初探

    浅谈KOA2 Restful方式路由初探

    前言 最近考虑将服务器资源整合一下,作为多端调用的API 看到Restful标准和ORM眼前一亮,但是找了不少版本路由写的都比较麻烦,于是自己折腾了半天 API库
    2019-03-15

最新评论