iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Nacos服务器注册及配置中心
  • 863
分享到

Nacos服务器注册及配置中心

javaeurekaspringcloud微服务 2023-09-08 06:09:17 863人浏览 八月长安
摘要

Nacos可以直接提供注册中心(Eureka)+配置中心(Config)比之前的Eureka更加方便,不需要在自己做配置。Nacos Discovery 帮助自动将服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列

Nacos可以直接提供注册中心(Eureka)+配置中心(Config)比之前的Eureka更加方便,不需要在自己做配置。Nacos Discovery 帮助自动将服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列表。此外,Nacos Discovery 将服务实例的一些元数据,如主机、端口、健康检查 URL、主页等注册到 Nacos。

一、服务器注册(服务提供者)

1)创建项目,引入依赖

使用Maven聚合项目进行创建

       com.alibaba.cloud      spring-cloud-starter-alibaba-nacos-discovery 

2)修改配置文件

server:  port: 8001spring:  application:    name: nacos-provider  cloud:    discovery:      server-addr: 127.0.0.1:8848management:  endpoint:    WEB:      exposure:        include:'*'

3) 启动类 添加注解 @EnableDiscoveryClient

@SpringBootApplication@EnableDiscoveryClient//加此注解public class CloudaNacos9001Application {    public static void main(String[] args) {        SpringApplication.run(CloudNacos9001Application.class, args);    }}

4)启动nacos,再启动项目,登陆nacos进行验证

端口号为8001的服务注册到了nacos中 

5)按照以上步骤,创建一个端口号为9002的服务

配置文件

server:  port: 8002spring:  application:    name: nacos-provider  cloud:    nacos:      discovery:        server-addr: 127.0.0.1:8848management:  endpoint:    web:      exposure:        include:'*'

启动项目,刷新nacos,可以看到有两台服务器注册 

 二、消费者服务器注册

1)创建项目,端口号为8308

2)配置文件

server:  port: 8083spring:  application:    name: nacos-consumer  cloud:    discovery:      server-addr: 127.0.0.1:8848

3)启动类

@SpringBootApplication@EnableDiscoveryClientpublic class CloudConsumerNacos8308Application {    public static void main(String[] args) {        SpringApplication.run(CloudConsumerNacos8308Application.class, args);    }}

 4)刷新nacos

三、负载均衡

Nacos已整合Ribbon,Ribbon 是一个基于Httptcp客户端负载均衡器,它虽然只是一个工具类库,它却是每一个微服务的基础设施,对于服务间调用、api网关请求转发都需要经过Ribbon负载均衡来实现。总体来说,Ribbon的主要作用是:从注册服务器端拿到对应服务列表后以负载均衡的方式访问对应服务。

1)远程访问使用RestTemplate

在服务消费者中配置RestTemplate

@Bean@LoadBalancedpublic RestTemplate restTemplate(){    return new RestTemplate();}//访问restTemplate.getForObject(arg1,arg2,arg3...);

第一个参数url表示被调用的目标Rest接口位置

    1. url的第一部分是在Nacos中注册的服务提供者名称,如果多个服务提供者注册相同名称,Ribbon会自动寻找其中一个服务提供者,并且调用接口方法。这个就是负载均衡功能。    2. url后半部是控制器的请求路径。

第二个参数是返回值类型

JavaBean类型或者JavaBean数组类型,如果控制器返回的是List集合,需要使用数组类型接收。

第三个参数是可变参数

是传递给url的动态参数,使用参数时候需要在url上需要使用{1}、{2}、{3}进行参数占位,这样传递的参数就会自动替换占位符。

2)8001和8002对外提供接口(业务代码同)

@RestControllerpublic class DemoController {    @Value("${server.port}")    private String serverPort;    @GetMapping(value = "/test")    public String getServerPort(){        return "Hello Nacos Discovery"+serverPort;    }}

3)消费者访问

消费者配置文件添加 要访问的微服务名称

server:  port: 8083spring:  application:    name: nacos-consumer  cloud:    discovery:      server-addr: localhost:8848# 消费者将要去访问的微服务名称(注册成功的Nacos的微服务提供者)service-url:  nacos-user-service: http://nacos-provider

 2. 启动类上配置restTemplate-远程调用

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

 3. 在8083的消费者上来通过Ribbon来自动的负载均衡调用9001或者9002的服务提供者

@RestControllerpublic class DemoController {    @Resource    private RestTemplate restTemplate;        @Value("${service-url.nacos-user-service}")    private String serverURL;    @GetMapping(value = "consumer/nacos")    public String getDiscovery(){        System.err.println(serverURL);        return restTemplate.getForObject(serverURL+"/test",String.class);    }}

4)访问http://localhost:8308/consumer/nacos

结果:Hello Nacos Discovery8001/8002(负载均衡切换显示)

四、配置中心

1、创建项目,pom文件引入依赖

服务端口号为3377

      com.alibaba.cloud       spring-cloud-starter-alibaba-nacos-config  

 2、yml配置

要注意的是这里我们要配置两个,因为Nacos同SpringCloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

分别要配置的是,这里bootstrap.yml配置好了以后,作用是两个,第一个让服务注册到Nacos中,第二个作用就是去Nacos中去读取指定后缀为yaml的配置文件

1)bootstrap.yml

# nacos配置server:  port: 3377spring:  application:    name: nacos-config-client  cloud:    nacos:      discovery:        server-addr: localhost:8848 #Nacos服务注册中心地址      config:        server-addr: localhost:8848 #Nacos作为配置中心地址        file-extension: yaml #指定yaml格式的配置

2)application.yml

spring:  profiles:    active: dev #表示开发环境

3、主启动

@SpringBootApplication@EnableDiscoveryClientpublic class CloudConfig3377Application {    public static void main(String[] args) {        SpringApplication.run(CloudConfig3377Application.class, args);    }}

 4、业务类

@RefreshScope实现配置自动更新,配置文件中的配置修改后不用重启项目即生效

@RestController@RefreshScope //支持Nacos的动态刷新功能public class ConfiGClientController {    @Value("${config.info}")    private String configInfo;    @GetMapping("/config/info")    public String getConfigInfo(){        return configInfo;    }}

5、Nacos配置

Data ID配置格式为:${prefix}-${spring.profiles.active}.${file-extension}

`prefix` 默认为 `spring.application.name` 的值,也可以通过配置项 `spring.cloud.nacos.config.prefix`来配置。
2. `spring.profiles.active` 即为当前环境对应的 profile,注意:**当 `spring.profiles.active` 为空时,对应的连接符 `-` 也将不存在,dataId 的拼接格式变成 `${prefix}.${file-extension}`**(不能删除)
3. `file-exetension` 为配置内容的数据格式,可以通过配置项 `spring.cloud.nacos.config.file-extension` 来配置。目前只支持 `properties` 和 `yaml` 类型。
4. 通过 spring cloud 原生注解 `@RefreshScope` 实现配置自动更新:
5. 所以根据官方给出的规则我们最终需要在Nacos配置中心添加的配置文件的名字规则和名字为:

# ${spring.application.name}-${spring.profiles.active}.${file-extension}
# nacos-config-client-dev.yaml
# 微服务名称-当前环境-文件格式

 访问 http://localhost:3377/config/info

6、自动配置更新

修改Nacos配置,不需要重启项目即可自动刷新

测试访问

http://localhost:3377/config/info

来源地址:https://blog.csdn.net/chemmeng/article/details/128471814

--结束END--

本文标题: Nacos服务器注册及配置中心

本文链接: https://www.lsjlt.com/news/399476.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作