【Nacos】Nacos注册中心的使用
Spring Cloud Alibaba版本选型
版本说明:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
由于Spring Boot 2.4+和以下版本之间变化较大,目前企业级客户老项目相关Spring Boot版本仍停留在Spring Boot 2.4以下,为了同时满足存量用户和新用户不同需求,社区以Spring Boot 2.4为分界线,同时维护2.2.x和2021.x两个分支迭代。
适配Spring Boot 2.4, Spring Cloud 2021.x版本及以上的Spring Cloud Alibaba版本如下表(最新版本用*标记): (注意,该分支 Spring Cloud Alibaba版本命名方式进行了调整, 未来将对应Spring Cloud版本, 前三位为Spring Cloud版本,最后一位为扩展版本,比如适配Spring Cloud 2021.0.1版本对应的Spring Cloud Alibaba第一个版本为:2021.0.1.0,第个二版本为:2021.0.1.1,依此类推)
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
---|---|---|
2021.0.4.0* | Spring Cloud 2021.0.4 | 2.6.11 |
2021.0.1.0 | Spring Cloud 2021.0.1 | 2.6.3 |
2021.1 | Spring Cloud 2020.0.1 | 2.4.2 |
父pom配置
这里使用Spring Cloud 2021.0.4、Spring Cloud Alibaba 2021.0.4.0。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.11</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.morris.nacos</groupId><artifactId>nacos-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>nacos-demo</name><description>nacos-demo</description><properties><java.version>1.8</java.version><spring-cloud.version>2021.0.4</spring-cloud.version><spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version></properties><modules><module>user-service</module><module>order-service</module></modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
服务提供者order-service
服务提供者可以通过Nacos的服务注册发现功能将其服务注册到Nacos Server上。
引入依赖
order-service项目的pom.xml中引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置nacos注册中心
server:port: 8020spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848
更多配置参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery
启动order-service,查看是否注册成功
启动order-service,可以前往nacos管理端界面查看是否成功注册。
管理后台地址:http://localhost:8848/nacos/index.html#/serviceManagement?dataId=&group=&appName=&namespace=
也可以通过Open API查询实例列表:http://localhost:8848/nacos/v1/ns/instance/list?serviceName=order-service
{"hosts": [{"ip": "127.0.0.1","port": 8020,"valid": true,"healthy": true,"marked": false,"instanceId": "127.0.0.1#8020#DEFAULT#DEFAULT_GROUP@@order-service","metadata": {"preserved.register.source": "SPRING_CLOUD"},"enabled": true,"weight": 1,"clusterName": "DEFAULT","serviceName": "order-service","ephemeral": true}],"dom": "order-service","name": "DEFAULT_GROUP@@order-service","cacheMillis": 3000,"lastRefTime": 1666168905613,"checksum": "b943a7ec55bd85740b4d5055382261eb","useSpecifiedURL": false,"clusters": "","env": "","metadata": {}
}
服务消费者user-service
服务消费者可以通过Nacos的服务注册发现功能从Nacos server上获取到它要调用的服务。
配置nacos注册中心
server:port: 8030spring:application:name: user-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848
使用RestTemplate进行http调用
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
加入配置:
@Configuration
public class RestConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}
这里只是简单的http调用,没有使用到注册中心:
@GetMapping("findOrderByUserId")
public List<Order> findOrderByUserId(Long userId) {Order[] orders = restTemplate.getForObject("http://127.0.0.1:8020/order/findOrderByUserId?userId=", Order[].class, userId);return Arrays.asList(orders);
}
使用RestTemplate进行服务调用
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
新版本SpringCloud推荐使用loadbalancer来实现负载均衡,已经不再包含ribbon依赖了。
加入配置:
@Configuration
public class RestConfig {@Bean@LoadBalancedpublic RestTemplate restTemplate2() {return new RestTemplate();}
}
调用:
@GetMapping("findOrderByUserId2")
public List<Order> findOrderByUserId2(Long userId) {Order[] orders = restTemplate2.getForObject("http://order-service/order/findOrderByUserId?userId=", Order[].class, userId);return Arrays.asList(orders);
}
使用WebClient进行HTTP调用
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
加入配置:
@Bean
WebClient.Builder webClientBuilder() {return WebClient.builder();
}
调用:
@GetMapping("findOrderByUserId3")
public Mono<List<Order>> findOrderByUserId3(Long userId) {return webClientBuilder.build().get().uri("http://127.0.0.1:8020/order/findOrderByUserId?userId=" + userId).retrieve().bodyToMono(Order[].class).map(t -> Arrays.asList(t));
}
使用WebClient进行服务调用
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
加入配置:
@Bean
@LoadBalanced
WebClient.Builder webClientBuilder2() {return WebClient.builder();
}
调用:
@GetMapping("findOrderByUserId4")
public Mono<List<Order>> findOrderByUserId4(Long userId) {return webClientBuilder2.build().get().uri("http://order-service/order/findOrderByUserId?userId=" + userId).retrieve().bodyToMono(Order[].class).map(t -> Arrays.asList(t));
}
使用Feign进行服务调用
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
开启@EnableFeignClients。
@EnableFeignClients
@SpringBootApplication
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}}
加入Client配置:
package com.morris.user.client;import com.morris.user.entity.Order;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;import java.util.List;@FeignClient(value = "order-service", path = "/order")
public interface OrderClient {@GetMapping("findOrderByUserId")List<Order> findOrderByUserId(@RequestParam("userId") Long userId);}
调用:
@GetMapping("findOrderByUserId5")
public List<Order> findOrderByUserId5(Long userId) {return orderClient.findOrderByUserId(userId);
}
【Nacos】Nacos注册中心的使用相关推荐
- SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心
点击关注公众号,Java干货及时送达 本次教程旨在为读者提供2020版本的最佳实践方案,使用我认为最容易学习的组件,可能很多组件有很多替代方案,在这里不依依讲述.本次教程使用的组件如下: 注册中心:n ...
- nacos 负载策略_Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. SpringCloud实战 ...
- Nacos系列:基于Nacos的注册中心
前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...
- Dubbo 融合 Nacos 成为注册中心
Nacos 作为 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现. 预备工作 当您将 dubbo-regi ...
- Nacos(九)之Dubbo 融合 Nacos 成为注册中心
转载自 Dubbo 融合 Nacos 成为注册中心 Nacos 作为 Dubbo 生态系统中重要的注册中心实现,本文将会介绍如何进行 Dubbo 对接 Nacos 注册中心的工作. 预备工作 请确保 ...
- java注册中心nacos_spring-cloud整合nacos做注册中心
前面讲了spring-cloud整合nacos做配置中心,这节讲一下nacos做注册中心 至于注册中心是什么,我就不讲了,不了解的可以去问度娘 下面我就直接开始了,也是比较简单的: 1.引入依赖 1. ...
- nacos 公共_技术分享——使用nacos作注册中心和配置中心
什么是nacos? 首先看下官方的简介: Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Naco ...
- dubbo之使用nacos作为注册中心
号外号外:麻烦点击左侧我正在参加博客之星评选,请您投票,给个五星好评,谢谢大家了!!! 写在前面 通过本文一起来看下如何使用nacos作为注册中心来注册dubbo服务提供者和服务消费者的信息. 在这篇 ...
- 基于Nacos的注册中心与配置中心
基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务,Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.Nacos主要用于发现.配置和 ...
- SpringCloud用nacos作为注册中心
docker安装nacos Docker Toolbox安装nacos docker pull nacos/nacos-server 拉取慢的话,自己去换下源,自行百度. docker images ...
最新文章
- C# 四舍五入round函数使用的代码
- 公布.NET 框架库源代码(转)
- Linux中的popen-pclose
- ffmpeg rtp时间戳
- python实现自动发送微博,当自己写博客时同步上去。
- 渐进式web应用程序_通过渐进式Web应用程序吸引用户并增强他们的体验
- tensorflow随机梯度下降算法使用滑动平均模型
- Mysql Workbench中EER Diagram逆向生成表
- python机器学习库sklearn——数据预处理
- Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
- JavaScript基础---语言基础(4)
- 电容屏、电阻屏基础知识
- 计算机制图应用领域,计算机制图对测绘工程的应用
- 如何修改ftp服务器密码,如何修改FTP密码
- 公司邮箱、公共邮箱、工作邮箱,常用什么邮箱?
- virtualBox安装centos6增强包报错解决及配置共享文件夹
- 报告预测,到2050年将有超过10亿人流离失所
- java 图片水印_JAVA实现图片水印
- 泊松分布 (Poisson-Disc)算法
- 系统可用性衡量指标MTTR|MTTF|MTBF