news 2026/5/2 18:24:13

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/5/1 13:04:30

电力电子器件基础

电力电子器件分类按驱动信号的性质分类:电流驱动型通过从控制端注入或者抽出电流来实现导通或者关断电压驱动型仅通过在控制端和公共端之间施加一定的电压信号就可以实现导通或关断控制。按器件内部载流子参与导电情况分类:双极性器件单极性器件复合型器件双极型器件:GTR、SCR、…

作者头像 李华
网站建设 2026/5/1 18:42:13

KindEditor处理政府公文word图片转存信创系统

&#xff08;推了推黑框眼镜&#xff0c;手指在键盘上噼里啪啦敲击&#xff09;各位老铁&#xff0c;咱北京程序员又来唠嗑了&#xff01;最近接了个CMS官网的活儿&#xff0c;客户爸爸要求在KindEditor里整点花活——要能直接把Word/Excel/PPT/PDF里的内容连锅端到编辑器里&am…

作者头像 李华
网站建设 2026/4/28 3:19:31

WordPress处理站群系统pdf文档批量转存

要求&#xff1a;开源&#xff0c;免费&#xff0c;技术支持 博客&#xff1a;WordPress 开发语言&#xff1a;PHP 数据库&#xff1a;MySQL 功能&#xff1a;导入Word,导入Excel,导入PPT(PowerPoint),导入PDF,复制粘贴word,导入微信公众号内容,web截屏 平台&#xff1a;Window…

作者头像 李华
网站建设 2026/4/17 22:43:55

百度免费上传组件如何整合国密算法实现加密传输?

大文件传输系统设计方案&#xff08;基于SM4国密算法&#xff09; 需求分析 作为四川某软件公司的开发人员&#xff0c;我面临以下核心需求&#xff1a; 实现10GB级别大文件的分片上传/下载采用国密SM4算法进行端到端加密服务端需支持SM4加密存储兼容主流浏览器及信创国产化…

作者头像 李华
网站建设 2026/5/1 7:15:34

基于FPGA实现千兆以太网通信:RGMII接口与UDP、ARP协议的奇妙之旅

基于fpga实现千兆以太网通信&#xff0c;纯Verilog代码&#xff0c;接口为rgmii&#xff0c;已经在开发版上验证过&#xff0c;支持udp和arp协议。最近在FPGA开发领域折腾了一番&#xff0c;成功基于FPGA实现了千兆以太网通信&#xff0c;采用纯Verilog代码编写&#xff0c;接口…

作者头像 李华