SpringCloud通过Nacos实现注册中心与远程服务调用详解流程

目录
  • 1. 基于Nacos实现服务注册与发现
    • 1.1 pom依赖
    • 1.2 yaml配置
    • 1.3 添加启动注解
    • 1.4 启动服务查看控制台
  • 2.基于Nacos实现远程服务调用
    • 2.1 客户端创建RestTemplate Bean
    • 2.2 客户端调用代码
    • 2.3 服务端暴露接口
    • 2.4 服务调用测试

本文主要记录基于Nacos实现服务注册中心和远程服务调用

1. 基于Nacos实现服务注册与发现

基于pring-boot-starter-parent 2.6.8,pring-cloud-dependencies 2021.0.3,order服务和user服务

1.1 pom依赖

<!--服务注册与发现-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>2021.0.1.0</version>
</dependency>
<!--远程服务调用负载均衡-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

1.2 yaml配置

order服务application.yml

spring:
  application:
    name: orderservice
  cloud:
    #找对应网段的网卡 不配置内部服务就走外网
    inetutils:
      preferred-networks: 192.168.0
    nacos:
      discovery:
        server-addr: 192.168.0.221:8848

user服务application.yml

spring:
  application:
    name: userservice
  cloud:
    #找对应网段的网卡 不配置内部服务就走外网
    inetutils:
      preferred-networks: 192.168.0
    nacos:
      discovery:
        server-addr: 192.168.0.221:8848

1.3 添加启动注解

@EnableDiscoveryClient,需要注册到Nacos的服务都需要添加

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

1.4 启动服务查看控制台

控制台地址http://192.168.0.221:8848/nacos,账号密码都是nacos,查看服务列表

服务详情图

如果未配置preferred-networks,ip则显示外网ip,也会用于服务调用

2.基于Nacos实现远程服务调用

2.1 客户端创建RestTemplate Bean

	@LoadBalanced    // 开启负载均衡策略
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

2.2 客户端调用代码

    @Autowired
    RestTemplate restTemplate;
    @Autowired
    private DiscoveryClient discoveryClient;
    @GetMapping("/test")
    public String test() throws Exception {
        //可以获取到对应服务的列表 服务名 ip 端口均可从这里面获取到 也可以自己决定调用顺序
        List<ServiceInstance> instances = discoveryClient.getInstances("userservice");
		//get方式调用
        String template = restTemplate.getForObject("http://userservice/getTime/1123?name=jack", String.class);
        Map<String, Object> resMap = new HashMap<>();
        resMap.put("aaaa", "bbbb");
        //post调用方式
        RequestEntity<Map<String, Object>> requestEntity = RequestEntity
                .post("http://userservice/postTime")
                .contentType(MediaType.APPLICATION_JSON)
                .body(resMap);
        ResponseEntity<Map> responseEntity = restTemplate.exchange(requestEntity, Map.class);]
        log.info("rest -- {}", template + ":" + responseEntity.getBody());
        return template + ":" + responseEntity.getBody();
    }

2.3 服务端暴露接口

@GetMapping("/getTime/{uuid}")
public String getTime(@PathVariable String uuid, @RequestParam String name) {
    return new Date().getTime() + ":" + uuid + ":" + name;
}
@PostMapping("/postTime")
public Map<String, Object> getTime(@RequestBody Map<String, Object> params) {
    params.put("time", new Date().getTime());
    return params;
}

2.4 服务调用测试

访问客户端调用接口,截图如下

控制台日志:

c.e.order.controller.OrderController     : rest -- 1657182229010:1123:jack:{aaaa=bbbb, time=1657182229068}

在使用过程中发现想接收List<Map<String,Object>>太麻烦了,还是使用模板的远程调用openfeign了,下文分享。

