SpringCloud使用Nacos服务发现实现远程调用
本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo。
1 Nacos
关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下。
《SpringBoot使用Nacos配置中心》
《SpringBoot使用Nacos服务发现》
在SpringBoot使用的时候,需要自行去向Nacos服务注册自己的服务,Nacos也提供了SpringCloud服务发现的依赖,本文结合spring-cloud-starter-alibaba-nacos-discovery进行使用介绍。
本文使用版本为:
- SpringCloud Finchley.SR2
- SpringBoot 2.0.3.RELEASE
- spring-cloud-starter-alibaba-nacos-discovery 0.2.1.RELEASE
- spring-cloud-starter-openfeign 2.0.0.RELEASE
2.本文场景
两个服务,如下:
- springcloud-nacos-discovery-provider:端口号10000,服务提供者。
- springcloud-nacos-discovery-consumer:端口号10001,服务消费者。
原理很简单,浏览器访问消费者,消费者调用服务提供者。
3.服务提供者
3.1 依赖配置
创建一个项目,项目中加入SpringCloud-Nacos依赖,完整pom如下所示。
<?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 http://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.0.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.dalaoyang</groupId><artifactId>springcloud_nacos_discovery_provider</artifactId><version>0.0.1-SNAPSHOT</version><name>springcloud_nacos_discory_provider</name><description>springcloud_nacos_discovery_provider</description><properties><java.version>1.8</java.version><spring-cloud.version>Finchley.SR2</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.1.RELEASE</version></dependency></dependencies><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></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.2 启动类
在启动类加入@SpringBootApplication注解,完整启动类代码如下所示。
package com.dalaoyang;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudNacosDiscoveryProviderApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudNacosDiscoveryProviderApplication.class, args);}}
3.3 配置文件
配置文件中配置Nacos服务地址,当前服务名,这里需要注意一点,使用Ribbon负载均衡的时候服务名中不能使用下划线,不然会找不到服务。
配置文件如下所示。
server.port=10000
spring.application.name=springcloud-nacos-discovery-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3.4 提供服务
创建一个Controller,提供一个方法进行测试,如下所示。
package com.dalaoyang.controller;import org.springframework.web.bind.annotation.*;/*** @author yangyang* @date 2019/2/4*/
@RestController
public class TestController {@GetMapping("/test/{string}")public String test(@PathVariable String string) {return "Hello Nacos :" + string;}
}
4 服务消费者
4.1 依赖配置
与服务提供者类似,在服务消费者加入SpringCloud-Nacos依赖和OpenFeign依赖,完整pom入夏所示。
<?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 http://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.0.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.dalaoyang</groupId><artifactId>springcloud_nacos_discovery_consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>springcloud_nacos_discovery_consumer</name><description>springcloud_nacos_discovery_consumer</description><properties><java.version>1.8</java.version><spring-cloud.version>Finchley.SR2</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.0.0.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.1.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
4.2 启动类
在启动类加入注解@EnableDiscoveryClient并且开启负载均衡,如下所示。
package com.dalaoyang;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudNacosDiscoveryConsumerApplication {public static void main(String[] args) {SpringApplication.run(SpringcloudNacosDiscoveryConsumerApplication.class, args);}@LoadBalanced@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}}
4.3 配置文件
配置文件与提供者一致,只是服务名不同,如下所示。
server.port=10001
spring.application.name=springcloud-nacos-discovery-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
4.4 创建服务调用
创建一个Controller进行调用服务,如下所示。
package com.dalaoyang.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;/*** @author yangyang* @date 2019/2/4*/
@RestController
public class TestConrtroller {@Autowiredprivate RestTemplate restTemplate;@GetMapping("test/{string}")public String test(@PathVariable String string) {return restTemplate.getForObject("http://springcloud-nacos-discovery-provider/test/" + string, String.class);}
}
5 测试
分别启动两个服务,查看Nacos管理页面,如图所示。
点击详情可以查看服务的详细信息,如端口号,权重等,如图所示。
接下俩在浏览器访问http://localhost:10001/test/dalaoyang,远程调用成功。
6.源码
服务提供者:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_nacos_discovery_provider
服务消费者:https://gitee.com/dalaoyang/springcloud_learn/tree/master/springcloud_nacos_discovery_consumer
SpringCloud使用Nacos服务发现实现远程调用相关推荐
- 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)
文章目录 SpringCloud 1. 认识微服务 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 1.5 总结 2. 服务拆分和远程调用 2.1 服务拆分原则 ...
- Nacos教程_3 整合SpringCloud(配置中心+服务发现)
教程原稿 https://gitee.com/fakerlove/joker-nacos 文章目录 3. 整合SpringCloud(配置中心+服务发现) 3.1 写配置 3.2 创建父工程demo ...
- Idea+springcloud+zookeeper做的服务发现和远程连接zookeeper
idea+springcloud+zookeeper做的服务发现和远程连接zookeeper
- nacos基础(14):nacos服务发现之微服务协作调用多实例负载均衡
文章目录 前言 多实例负载均衡 1. 启动多个生产者实例 2. 启动消费者实例 3. 更换负载均衡器 传送门 前言 微服务的负载均衡. 代码已共享至 Gitee:https://gitee.com/l ...
- 【黑马-SpringCloud技术栈】【02】服务拆分及远程调用_服务提供者与消费者
持续学习&持续更新中- 守破离 [黑马-SpringCloud技术栈][02]服务拆分及远程调用_服务提供者与消费者 SpringCloud引入 服务拆分及远程调用 服务拆分原则 服务拆分De ...
- Spring Cloud微服务之Nacos服务发现(八)
Nacos服务发现 一.什么是Nacos? 二.微服务中常见的注册中心 三.Nacos主要提供以下四大功能: 四.Nacose结构图 5.Nacos下载和安装 1.下载地址和版本 2.启动nacos服 ...
- SpringCloud学习之(十八)SpringCloud Alibaba Nacos服务注册和配置中心
文章目录 (十八)SpringCloud Alibaba Nacos服务注册和配置中心 1.Nacos简介 1.1 为什么叫Nacos 1.2 Nacos是什么 1.3 Nacos能干嘛 1.4 Na ...
- nacos服务发现流程
nacos服务发现流程 前面已经知道nacos服务是怎么注册的了,那么nacos对注册的服务又是怎么发现的呢. 1. 既然我们已经知道nacos服务是怎么注册的了,那么点击服务注册的流程里面,查找到最 ...
- Day02 - 服务拆分及远程调用
服务拆分及远程调用 1.服务拆分 - 案例Demo 不说那么多,直接上代码 2.微服务远程调用 1.服务拆分 - 案例Demo 服务拆分注意事项 不同微服务,不要重复开发相同业务 微服务数据独立,不要 ...
最新文章
- 互联网企业的移动布局
- STK 卫星覆盖分析笔记
- 如何提取fasta文件的部分信息
- 针对IE6\7\8\9\10浏览器的CSS hack大全详解
- html页面不显示横向滚动条,css横向滚动条不显示?
- 关于学习新技术的方法
- Silverlight MMORPG团队项目截图
- RocketMQ的存储之消息的同步、异步刷盘
- SQLServer数据库文件组相关知识笔记
- Tensoflow-SSD代码解读(github-balancap代码)
- sftp本地上传和远程下载
- 前端记住密码功能实现
- 怎么训练 GAN 网络
- SatSun CRMS V2010 整站系统
- CMOS曝光时间、积分时间
- us排名2019计算机专业排名,2019 USNews美国大学计算机专业排名
- 30个计算机相关的英语词汇,计算机应用常用英语词汇30
- 安装配置Apache和php
- 关于linux移植碰到Resetting CPU ...的问题
- 【方案总览】全志方案选型总览与分析-持续更新
热门文章
- 夜神模拟器配合Burpsuite进行抓包
- 前端框架Vue.js(一)
- 北大肖臻老师《区块链技术与应用》系列课程学习笔记[29]总结
- 区域生长分割的两种实现方法
- 如何在thymeleaf模板中设置全屏背景图
- 检验杜宾 瓦森检验法R语言_回归分析 | R语言回归算法、模型诊断
- cocos2d-x开发 之 声音引擎SimpleAudioEngine
- 行人检测:论文翻译Histograms of Oriented Gradients for Human Detection
- mysql如何存储图片_教你怎样在MySQL数据库中直接储存图片
- 个人无法获取备案授权码所购买的腾讯云服务器还能备案吗?