SpringCloud第三话 -- 基于Nacos实现注册中心以及远程服务调用
本文主要记录基于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: orderservicecloud:#找对应网段的网卡 不配置内部服务就走外网inetutils:preferred-networks: 192.168.0nacos:discovery:server-addr: 192.168.0.221:8848
- 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实现注册中心以及远程服务调用相关推荐
- 基于Nacos的注册中心与配置中心
基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务,Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.Nacos主要用于发现.配置和 ...
- Nacos系列:基于Nacos的注册中心
前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...
- nacos作注册中心+feign接口调用进行服务提供和服务消费代码示例
文章目录 依赖 服务提供者 服务消费者 验证 依赖 <parent><groupId>org.springframework.cloud</groupId>< ...
- SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心
点击关注公众号,Java干货及时送达 本次教程旨在为读者提供2020版本的最佳实践方案,使用我认为最容易学习的组件,可能很多组件有很多替代方案,在这里不依依讲述.本次教程使用的组件如下: 注册中心:n ...
- SpringCloud用nacos作为注册中心
docker安装nacos Docker Toolbox安装nacos docker pull nacos/nacos-server 拉取慢的话,自己去换下源,自行百度. docker images ...
- 客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心
客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心(谷粒) 报错内容 ...
- SpringCloud系列(一)、服务注册中心Eureka基础
启动Eureka服务注册中心 1.微服务的注册中心 1.1.注册中心的主要作用 1.2.常见的注册中心 1.3.常见注册中心的异同点 2.Eureka概述 2.1.Eureka的基础知识 2.2.Eu ...
- 二、Nacos服务注册中心应用实践
Nacos服务注册中心 文章目录 Nacos服务注册中心 一.Nacos服务注册中心 1. 注册中心简介 2. 构建Nacos服务 2.1 准备工作 2.2 下载与安装 2.3 初始化配置 3. 服务 ...
- nacos 负载策略_Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. SpringCloud实战 ...
最新文章
- Android被忽略的tools
- Leetcode(20210419-20210425 第二周 每日一题)
- mstsc 加密oracle修正,mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法...
- Linux查找文件命令find .
- .NET中的CTS、CLS和CLR
- GridView导出Execl
- 倒角距离(Chamfer distance)和earth mover‘s diatance
- 与神经网络相比,你对P图一无所知
- HDU1811 Rank of Tetris【拓扑排序+并查集】
- 左右边界二分查找小总结
- python数字图像处理(14):高级滤波
- 荣耀手机计算机设置功能,荣耀Play手机如何开启USB调试功能和电脑进行连接
- 小米笔记本PRO BIOS忘记密码后重置教程
- STREAM内存带宽测试工具介绍及其内部实现
- ERROR ITMS-90096: Your binary is not optimized for iPhone 5 错误
- 全球及中国菖蒲根提取物行业发展规模及投资方向分析报告2022-2028年
- android 夏令时,android – jodatime如何知道夏令时是否开启
- UE4人物冲刺瞬移多段跳
- VC2008中将CString转换成const char*的一种有效方法
- html设置返回首页,html页面添加返回顶部按钮