本文使用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服务发现实现远程调用相关推荐

  1. 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)

    文章目录 SpringCloud 1. 认识微服务 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 1.5 总结 2. 服务拆分和远程调用 2.1 服务拆分原则 ...

  2. Nacos教程_3 整合SpringCloud(配置中心+服务发现)

    教程原稿 https://gitee.com/fakerlove/joker-nacos 文章目录 3. 整合SpringCloud(配置中心+服务发现) 3.1 写配置 3.2 创建父工程demo ...

  3. Idea+springcloud+zookeeper做的服务发现和远程连接zookeeper

    idea+springcloud+zookeeper做的服务发现和远程连接zookeeper

  4. nacos基础(14):nacos服务发现之微服务协作调用多实例负载均衡

    文章目录 前言 多实例负载均衡 1. 启动多个生产者实例 2. 启动消费者实例 3. 更换负载均衡器 传送门 前言 微服务的负载均衡. 代码已共享至 Gitee:https://gitee.com/l ...

  5. 【黑马-SpringCloud技术栈】【02】服务拆分及远程调用_服务提供者与消费者

    持续学习&持续更新中- 守破离 [黑马-SpringCloud技术栈][02]服务拆分及远程调用_服务提供者与消费者 SpringCloud引入 服务拆分及远程调用 服务拆分原则 服务拆分De ...

  6. Spring Cloud微服务之Nacos服务发现(八)

    Nacos服务发现 一.什么是Nacos? 二.微服务中常见的注册中心 三.Nacos主要提供以下四大功能: 四.Nacose结构图 5.Nacos下载和安装 1.下载地址和版本 2.启动nacos服 ...

  7. SpringCloud学习之(十八)SpringCloud Alibaba Nacos服务注册和配置中心

    文章目录 (十八)SpringCloud Alibaba Nacos服务注册和配置中心 1.Nacos简介 1.1 为什么叫Nacos 1.2 Nacos是什么 1.3 Nacos能干嘛 1.4 Na ...

  8. nacos服务发现流程

    nacos服务发现流程 前面已经知道nacos服务是怎么注册的了,那么nacos对注册的服务又是怎么发现的呢. 1. 既然我们已经知道nacos服务是怎么注册的了,那么点击服务注册的流程里面,查找到最 ...

  9. Day02 - 服务拆分及远程调用

    服务拆分及远程调用 1.服务拆分 - 案例Demo 不说那么多,直接上代码 2.微服务远程调用 1.服务拆分 - 案例Demo 服务拆分注意事项 不同微服务,不要重复开发相同业务 微服务数据独立,不要 ...

最新文章

  1. 互联网企业的移动布局
  2. STK 卫星覆盖分析笔记
  3. 如何提取fasta文件的部分信息
  4. 针对IE6\7\8\9\10浏览器的CSS hack大全详解
  5. html页面不显示横向滚动条,css横向滚动条不显示?
  6. 关于学习新技术的方法
  7. Silverlight MMORPG团队项目截图
  8. RocketMQ的存储之消息的同步、异步刷盘
  9. SQLServer数据库文件组相关知识笔记
  10. Tensoflow-SSD代码解读(github-balancap代码)
  11. sftp本地上传和远程下载
  12. 前端记住密码功能实现
  13. 怎么训练 GAN 网络
  14. SatSun CRMS V2010 整站系统
  15. CMOS曝光时间、积分时间
  16. us排名2019计算机专业排名,2019 USNews美国大学计算机专业排名
  17. 30个计算机相关的英语词汇,计算机应用常用英语词汇30
  18. 安装配置Apache和php
  19. 关于linux移植碰到Resetting CPU ...的问题
  20. 【方案总览】全志方案选型总览与分析-持续更新

热门文章

  1. 夜神模拟器配合Burpsuite进行抓包
  2. 前端框架Vue.js(一)
  3. 北大肖臻老师《区块链技术与应用》系列课程学习笔记[29]总结
  4. 区域生长分割的两种实现方法
  5. 如何在thymeleaf模板中设置全屏背景图
  6. 检验杜宾 瓦森检验法R语言_回归分析 | R语言回归算法、模型诊断
  7. cocos2d-x开发 之 声音引擎SimpleAudioEngine
  8. 行人检测:论文翻译Histograms of Oriented Gradients for Human Detection
  9. mysql如何存储图片_教你怎样在MySQL数据库中直接储存图片
  10. 个人无法获取备案授权码所购买的腾讯云服务器还能备案吗?