您现在的位置是:首页 > 正文

Spring Cloud Alibaba Nacos 入门实践

2023-11-09 22:23:54阅读 4939

概览

阿里巴巴在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,登录页如图所示。

20190313163724371427.pnguploading.4e448015.gif转存失败重新上传取消技术图片

登录后如图所示。

20190313163724619458.pnguploading.4e448015.gif转存失败重新上传取消技术图片

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

20190313163724759097.pnguploading.4e448015.gif转存失败重新上传取消技术图片

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

20190313163724880183.pnguploading.4e448015.gif转存失败重新上传取消技术图片

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

数据源

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

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

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

  • 内存
  • 本地数据库

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

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

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

    1. 创建一个名为nacos_config的 database。
    1. 将NACOS_PATH/conf/nacos-mysql.sql中的表结构导入刚才创建的库中。
    1. 修改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://nacos.io

https://www.cnblogs.com/forezp/p/10136433.html

源码下载

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

网站文章

  • p4427 [BJOI2018]求和

    分析我们发现k非常的小于是我们对于每一个点暴力维护它到根的所有节点的深度k次方之和即可每次找到lca然后用之前处理出来的数组加加减减即可代码#include<bits/stdc++.h>using namespace std;const int mod = 998244353;int pr[300100][20],dep[300100],n...

    2023-11-09 22:23:46
  • 如何把图片转成gif?一分钟学会在线一键生成gif

    如何把图片转成gif?一分钟学会在线一键生成gif

    平时我们在聊天的时候,经常会发送一下有趣的表情包,这些表情包是怎么做出来的呢?其实可以使用在线gif生成的方法,下面就来给大家演示一下。看完以上的内容,小伙伴们都应该学会了gif合成的方法了吧,使用这...

    2023-11-09 22:23:32
  • android GridView android:stretchMode=&quot;columnWidth&quot;

    stretchMode属性值的作用是设置GridView中的条目以什么缩放模式去填充空间。参数stretchMode 可选值:NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH

    2023-11-09 22:23:22
  • 步步为营 .NET 设计模式学习笔记 一、开篇(设计模式之泡妞二十三招)

    园子里讲设计模式的太多了,最近我也在学设计模式,把我自己练的一些代码整理下,写个.NET设计模式学习笔记来让自己在设计模式的功底更深一层。记得金庸小说里风清扬教令狐冲的时候,说过独孤九剑的总纲,无招胜...

    2023-11-09 22:23:13
  • javascript之第四章

    变量、作用域、内存问题1、  基本类型值是指简单的数据段,引用类型值是指可能有多个值构成的对象,(是保存在内存当中的)。String不是引用类型在JavaScript中。 2、  基本类型变量是值操作的,直接改变变量的实际值;引用类型的值是引用访问的,操作的是引用而不是直接对象。 3、 赋值基本类型赋值的是对象本身,引用类型变量赋值的是对象的引用。 4、 参数按值传

    2023-11-09 22:22:57
  • 事物的A(原子性)C(一致性)I(隔离性)D(持久性)

    事务的原子性 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据改操作要全部执行,要么全部不执行。这种特性称为原子性。 事务的原子性要求,如果把一个事务看作是一个程序,它要么完整的被执行,要么完全执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原则性 假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完

    2023-11-09 22:22:45
  • Uncaught TypeError: Cannot read properties of undefined (reading ‘getBoundingClientRect‘)

    Uncaught TypeError: Cannot read properties of undefined (reading ‘getBoundingClientRect‘)

    应该是你在某个页面内绑定了window滚动事件,this.$refs.more是该页面下才能获取到该div对象,切换页面时window绑定的事件还在,但页面销毁,页面中的this.$refs.more...

    2023-11-09 22:22:36
  • 解决  无法解析名称 NaiveBayes.fit。/i get Undefined variable “NaiveBayes“ or class “NaiveBayes.fit“.

    解决 无法解析名称 NaiveBayes.fit。/i get Undefined variable “NaiveBayes“ or class “NaiveBayes.fit“.

    应用朴素贝叶斯分类器时候,发现报错无法解析名称 NaiveBayes.fit这是因为你想用NaiveBayes。适用于MATLAB R2018b。根据NaiveBayes的R2014b发布说明,fit...

    2023-11-09 22:22:29
  • html设置word页边距,怎么设置Word的页边距

    在内侧和外侧框中。另外一种情况:单击文件页面设置页边距选项卡, word页边距怎么设置呢? word默认页边距分2003和2007版,Word 2007的上下边距是:2.54厘米;左右边距是:3.18...

    2023-11-09 22:22:10
  • SpringBoot启动代码和自动装配源码分析

    SpringBoot启动代码和自动装配源码分析

    随着互联网的快速发展,各种组件层出不穷,需要框架集成的组件越来越多。每一种组件与Spring容器整合需要实现相关代码。SpringMVC框架配置由于太过于繁琐和依赖XML文件;为了方便快速集成第三方组...

    2023-11-09 22:22:04