Nacos服务配置中心应用

背景:在分布式系统下,修改配置文件,再重新启动项目,让这些配置生效,是比较费事的,所以我们需要进行创建一个配置中心。

概念:配置中心最基础的功能就是存储一个键值对。用户发布一个配置(configKey),然后客户端获取配置项(configValue),进阶的功能就是当某个配置项发生变更时,不停机就可以动态刷新服务内部的配置项。

@RefreshScope注解的作用:在配置中心相关配置发生改变的时候,能够及时看到类中属性值的更新,是因为底层通过重新创建Controller对想的方式,对属性进行了重新初始化。所以当配置中心要做出改变时,不重新启动服务器,则要添加这个注解。

Namespace:命名空间,对不同的环境进行隔离,比如隔离开发环境和生产环境。

Group:分组,将若干个服务或者若干个配置集归为一组

service/Datald:某一个服务或配置集,一般对应一个配置文件。

namespace后面的字符串为命名空间的id,可直接从命名空间列表中进行拷贝.然后重启服务,继续刷新

一、初始化配置

1、打开操作系统命令行,登陆mysql,执行sql脚本。

source d:/nacos-mysql.sql 

2、 打开/nacos/conf/application.properties里打开默认配置,并基于你当前环境配置要连接的数据库,连接数据库时使用的用户名和密码(假如前面有"#"要将其去掉)

### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

## Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

 二、服务启动命令

Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):

./startup.sh -m standalone

Windows启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

 访问nacos地址是,输入http://localhost:8848/nacos地址。用户名和密码--nacos/nacos

三、添加依赖

服务的注册与发现:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

四、消费者服务发现和调用

1、在服务者类中提供一个访问的方法。

2、在消费者中创建一个访问的方法,并实现远端服务调用。

使用的RestTemplate对象,调用的是restTemplate.getForObject(url, String.class),这样的方法。先封装要调用服务者的地址放到url中。

五、Nacos负载均衡 

 使用LoadBalancerClient对象(也叫负载均衡客户端对象)。借助此对象,可以基于服务名从nacos获取多个实例,并且基于算法,进行远端服务调用。

使用的方法是:loadBalancerClient.choose(),里面写nacos服务中心里的服务名

 @LoadBalanced

当我们使用@LoadBalanced注解描述RestTemplate对象时,再基于RestTemplate对象对远程服务进行访问时,此请求就会被拦截器拦截下来,请求被拦截到以后,就会先基于服务名找到服务实例(负载均衡)

@Bean
@LoadBalanced
public RestTemplate loadBalancedRestTemplate(){
    return new RestTemplate();
}

六、在Nacos中心进行配置

1、引入依赖

  <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>

2、修改application.yml文件的名字为bootstrap.yml---因为这个依赖只识别这个名称的文件。

七、@RefreshScope注解的应用

概念:对于nacos配置中心而言,有系统内部对配置变化的感知,还有外部系统对配置的感知。

使用步骤:

1、在controller类上添加这个注解。@RefreshScope的作用是在配置中心的相关配置发生变化以后,能够及时看到类中属性值的更新(底层是通过重新创建Controller对象的方式,对属性进行了重新初始化)。

2、添加ProviderLogController中添加一个获取日志级别(debug<info<warn<error)的的属性和方法,

3、启动sca-provider服务,然后打开浏览器并输入http://localhost:8081/provider/log/doLog02进行访问测试。

八、本地缓存应用

1、在配置中心设置开启缓存应用:useLocalCache: true

2、设置线程锁,保证查询数据库的次数只有一次,

3、设置双重校验,为了减少阻塞,提高效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值