Nacos的简单使用

1.Nacos作为服务注册中心

1.1 使用步骤

创建父工程,引入以下依赖

<dependencyManagement>
       <dependencies>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-dependencies</artifactId>
               <version>2.3.2.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Hoxton.SR9</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-alibaba-dependencies</artifactId>
               <version>2.2.6.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
       </dependencies>
   </dependencyManagement>

创建子模块nacos-provider
pom.xml

 <!--nacos客户端-->
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
       </dependency>

application.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.190.128:8848 #nacos服务的地址
  application:
    name: nacos-provider #向注册中心注册的名字

启动类上添加@EnableDiscoveryClient注解,表示开启nacos服务注册功能

1.2 测试

浏览器输入本机的nacos地址:192.168.190.128:8848/nacos
输入账号:nacos 密码:nacos
查看服务列表是否有nacos-provider服务
请添加图片描述

1.3 RestTemplate远程服务调用

创建子模块nacos-consumer
pom.xml

 <!--nacos客户端-->
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
       </dependency>

application.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.190.128:8848 #nacos服务的地址
  application:
    name: nacos-consumer #向注册中心注册的名字

启动类上添加@EnableDiscoveryClient注解,表示开启nacos服务注册功能

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

创建ApplicationContextConfig.java配置类

@Configuration
public class ApplicationContextConfig {
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

创建ConsumerController .java

@RestController
@RequestMapping(value = "/consumer")
public class ConsumerController {
	
	@Autowired
	private RestTemplate restTemplate;

	@Autowired
	private DiscoveryClient discoveryClient;

	@RequestMapping(value="/getUserById/{id}")
	public User getUserById(@PathVariable Integer id){
		//获取nacos中注册的所有服务信息
		List<String> serviceList = discoveryClient.getServices();
		for (String service : serviceList) {
			System.out.println(service);
		}
		//获取nacos中注册的指定服务信息
		ServiceInstance instance = discoveryClient.getInstances("nacos-provider").get(0);
		String serviceUrl = instance.getHost() + ":" + instance.getPort();

		String url = "http://"+serviceUrl+"/provider/getUserById/"+id;
		return restTemplate.getForObject(url, User.class);
	}
}

在nacos-provider模块

@RestController("/provider")
public class UserController{

    @RequestMapping("/getUserById/{id}")
    public User hello(@PathVariable Integer id){
        User user = new User();
        user.setId(id);
        user.setUsername("Rose");
        user.setAge(20);
        user.setSex("女");
        return user;
    }
}

2. Nacos作为服务配置中心

2.1将nacos-provider的配置放到配置中心

pom.xml

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

创建bootstrap.yml文件

spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      config:
      	#prefix: nacos-provider #文件名,如果没有配置则默认为 ${spring.appliction.name}
        file-extension: yml  #修改默认配置文件的后缀名
        server-addr: 192.168.190.128:8848 # 配置中心的地址
        namespace: 2ef20e24-82f4-4d0d-b095-3ad640f54eb4 # 配置中心的命名空间

配置中心默认加载的文件为注册进服务中心的服务名称,即 nacos-provider.yml;
在controller层加入@RefreshScope注解,可以实现配置的动态刷新,而不用重启服务;
group,如不指定默认 DEFAULT_GROUP

3.Nacos持久化和集群

1.使用docker部署nacos

docker run -d \
-e PREFER_HOST_MODE=hostname \
-e MODE=cluster \
-e NACOS_APPLICATION_PORT=8849 \
-e NACOS_SERVERS="192.168.190.128:8848,192.168.190.128:8849,192.168.190.128:8850" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.190.128 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e NACOS_SERVER_IP=192.168.190.128 \
-e JVM_XMS=200m \
-e JVM_XMX=200m \
-e JVM_XMN=150m \
-p 8849:8849 \
--name nacos49 \
nacos/nacos-server:1.4.1

同理,继续部署其他两个端口即可

2.使用nginx

docker run -d --privileged=true -v /docker/mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -p 8080:8080 --name myNginx nginx

配置挂载目录,修改nginx的配置文件
nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    upstream nacos{
        server 192.168.190.128:8848;
        server 192.168.190.128:8849;
        server 192.168.190.128:8850;
    	}
    server {
        listen       8080;
        #server_name  localhost;
        server_name  192.168.190.128;

        location /nacos {
	  	 	proxy_pass	http://nacos;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

重启nginx容器即可

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用\[1\]和引用\[2\]的内容,你在使用Nacos作为配置中心时遇到了找不到配置的问题。可能的原因是你的配置文件命名方式不正确。正确的命名方式应该是`${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}`,所以你需要将`nacos-config-client.dev.yaml`改为`nacos-config-client-dev.yaml`。 根据引用\[3\]的内容,你还提到了在学习谷粒商城项目搭建Nacos配置中心时遇到了无法动态刷新的问题。为了解决这个问题,你可以按照以下步骤进行操作: 1. 在Windows下安装和启动Nacos。 2. 学习如何简单使用Nacos的配置中心。 3. 检查你自己遇到的问题,并寻找相应的解决方案。 关于你提到的"Nacos 2.20 使用配置报错"的问题,由于你没有提供具体的错误信息,我无法给出具体的解决方案。但是你可以尝试检查你的配置文件是否正确,并确保Nacos的版本与你使用的配置兼容。 希望以上信息对你有帮助。如果你还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *2* [NACOS 配置中心 无法获取配置 总是报错,可能原因如下:](https://blog.csdn.net/m0_57802508/article/details/125378118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [nacos配置中心简单使用,以及自己遇到的配置文件无法生效的问题](https://blog.csdn.net/LoveStady/article/details/126160055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值