news 2026/4/23 3:28:40

Nacos注册/配置中心

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nacos注册/配置中心

一、Nacos 注册/配置中心

文章目录

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

1. 服务注册

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

2. 服务发现

  1. 开启服务发现
@EnableDiscoveryClient//开启服务发现功能@SpringBootApplicationpublicclassProductMainApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ProductMainApplication.class,args);}}
  1. 测试服务发现
    • 这里discoveryClient和nacosServiceDiscovery效果一样
@SpringBootTestpublicclassDiscoveryTest{@AutowiredDiscoveryClientdiscoveryClient;@AutowiredNacosServiceDiscoverynacosServiceDiscovery;@TestvoiddiscoveryClientTest(){//获取所有服务for(Stringservice:discoveryClient.getServices()){System.out.println("service = "+service);//获取ip+port//获取所有实例List<ServiceInstance>instances=discoveryClient.getInstances(service);for(ServiceInstanceinstance:instances){System.out.println("ip; "+instance.getHost()+"; "+"port = "+instance.getPort());}}}@TestvoidnacosServiceDiscoveryTest()throwsNacosException{for(Stringservice:nacosServiceDiscovery.getServices()){System.out.println("service = "+service);//获取ip+porttry{List<ServiceInstance>instances=nacosServiceDiscovery.getInstances(service);for(ServiceInstanceinstance:instances){System.out.println("ip; "+instance.getHost()+"; "+"port = "+instance.getPort());}}catch(Exceptione){e.printStackTrace();}}}}

3. 远程调用

  1. 配置RestTemplate
    • RestTemplate是Spring提供的组件,发送请求
    @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
@ConfigurationpublicclassProductServiceConfig{@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}
  • 直接拼写
    /**
  • 基于注解的负载均衡远程查询商品信息
  • @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;
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:39:46

典型的全控型器件

门极可关断晶闸管GTO晶闸管的一种派生器件;通过在门极施加负的脉冲电流使其关断;开关速度快&#xff0c;饱和程度相比晶闸管浅&#xff0c;更容易退出饱和关断;电压电流容量大&#xff0c;与普通晶闸管接近。图左是晶闸管 &#xff0c; 图右是GTO主要参数最大可关断阳极电流IAT…

作者头像 李华
网站建设 2026/4/23 13:39:48

JS如何通过教程分享实现大文件上传的最佳实践?

中石油旗下子公司大文件传输系统技术方案 一、项目背景与需求分析 作为中石油集团旗下专注于能源信息化领域的子公司&#xff0c;我司长期服务于政府及军工单位&#xff0c;在能源管理、安全生产等关键领域积累了丰富的行业经验。本次政府招投标项目提出的大文件传输需求具有…

作者头像 李华
网站建设 2026/4/23 13:39:50

JQuery如何通过组件扩展支持大文件上传的自定义配置?

大三党毕业设计救星&#xff1a;10G大文件上传加密断点续传&#xff08;原生JSASP.NET WebForm&#xff09; 兄弟&#xff0c;作为山西某高校通讯专业的大三老狗&#xff0c;我太懂你现在的处境了——毕业设计要做文件管理系统&#xff0c;甲方&#xff08;老师&#xff09;要1…

作者头像 李华
网站建设 2026/4/23 13:39:08

vue和springboot框架开发的高等数学课程教辅资源系统的设计与实现_h27e4uy9

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 同行可拿货,招校园代理 vuespringboot_h27e4uy9 框架开发的高等数学课程教辅资…

作者头像 李华