首页 > 其他分享 >微服务Spring Cloud17_服务调用方式2

微服务Spring Cloud17_服务调用方式2

时间:2024-04-16 17:48:04浏览次数:30  
标签:调用 服务 Spring RestTemplate Cloud17 Http 客户端

一、RPC和HTTP

 无论是微服务还是SOA,都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?

 常见的远程调用方式有以下2种:

  • RPC:Remote Produce Call远程过程调用,RPC基于Socket,工作在会话层。自定义数据格式,速度快,效 率高。早期的webservice,现在热门的dubbo,都是RPC的典型代表
  • Http:http其实是一种网络传输协议,基于TCP,工作在应用层,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。

   现在热门的Rest风格,就可以通过http协议来实现。

 RPC和Http区别:RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。

 如果你们公司全部采用Java技术栈,那么使用Dubbo作为微服务架构是一个不错的选择。

 相反,如果公司的技术栈多样化,而且你更青睐Spring家族,那么Spring Cloud搭建微服务是不二之选。在我们的项目中,会选择Spring Cloud套件,因此会使用Http方式来实现服务间调用。 

二、Http客户端工具

 既然微服务选择了Http,那么我们就需要考虑自己来实现对请求和响应的处理。不过开源世界已经有很多的http客户 端工具,能够帮助我们做这些事情,例如:

  • HttpClient
  • OKHttp
  • URLConnection

 不过这些不同的客户端,API各不相同。而Spring也有对http的客户端进行封装,提供了工具类叫RestTemplate。

三、Spring的RestTemplate

 Spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,并且实现了对象与json的序列化和 反序列化,非常方便。RestTemplate并没有限定Http的客户端类型,而是进行了抽象,目前常用的3种都有支持:

  • HttpClient
  • OkHttp
  • JDK原生的URLConnection(默认的)  

 导入 资料\http-demo 工程;

 

 已经在导入的项目中的 HttpDemoApplication 注册一个 RestTemplate 对象,可以在启动类位置注册:

 

 启动springboot项目,在项目中的测试类中直接 @Autowired 注入: 

 

 通过RestTemplate的getForObject()方法,传递url地址及实体类的字节码,RestTemplate会自动发起请求,接 收响应,并且帮我们对响应结果进行反序列化。

 了解完Http客户端工具,接下来就可以正式学习微服务了。 

四、小结

 

标签:调用,服务,Spring,RestTemplate,Cloud17,Http,客户端
From: https://www.cnblogs.com/ajing2018/p/18138799

相关文章

  • 使用vbs脚本来监控windows服务器上的应用程序(不存在就启动)
    <p>这个vbs代码主要实现的功能就是运行该程序,就会在进程中出现一个wscript.exe它会每隔10s扫面一次进程中是否存在notepad.exe这个程序,不存在就启动。这个启动程序可能跟进程名不一样,好比tomcat应用,启动的是startup.bat,后台进程名为java.exe,这样就需要......
  • SpringCloud(七.3)ES(elasticsearch)-- RestClient操作
    RestClient是ES官方提供的各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html官方文档使用教程    使用RestClient操作索引库使用案例:  hote......
  • 微服务Spring Cloud17-
    一、概述随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此也不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的ServiceMesh。我们到底是该乘坐微服务的船只驶......
  • 80、SpringBoot3 SpringSecurity Mybatisplus最新版 整合 实现登入权限控制
    1、导入pom依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apac......
  • SpringBoot+MybatisPlus 增删改查学习第三章 (C#转JAVA)
    packagecom.example.demo;importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.example.demo.entity.Person;importcom.example.demo.mapper.PersonMapper;importcom.example.demo.service.PersonService;importorg.junit.jupiter.api.Test;i......
  • linux引导和服务
    kernel实现进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等功能1引导过程1.1开机自检服务器主机开机以后,将根据主板BIOS中的设置对CPU(CentralProcessingUnit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权......
  • Spring开发:动态代理的艺术与实践
    本文分享自华为云社区《Spring高手之路17——动态代理的艺术与实践》,作者:砖业洋__。1.背景动态代理是一种强大的设计模式,它允许开发者在运行时创建代理对象,用于拦截对真实对象的方法调用。这种技术在实现面向切面编程(AOP)、事务管理、权限控制等功能时特别有用,因为它可以在不修......
  • 面试官:一个 SpringBoot 项目能处理多少请求?(小心有坑)
    面试官:一个SpringBoot项目能处理多少请求?(小心有坑) 你好呀,我是歪歪。这篇文章带大家盘一个读者遇到的面试题哈。根据读者转述,面试官的原问题就是:一个SpringBoot项目能同时处理多少请求?不知道你听到这个问题之后的第一反应是什么。我大概知道他要问的是哪个方向,但......
  • windows使用/服务(15)windows Server【开机启动和任务计划程序】实现服务器重启后项目自
    版权声明:本文为博客园博主「yclizq」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:windowsServer【开机启动和任务计划程序】实现服务器重启后项目自启动1.说明有些时候我们希望计算机开机后就启动一些服务或应用程序。2.开机启动使用Win+R......
  • 服务与引导
    服务与引导引导过程开机自检bios1.开机检测硬件是否有故障。2.指引硬件去哪里寻找操作系统。mbr(硬盘)1.开机引导程序。2.分区表。grub根据引导加载器(bootloader)引导硬件去找到内核。加载内核加载内核并放在内存中启动程序在Centos7中第一次启动的程序是systemd在Cen......