Nacos注册/配置中心

一、Nacos 注册/配置中心

文章目录

  • [一、Nacos 注册/配置中心](#一、Nacos 注册/配置中心)
    • [1. 服务注册](#1. 服务注册)
    • [2. 服务发现](#2. 服务发现)
    • [3. 远程调用](#3. 远程调用)
    • [4. 负载均衡](#4. 负载均衡)

1. 服务注册

  • 引入依赖
xml 复制代码
<dependency>  
    <groupId>com.alibaba.cloud</groupId>  
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>  
</dependency>
  • 整合配置
properties 复制代码
spring.application.name=service-order  
server.port=8000  
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

2. 服务发现

  1. 开启服务发现
java 复制代码
@EnableDiscoveryClient  //开启服务发现功能  
@SpringBootApplication  
public class ProductMainApplication {  
  
    public static void main(String[] args) {  
        SpringApplication.run(ProductMainApplication.class, args);  
    }  
}
  1. 测试服务发现
    • 这里discoveryClient和nacosServiceDiscovery效果一样
java 复制代码
@SpringBootTest  
public class DiscoveryTest {  
  
    @Autowired  
    DiscoveryClient discoveryClient;  
  
    @Autowired  
    NacosServiceDiscovery nacosServiceDiscovery;  
  
    @Test  
    void discoveryClientTest(){  
        //获取所有服务  
        for (String service : discoveryClient.getServices()) {  
            System.out.println("service = " + service);  
            //获取ip+port  
            //获取所有实例  
            List<ServiceInstance> instances = discoveryClient.getInstances(service);  
            for (ServiceInstance instance : instances) {  
                System.out.println("ip; "+instance.getHost()+"; "+"port = " + instance.getPort());  
            }  
        }  
    }  
  
    @Test  
    void nacosServiceDiscoveryTest() throws NacosException {  
        for (String service : nacosServiceDiscovery.getServices()) {  
            System.out.println("service = " + service);  
            //获取ip+port  
            try {  
                List<ServiceInstance> instances = nacosServiceDiscovery.getInstances(service);  
                for (ServiceInstance instance : instances) {  
                    System.out.println("ip; "+instance.getHost()+"; "+"port = " + instance.getPort());  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  
}

3. 远程调用

  1. 配置RestTemplate

    • RestTemplate是Spring提供的组件,发送请求
    java 复制代码
    @Configuration  
     public class ProductServiceConfig {  
     	@Bean      
     	public RestTemplate restTemplate(){  
        	 return new RestTemplate();  
     	}  
     }
java 复制代码
/**  
* 远程查询商品信息  
* @param productId  
* @return  
*/  
private Product getProductFromRemote(Long productId){  
   //1. 获取商品服务所在的所有机器IP+port  
   List<ServiceInstance> instances = discoveryClient.getInstances("service-product");  
   ServiceInstance serviceInstance = instances.get(1);  
   //远程url  
   String url = "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/product/"+productId;  
   log.info("url = " + url);  
   //给远程发送请求  
   Product product = restTemplate.getForObject(url, Product.class);  
   return product;  
}

4. 负载均衡

  • RestTemplate添加@LoadBalanced
java 复制代码
@Configuration  
public class ProductServiceConfig {  
  
    @Bean  
    @LoadBalanced    public RestTemplate restTemplate(){  
        return new RestTemplate();  
    }  
}
  • 直接拼写

    java 复制代码
    /**  
  • 基于注解的负载均衡远程查询商品信息
  • @param productId
  • @return
    */

private Product getProductFromRemoteWithLoadBalancerAnnotation(Long productId){

// 进阶 3 :基于注解的负载均衡

String url = "http://service-product/product/"+productId;

//给远程发送请求 service-product 会被动态替换

Product product = restTemplate.getForObject(url, Product.class);

return product;

}

复制代码
相关推荐
麦兜*1 分钟前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
console.log('npc')1 分钟前
vue2中子组件父组件的修改参数
开发语言·前端·javascript
码点2 分钟前
【无标题】日文字库Japan.ini
开发语言
IT=>小脑虎6 分钟前
2026版 Python零基础小白学习知识点【基础版详解】
开发语言·python·学习
rabbit_pro14 分钟前
Java使用Mybatis-Plus封装动态数据源工具类
java·python·mybatis
wjs202416 分钟前
抽象工厂模式
开发语言
lly20240617 分钟前
SVG 模糊效果详解
开发语言
期待のcode19 分钟前
Java虚拟机类加载机制
java·开发语言
Learner26 分钟前
Python运算符
开发语言·python
短剑重铸之日27 分钟前
《SpringBoot4.0初识》第四篇:原生镜像
java·原生镜像·springboot4.0