news 2026/6/23 18:12:05

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/6/23 18:11:52

Vue-cli如何集成WebUploader完成百万文件分块上传?

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

作者头像 李华
网站建设 2026/6/23 9:31:53

HTML如何设计JQuery支持大文件上传的暂停与继续功能?

大文件传输解决方案设计 项目背景与需求分析 作为江西某软件公司的前端工程师&#xff0c;我面临一个具有挑战性的文件传输需求场景&#xff1a; 超大文件传输&#xff1a;支持20G单文件传输&#xff0c;100G的10万级文件夹传输全平台兼容&#xff1a;包括IE8、国产浏览器和…

作者头像 李华
网站建设 2026/6/22 23:24:32

CSS margin(外边距)

CSS margin(外边距) 概述 CSS(层叠样式表)中的 margin 属性用于控制元素的外边距,即元素与其它元素之间的空间。外边距是CSS盒模型的一部分,对网页布局有着重要的影响。本文将详细介绍CSS中 margin 属性的用法、注意事项以及与其它CSS属性的关系。 margin属性的基本用法…

作者头像 李华
网站建设 2026/6/23 6:24:12

【计算机毕业设计案例】基于java+springboot+vue的流浪动物救助领养微信小程序基于springboot+微信小程序的宠物领养系统小程序(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/23 19:11:21

宿主机net.ipv4.ip_forward设置 0 Docker网络直接“罢工”!

导读&#xff1a;在Linux宿主机上玩Docker&#xff0c;net.ipv4.ip_forward这个内核参数绝对是绕不开的关键。很多运维和开发同学会疑惑&#xff1a;这个参数默认是1&#xff0c;能不能改成0&#xff1f;改了之后对Docker会有啥影响&#xff1f;今天咱们就把这个参数的来龙去脉…

作者头像 李华