搭建Nacos 注册中心和配置中心 以及Feign远程调用

16 篇文章 1 订阅

搭建Nacos 注册中心和配置中心 以及Feign远程调用

记录:开发过程中,搭建nacos注册中心,配置中心以及openfeign远程调用其他微服务模块等基本操作

一、Nacos下载安装

Nacos官网:https://nacos.io/zh-cn/index.html
下载地址:https://github.com/alibaba/nacos/releases
中文官网文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

安装并运行Nacos
1.本地已成功安装Java8+Maven环境
2.先从官网下载Nacos,解压安装包,直接双击运行bin目录下的startup.cmd
3.运行成功后直接访问:http://localhost:8848/nacos(用户名/密码默认都是nacos)
在这里插入图片描述

二、Nacos注册中心

Nacos注册中心演示 Demo:https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md

1、首先 pom.xml 文件,引入 Nacos Discovery Starter依赖

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

2、在应用的 /src/main/resources/application.yml(或者application.properties) 配置文件中配置 Nacos Server 的端口号,名称和地址

server:
  port: 8000 	# 端口号
spring:
  application:
    name: test-name 	# 微服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848		# 配置Nacos地址

3、启动类上使用 @EnableDiscoveryClient 注解开启服务注册与发现功能

 @SpringBootApplication
 @EnableDiscoveryClient		//开启服务注册与发现
 public class ProviderApplication {

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

 }

三、Nacos配置中心

Nacos配置中心演示 Demo:https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md

1、首先 pom.xml 文件,引入 Nacos Config Starter依赖

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

2、创建bootstrap.properties配置文件(项目启动首先加载此配置文件,如果不需要nacos提供的config请忽略此配置文件并在application.properties中添加添加服务名 spring.application.name=service-provider)

# 配置 nacos配置中心 服务名和地址
spring.application.name=nacos-config-name
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

#命名空间
spring.cloud.nacos.config.namespace=dev
#组名
spring.cloud.nacos.config.group=service-provider

#其他扩展配置文件
#配置文件dataid
spring.cloud.nacos.config.ext-config[0].data-id=redis.properties
#组名group
spring.cloud.nacos.config.ext-config[0].group=service-provider
#实时刷新
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=jdbc.properties
spring.cloud.nacos.config.ext-config[1].group=service-provider
spring.cloud.nacos.config.ext-config[1].refresh=true

3、当前命名空间为dev、实际开发中可创建test、prod等,在不同的环境用于切换配文件
在这里插入图片描述

在nacos配置中心默认添加一个叫 数据集(Data Id),默认命名规则:应用名.properties。例如:mall.properties
在这里插入图片描述
4、给 应用名.properties 添加任何配置,例如 name 和 age
在这里插入图片描述

5、动态获取配置,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入, @RefreshScope 注解开启动态刷新功能
用法:
@Value("${properties 文件中配置项的名}"):获取到配置属性名
@RefreshScope:动态获取并刷新配置

 @RefreshScope		//开启动态刷新
 class SampleController {

 	@Value("${user.name}")
 	String userName;

 	@Value("${user.age}")
 	int age;
 }

注意:如果nacos配置中心的配置文件( 应用名.properties )和当前应用的配置文件 (application.properties )中都配置了相同的项,优先使用配置中心的配置

总结:
1)命名空间:利用命名空间来做环境隔离
默认:public(保留空间);默认新增的所有配置都在public空间;一般会添加:开发,测试,生产
注意:在bootstrap.properties配置上,需要注明使用哪个命名空间下的配置
例如:spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871
建议:可以为每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

2)配置集ID(Data ID):一般会使用微服务名称

3)配置分组:默认所有的配置集都属于:DEFAULT_GROUP;
项目中的使用:通常使用配置分组区分环境:dev,test,prod

4)同时加载多个配置集
①微服务任何配置信息,任何配置文件都可以放在配置中心中
②只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可
③通过@Value,@ConfigurationProperties 等相关注解注入配置

四、Feign远程调用

1、首先 pom.xml 文件,引入 feign 依赖

<!--feign-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
	<version>2.2.1.RELEASE</version>
</dependency>

2、在application.yml进行配置

server:
  port: 8000	# 端口号
spring:
  application:
    name: member	# 服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848		# nacos地址

3、启动类添加 @EnableFeignClients 注解

@EnableFeignClients(basePackages = "com.member.feign")		//开启远程调用,扫描feign接口的包路径
@EnableDiscoveryClient		//服务注册与发现
@MapperScan("com.member.dao")		// mapper接口扫描
@SpringBootApplication
public class MemberApplication {

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

}

4、在需要远程调用其他微服务的微服务模块中,创建feign接口,使用 @FeignClient(被调用微服务的nacos注册名称) 注解
这里的包路径则是启动类上@EnableFeignClients(basePackages = “com.member.feign”) 扫描的路径

@FeignClient("service-provider")    //被调用微服务的nacos注册名称
public interface FeignService {

    @RequestMapping("/hello")
    public String hello();
}

5、controller使用

@RestController
public class MemberController {
    @Autowired
    private FeignService feignService;

    @RequestMapping("/test")
    public String test() {
        return "test : "+feignService.hello();
    }
}

总结:
远程调用别的微服务
1)在pom.xml文件引入open-feign 依赖
2)编写一个接口,上面写上需要调用远程服务接口(除了方法体,其他都从被调用的微服务中复制过来)
3)开启远程调用功能

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值