服务注册与配置 - Nacos

一、SpringCloudAlibaba

1. SpringCloud netflix进入了维护模式
2. Spring Cloud Alibaba入驻Spring Cloud,替换Cloud相关的netflix组件

二、服务注册中心

1. 安装部署

# 单机版nacos - 1.4.2
docker search nacos
docker pull nacos/nacos-server:1.4.2
# MODE=standalone:单机版
docker run --env MODE=standalone --name mynacos -d -p 9001:8848 nacos/nacos-server:1.4.2
docker exec -it first_nacos bash
# 通过 http://ip:9001/nacos 访问,登录密码默认nacos/nacos
http://60.205.229.31:9001/nacos

2. 服务入驻

  • 两个 A服务,一个B 服务,一个注册中心
 <!--web模块的两个依赖,这两个一般绑定在一起-->
 <!--nacos注册中心客户端-->
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </dependency>
server:
  port: 8001

# 注册到Nacos的服务名
spring:
  application:
    name:  nike-provider
# 服务注册的Nacos地址,不用写http
  cloud:
    nacos:
      discovery:
        server-addr: 60.205.229.31:9001

management:
  endpoints:
    web:
      exposure:
        include: '*'
# 主启动类:服务注册和发现功能
# import org.springframework.cloud.client.discovery.EnableDiscoveryClient
@EnableDiscoveryClient 

3. 服务调用

@Configuration
public class RestTemplateConfig {

     // import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    @LoadBalanced
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}
@RequestMapping("/consumer")
@RestController
public class ConfigController {

    @Autowired
    private RestTemplate restTemplate;

    String targetUrl = "http://nike-provider";

    @GetMapping("/info")
    public String getInfo() {
        return restTemplate.getForObject(targetUrl + "/provider/info", String.class);
    }
}

在这里插入图片描述

三、服务配置中心

1. 配置中心

  • 服务注册中心和配置中心都是nacos,如下为常见参数
namespace:    区分部署环境,默认为public,可以自定义prod,uat,development等,互相隔离
               在项目中要用naocos控制台生成的uuid随机数

group:        区分不同的功能模块,默认为DEFAULT_GROUP,可自定义如crm,btob,msm

dataId:       具体的配置文件名称,
              一般格式为{spring.application.name}-{spring.profile.active}.yaml

在这里插入图片描述

2. Client Server

   <!--web模块,这两个一般绑定在一起-->
   <!--引入nacos,一般都是注册中心和配置中心一起-->
   <dependency>
       <groupId>com.alibaba.cloud</groupId>
       <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
   </dependency>
// 主启动类
@EnableDiscoveryClient
2.1 配置文件

bootstrap.yaml

# 如下的内容必须放在bootstrap.yaml中
spring:
  profiles:
    active: prod

  application:
    name: erick-consumer

  cloud:
    nacos:
      discovery:
        server-addr: 60.205.229.31:9001     # 服务注册的Nacos地址,不用写http
        namespace: f8117703-ca23-43f4-a4bf-f1395f377008 # 服务注册时候的命名空间
        group: nike   # 服务注册时候的分组
      config:
        server-addr: 60.205.229.31:9001     # 注册中心
        namespace: f8117703-ca23-43f4-a4bf-f1395f377008 # 命名空间的uuid
        file-extension: yaml
        prefix: ${spring.application.name}  # 配置文件前缀,
        # 配置文件格式:erick-consumer-prod.yaml
        group: nike

application.yaml

server:
  port: 9001

management:
  endpoints:
    web:
      exposure:
        include: '*'
spring:
  profiles: prod

测试类

  • 在需要动态刷新的class或者bean上,添加@RefreshScope ,达到实时刷新的效果
import org.springframework.cloud.context.config.annotation.RefreshScope;

@RestController
@RequestMapping("/config")
@RefreshScope  // 动态刷新
public class InfoController {

    @Value("${name}")
    private String name;

    @Value("${password}")
    private String password;

    @GetMapping("/info")
    public String getInfo() {
        return name + password;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值