本文主要记录基于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配置

  1. order服务application.yml
spring:application:name: orderservicecloud:#找对应网段的网卡 不配置内部服务就走外网inetutils:preferred-networks: 192.168.0nacos:discovery:server-addr: 192.168.0.221:8848
  1. user服务application.yml
spring:application:name: userservicecloud:#找对应网段的网卡 不配置内部服务就走外网inetutils:preferred-networks: 192.168.0nacos:discovery:server-addr: 192.168.0.221:8848

1.4 添加启动注解

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

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

1.3 启动服务,查看控制台

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

服务详情图

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

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

2.1 客户端创建RestTemplate Bean

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

2.2 客户端调用代码

    @AutowiredRestTemplate restTemplate;@Autowiredprivate 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第四话 – OpenFeign实现模板化远程通信

鸟欲高飞先振翅,人求上进先读书

SpringCloud第三话 -- 基于Nacos实现注册中心以及远程服务调用相关推荐

  1. 基于Nacos的注册中心与配置中心

    基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务,Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.Nacos主要用于发现.配置和 ...

  2. Nacos系列:基于Nacos的注册中心

    前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...

  3. nacos作注册中心+feign接口调用进行服务提供和服务消费代码示例

    文章目录 依赖 服务提供者 服务消费者 验证 依赖 <parent><groupId>org.springframework.cloud</groupId>< ...

  4. SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心

    点击关注公众号,Java干货及时送达 本次教程旨在为读者提供2020版本的最佳实践方案,使用我认为最容易学习的组件,可能很多组件有很多替代方案,在这里不依依讲述.本次教程使用的组件如下: 注册中心:n ...

  5. SpringCloud用nacos作为注册中心

    docker安装nacos Docker Toolbox安装nacos docker pull nacos/nacos-server 拉取慢的话,自己去换下源,自行百度. docker images ...

  6. 客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心

    客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心(谷粒) 报错内容 ...

  7. SpringCloud系列(一)、服务注册中心Eureka基础

    启动Eureka服务注册中心 1.微服务的注册中心 1.1.注册中心的主要作用 1.2.常见的注册中心 1.3.常见注册中心的异同点 2.Eureka概述 2.1.Eureka的基础知识 2.2.Eu ...

  8. 二、Nacos服务注册中心应用实践

    Nacos服务注册中心 文章目录 Nacos服务注册中心 一.Nacos服务注册中心 1. 注册中心简介 2. 构建Nacos服务 2.1 准备工作 2.2 下载与安装 2.3 初始化配置 3. 服务 ...

  9. nacos 负载策略_Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. SpringCloud实战 ...

最新文章

  1. Android被忽略的tools
  2. Leetcode(20210419-20210425 第二周 每日一题)
  3. mstsc 加密oracle修正,mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法...
  4. Linux查找文件命令find .
  5. .NET中的CTS、CLS和CLR
  6. GridView导出Execl
  7. 倒角距离(Chamfer distance)和earth mover‘s diatance
  8. 与神经网络相比,你对P图一无所知
  9. HDU1811 Rank of Tetris【拓扑排序+并查集】
  10. 左右边界二分查找小总结
  11. python数字图像处理(14):高级滤波
  12. 荣耀手机计算机设置功能,荣耀Play手机如何开启USB调试功能和电脑进行连接
  13. 小米笔记本PRO BIOS忘记密码后重置教程
  14. STREAM内存带宽测试工具介绍及其内部实现
  15. ERROR ITMS-90096: Your binary is not optimized for iPhone 5 错误
  16. 全球及中国菖蒲根提取物行业发展规模及投资方向分析报告2022-2028年
  17. android 夏令时,android – jodatime如何知道夏令时是否开启
  18. UE4人物冲刺瞬移多段跳
  19. VC2008中将CString转换成const char*的一种有效方法
  20. html设置返回首页,html页面添加返回顶部按钮

热门文章

  1. 15号有木有妹纸陪俺去做巧克力
  2. java实现排列组合算法
  3. 达人评测 联想小新 Air 14/15 2021 酷睿版怎么样
  4. CSS元素上下左右居中的几种方式
  5. nginx 反向代理数据库端口
  6. winform隐藏tablcontrol的标签
  7. kubeadm flannel 网络问题
  8. Maven仓库的配置
  9. cometoj——C1027 [欢乐赛]第003话 收服宝可梦吧!
  10. nginx rtmp视频直播