栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微服务相关-Nacos

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务相关-Nacos

文章目录

为什么叫NacosNacos是什么东西nacos的快速开始

下载nacos 使用nacos完成简单的服务注册

父pom配置cloud Alibaba相关子pom导入服务注册相关依赖编写启动类,并配置服务注册注解编写配置文件,指向nacos如果想配置负载,可以按照以下步骤快速完成

复制dashboard的payment运行配置如下图所示参数即可运行9002号负载 测试结果 基于nacos完成复杂请求

配置步骤

基于上述步骤,完成消费者编写

创建消费者模块添加pom配置yml使其注册至nacos编写服务调用类和启动类测试结果 nacos同时支持cp和apnacos作为配置中心的配置

配置说明配置步骤

新建测试模块导入相关依赖编写bootstrap和application两个yml编写启动类编写业务类配置nacos相关服务配置测试修改配置后直接刷新查看配置是否直接生效 nacos基于dataid的多环境配置示例

简要说明配置步骤

新建配置修改boot的yaml文件测试 nacos基于group的分组配置方案

配置步骤(基于上述代码继续演示)

bootstrap配置对应的groupapplication配置对应的spring.profiles.active重启服务测试修改group后再次请求 nacos基于命名空间的配置

nacos新建命名空间找到命名空间完成对应数据配置测试请求

为什么叫Nacos

前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。

Nacos是什么东西

Nacos就是注册中心 + 配置中心的组合

nacos的快速开始 下载nacos

笔者这里下载的是1.1.4,地址如下
https://github.com/alibaba/nacos/releases/tag/1.1.4

下载完成解压后,运行bin下的start文件,具体是sh还是bat取决于你的操作系统,由于笔者在Windows运行,所以采用bat文件

运行完成后输入如下地址即可

http://192.168.180.1:8848/nacos/index.html

如果看到这个页面,则说明安装成功了,账号密码默认都是nacos

使用nacos完成简单的服务注册 父pom配置cloud Alibaba相关

  
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            
子pom导入服务注册相关依赖
 
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

编写启动类,并配置服务注册注解
@SpringBootApplication
//EnableDiscoveryClient能够让注册中心能够发现,扫描到改服务。
@EnableDiscoveryClient
public class NacosProviderDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosProviderDemoApplication.class, args);
    }

    @RestController
    public class EchoController {
        @GetMapping(value = "/echo/{string}")
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
}
编写配置文件,指向nacos
server.port=8081
#服务名称
spring.application.name=payment-provider
#nacos地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
如果想配置负载,可以按照以下步骤快速完成 复制dashboard的payment运行

配置如下图所示参数即可运行9002号负载
-Dserver.port=9002

测试结果

可以看到服务列表出现了两个服务

基于nacos完成复杂请求 配置步骤 基于上述步骤,完成消费者编写 创建消费者模块

添加pom
 
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            com.zsy.springcloud
            cloud-api-commins
            ${project.version}
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
配置yml使其注册至nacos
server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://payment-provider
编写服务调用类和启动类

如下图所示,我们需要使用yml中配置的nacos服务消费地址,并且使用restTemplate进行远程调用

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ApplicationContextBean {

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

@RestController
public class OrderNacosController {

    @Value("${service-url.nacos-user-service}")
    private String invokeUrl;

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/echo/{string}")
    public String loadBalanceTest(@PathVariable("string") String string) {
        return restTemplate.getForObject(invokeUrl + "/echo/" + string, String.class);
    }
}

测试结果

可以看到调用了不同的负载了

nacos同时支持cp和ap

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

    一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(A):保证每个请求不管成功或者失败都有响应。分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。

相比与其他服务注册中心nacos强大就在于同时支持cp和ap

nacos作为配置中心的配置 配置说明 配置步骤 新建测试模块

导入相关依赖

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
编写bootstrap和application两个yml

这里需要注意一下,spring boot配置加载顺序是bootstrap->application,所以我们主配置配在bootstrap,次配置配在applicaion

通过官方文档我们知道nacos加载配置文件的格式是

  # ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

所以我们的bootstrap.yml配置如下,主配置声明了spring.application.name以及spring.cloud.nacos.config.file-extension

# nacos配置
server:
  port: 3377

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

然后次配置编写了

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

编写启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

编写业务类
@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController {

    @Value("${config.info}")
    private String cofigInfo;

    @GetMapping("/config")
    public String getCofigInfo() {
        return cofigInfo;
    }
}

配置nacos相关服务配置

如下图所示,根据上文格式翻译得到我们的data id,然后进行自己所需数据config.info的配置

测试

修改配置后直接刷新查看配置是否直接生效

如下图所示,完成直接发布就生效了

nacos基于dataid的多环境配置示例 简要说明

上述config info可能是测试环境的配置,假如我们生产环节也有这样一套配置,我们也没有办法完成优雅的切换呢?

配置步骤 新建配置

修改boot的yaml文件

测试

nacos基于group的分组配置方案 配置步骤(基于上述代码继续演示) bootstrap配置对应的group

application配置对应的spring.profiles.active

重启服务测试

修改group后再次请求


nacos基于命名空间的配置 nacos新建命名空间

找到命名空间完成对应数据配置

可以看到笔者完成了spring.application.name为 nacos-config-client,且分组为default_group,active为test的配置

测试请求

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号