Nacos

一、nacos docker 启用

        在 docker 上拉取需要的 nacos 版本

docker  pull nacos/nacos-server:1.3.1

        启用 standalone 模式

docker run -d -e prefer_host_mode=本机ip -e MODE=standalone -v  /mydata/nacos/logs:/home/nacos/logs  -p 8848:8848  --name nacos  nacos/nacos-server:1.3.1        

        在浏览器地址栏中输入 http://nacos 服务地址: 端口/nacos/ , 默认登录用户和密码都是 nacos

二、nacos 作为注册中心

2.1 服务注册与发现

        在 Spring Boot 应用项目中,引入 pom 依赖

<!-- spring cloud 依赖管理 -->
<dependencyManagement> 
    <dependencies> 
        <dependency> 
            <groupId>com.alibaba.cloud</groupId> 
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version> 
            <type>pom</type>
            <scope>import</scope>
        </dependency> 
    </dependencies> 
</dependencyManagement>

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

        在配置文件 bootstrap.properties 中配置 nacos server 地址和项目应用的名称

 bootstrap.properties : spring boot 项目启动时,优先加载的配置文件

spring.cloud.nacos.discovery.server-addr=( nacos 服务地址: 端口 )

spring.application.name=service-provider

        使用 @EnableDiscoveryClient 开启服务注册发现功能

@SpringBootApplication 
@EnableDiscoveryClient  // 开启 nacos 的服务注册与发现
public class ProviderApplication { 
    public static void main(String[] args) { 
        SpringApplication.run(Application.class, args); 
    } 
}

        在 nacos 服务程序页面中看到注册的服务

2.2 使用 openfeign 进行服务调用

         前提:a. A 和 B 都在nacos 上注册了服务;

                   b. A 在 Controller层 中提供的服务如下

@RestController
@RequestMapping("AService")
public class AController {
    @RequestMapping("/getService")
    public String getService(){
        return "=== get service from A ===";
    }
}

        B 可以通过配合 openfeign 调用 A 中的服务,在 B 中的操作步骤如下:

        1. 导入 openfeign 包

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

        2. 使用 @EnableFeignClient 开启服务调用功能

// basepackages 表示哪个包下的文件将扫描作为提供远程调用服务的接口
@EnableFeignClients(basePackages = "xxx.xxx.xxx.xxx.feign")
@SpringBootApplication
@MapperScan("xxx.xxx.xxx.xxx.dao")
@EnableDiscoveryClient
public class B_Application {
    public static void main(String[] args) {
        SpringApplication.run(B_Application.class,args);
    }

}

        3. 在 xxx/xxx/xxx/xxx/feign 包中创建远程调用 A 服务的接口

@FeignClient("AService") // "AService" 为 A 服务注册在 nacos 上的服务名
public interface AService {

    // 复制 A 中提供服务的方法,改为接口方法
    // "AService/getService" 为 A 提供 getService 的完整路径
    @GetMapping("AService/getService")
    String getService();
}

        4. 使用 A 的服务

@RestController
public class UsingAService {
    @Autowired
    AService aService;
    
    @RequestMapping("getBSevice")
    public String getBService(){
        return aService.getService();
    }
}

三、 nacos 作为配置中心

3.1 引入配置中心

        1. 在 nacos 上配置好相关的 Namespace 、DataID 和 Group

        2. 引入依赖

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

        3. 在配置文件 bootstrap.properties 中配置 nacos config 的元数据 ,和 需要从 nacos config 上加载的配置文件

spring.cloud.nacos.config.server-addr=( nacos 服务地址: 端口 )

// nacos 上 AService 的配置命名空间,需要写上 AService 配置空间对应的 UUID
spring.cloud.nacos.config.namespace=258043a2-9b20-4012-aa2b-3264f5a3ee94

// 指定 配置 所属的组
// spring.cloud.nacos.config.group=dev 

// 加载 namespace 上多个不同的配置

// 指定配置文件
spring.cloud.nacos.config.ext-config[0].data-id=dataSource.yml
// 指定配置文件所属的组
spring.cloud.nacos.config.ext-config[0].group=dev
// 是否 动态更新配置
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=redisConfig.yml
spring.cloud.nacos.config.ext-config[1].group=prod
spring.cloud.nacos.config.ext-config[1].refresh=false

nacos 配置中心,概念

Namespace用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group DataID 的配置。Namespace 的常用场景之一是不同环境或不同服务的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

DataID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。

Group :对于相同的 DataID 可以用不同的 Group 做区分。做到不同环境下的区分。

最佳实践
每个微服务创建自己的 Namespace 进行隔离, Group 来区分 dev beta prod 等环境

参考资料:

https://nacos.io/zh-cn/docs/what-is-nacos.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值