到此这篇关于SpringCloud通过Nacos实现注册中心与远程服务调用详解流程的文章就介绍到这了,更多相关SpringCloud Nacos注册中心内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅析SpringCloud Alibaba-Nacos 作为注册中心示例代码

    文档地址 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md 1. 下载nacos-server https://github.com/alibaba/nacos/releases 2.启动nacos-server 默认使用nacos nacos 登录 Linux/Un

  • SpringCloud 服务注册中的nacos实现过程

    如下图,org.springframework.cloud.spring-cloud-commons包下定义了一系列接口,其中就包括serviceregistry的系列规范,并通过SPI机制去调用接口实现. 在该包的META-INF/spring.factories文件中,可以找到EnableAutoConfiguration.class为key的value中有AutoServiceRegistrationAutoConfiguration.class这一项. 来看看这个AutoServiceR

  • SpringCloud集成Nacos的使用小结

    Nacos 注册中心 Nacos 是 Dubbo 生态系统中重要的注册中心实现,其中 dubbo-registry-nacos 则是 Dubbo 融合 Nacos 注册中心的实现. Nacos服务安装与启动 安装地址: https://github.com/alibaba/nacos/releases 本文在Windows环境测试,下载zip版,解压. 配置conf目录下的application.properties文件,配置nacos数据源,端口等. #*************** Spri

  • Springcloud Nacos基本操作代码实例

    Nacos是什么 和Eureka,zookeeper,consul相同,Nacos也是一个注册中心组件咯,当然是,不过它不仅仅是注册中心.Nacos也是一个配置中心,比如SpringCloud中的Config,将配置文件版本化管理.那么Nacos到底是什么呢, 总结为官网一句话就是:Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 下面仅介绍nacos的配置,不涉及深层的原理. 1.安装和下载 h

  • 关于springcloud集成nacos遇到的问题

    目录 springcloud集成nacos遇到的问题 1.获取不到配置文件信息 2.springcloud 服务注册不上服务列表 springcloud无法注册Nacos 这是官方推荐一起使用的版本 赶紧去pom中改成2.2.1.RELEASE,加载后重新运行 springcloud集成nacos遇到的问题 1.获取不到配置文件信息 有时候新建了配置文件后浏览器访问发现获取不到里面的值,原来springcloud对应的nacos配置中心配置Data ID是需要加后缀名的 在 Nacos Spri

  • SpringCloud-Alibaba-Nacos启动失败解决方案

    下载及启动 Nacos 下载地址:https://github.com/alibaba/nacos/releases 在Windows下,进入bin目录,双击 startup.cmd 即可运行 启动出现问题 问题:双击 startup.cmd 启动失败,窗口一闪而过 你需要先去试试你的 Tomcat 能否启动:进入 Tomcat 安装目录 bin 文件夹,双击 startup.bat 如果能正常启动,出门右转,下面的不用看了

  • SpringCloud使用Nacos保存和读取变量的配置方法

    目录 前提条件 启动配置管理 注入配置 同步配置 注意: 在使用SpringCloud开发微服务时,经常会遇到一些比较小的后台参数配置,这些配置不足以单独开一张表去存储,而且其他服务会读取该参数.比如IP白名单.这时,使用Nacos去保存和读取就比较方便. 前提条件 使用SpringCloud的项目 启动Nacos 启动配置管理 添加依赖: <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId&

  • SpringCloud安装Nacos完成配置中心

    目录 1. Nacos介绍 2. docker安装Nacos 2.1 docker-compose.yaml 2.2 启动后访问控制台 3.Springboot集成Nacos 3.1 pom依赖 3.2 yaml配置 3.3 测试配置动态化 3.4 测试日志 eureka注册中心 1. Nacos介绍 官网说明:Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 2. docker安装Nacos 基

  • SpringBoot项目改为SpringCloud项目使用nacos作为注册中心的方法

    本章讲解的是在不改变原有业务的情况下将springboot改为springcloud项目使用nacos作为注册中心 首先在官网下载好nacos注册中心,在bin目录中startup.cmd文件为启动命令默认端口号是8888 接下来修改原有项目依赖 在父依赖模块添加springcloud依赖版本,若没有父依赖直接在项目指定也一样 首先指定版本 <properties> <cloud.version>Hoxton.RELEASE</cloud.version> <al

  • SpringCloud通过Nacos实现注册中心与远程服务调用详解流程

    目录 1. 基于Nacos实现服务注册与发现 1.1 pom依赖 1.2 yaml配置 1.3 添加启动注解 1.4 启动服务查看控制台 2.基于Nacos实现远程服务调用 2.1 客户端创建RestTemplate Bean 2.2 客户端调用代码 2.3 服务端暴露接口 2.4 服务调用测试 本文主要记录基于Nacos实现服务注册中心和远程服务调用 1. 基于Nacos实现服务注册与发现 基于pring-boot-starter-parent 2.6.8,pring-cloud-depend

  • 详解SpringCloud使用Consul做注册中心

    简介: Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 , Consul 提供了微服务中服务注册发现注册,微服务中的分布式配置中心,可以单独使用,也可

  • SpringCloud使用Zookeeper作为注册中心

    服务注册 引入相关依赖: <?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/

  • nacos配置注册中心时指定命名空间不起作用的问题

    目录 nacos配置注册中心时指定命名空间不起作用 因为命名空间不适用于nacos 0.8 nacos命名空间的使用 我们为什么要用命名空间呢 创建命名空间 最终读取 nacos配置注册中心时指定命名空间不起作用 因为命名空间不适用于nacos 0.8 Nacos客户端服务注册不划分命名空间,默认注册位于公共命名空间 下. 他被阿里设计的起初原因是:namespace主要是进行业务隔离的,多个业务或者部门可以用一个Nacos,但是数据都相互屏蔽. 因此并不是做服务和开发环境隔离的,目前没看到官方

  • Spring Cloud Alibaba使用Nacos作为注册中心和配置中心

    目录 前言 Nacos简介 使用Nacos作为注册中心 安装并运行Nacos 创建应用注册到Nacos 负载均衡功能 使用Nacos作为配置中心 创建nacos-config-client模块 在Nacos中添加配置 Nacos的动态刷新配置 使用到的模块 前言 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. Nacos简介 Nacos 致力于帮助您发现.配置和管理微服务

  • 详解Nacos中注册中心和配置中心的实现

    目录 1.Nacos 简介 Nacos 特性介绍 2.注册中心实现 2.1 创建服务提供者 2.2 创建服务消费者 3.配置中心实现 3.1 新建项目并添加依赖 3.2 配置 Nacos Config 信息 3.3 编写代码读取配置文件 3.4 Nacos 控制台添加配置信息 3.5 动态刷新功能 4.项目源码 小结 Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录.而 Nacos 作为 Spring Cloud A

  • SpringBoot集成Nacos实现注册中心与配置中心流程详解

    目录 SpringBoot整合Nacos 引入Maven依赖 增加配置 示例代码 SpringBoot整合Nacos 引入Maven依赖 首先,我们还是要引入 Maven 依赖 <!--注册中心的依赖--> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-discovery-spring-boot-starter</artifactId> <v

  • SpringCloud搭建netflix-eureka微服务集群的过程详解

    1.打开官网稍微学习一下,了解一下spring cloud是个什么东西,大概有哪些组件等 https://spring.io/projects/spring-cloud https://docs.spring.io/spring-cloud-netflix/docs/current/reference/html/ 2.新建项目 打开网址:https://start.spring.io/ 选择需要引入的组件,然后下载下来即可 3.更改项目结构 为了测试的方便,需将项目结构更改为多模块的项目. 步骤

随机推荐