http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议 进行传输。但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统 一化的操作。第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑

rpc是一种概念,http也是rpc实现的一种方式。论复杂度,dubbo/hessian用起来是超级简单的。最近用dubbo和hessian比较多,http的几乎都被废弃了。

至于为什么用,其实很简单,业务场景不一样。我最早的单位所有的代码都在一个工程里,一次要发布几百m的代码。这种架构是非常有利于小程序的。但是我们为什么要应用rpc层呢,一个功能,一套代码下来不就解决了么?我觉得有几个好处:

1 灵活部署 2 解耦 至于为什么,当你用到的时候,你会体会。

系统做大了,肯定是需要做微服务的。 现在我们做电商就是这样,单独有一个订单系统,支付系统,商品系统,用户系统。都是分开部署,单独上线的。 但我们交互是用HTTP接口来交互的,我想转用RPC,但问题是我现在还没发现为什么需要用RPC,我还没能理解它的作用和意义。

用http交互其实就已经属于rpc了。

RPC:远程过程调用。RPC的核心并不在于使用什么协议。RPC的目的是让你在本地调用远程的方法,而对你来说这个调用是透明的,你并不知道这个调用的方法是部署哪里。通过RPC能解耦服务,这才是使用RPC的真正目的。RPC的原理主要用到了动态代理模式,至于http协议,只是传输协议而已。简单的实现可以参考spring remoting,复杂的实现可以参考dubbo。

RPC是一个软件结构概念,是构建分布式应用的理论基础。就好比为啥你家可以用到发电厂发出来的电?是因为电是可以传输的。至于用铜线还是用铁丝还是其他 种类的导线,也就是用http还是用其他协议的问题了。这个要看什么场景,对性能要求怎么样。比如在java中的最基本的就是RMI技术,它是java原 生的应用层分布式技术。我们可以肯定的是在传输性能方面,RMI的性能是优于HTTP的。那为啥很少用到这个技术?那是因为用这个有很多局限性,首先它要 保证传输的两端都要要用java实现,且两边需要有相同的对象类型和代理接口,不需要容器,但是加大了编程的难度,在应用内部的各个子系统之间还是会看到 他的身影,比如EJB就是基于rmi技术的。这就与目前的bs架构的软件大相径庭。用http必须要服务端位于http容器里面,这样减少了网络传输方面 的开发,只需要关注业务开发即可。所以在架构一个软件的时候,不能一定根据需求选定技术。
总结:RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

https://blog.csdn.net/qq_39380192/article/details/89315940?

http接口和RPC接口区别相关推荐

  1. 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念

    http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...

  2. http接口、api接口、RPC接口、RMI、webservice、Restful等概念

    在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当         http接口:基于HTTP协议的开发接口.这个并不能排除没有使用其他的协议. api接口:API(Appli ...

  3. 抽象类和接口的联系与区别

    抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...

  4. 设计RPC接口时,你有考虑过这些吗?

    RPC 框架的讨论一直是各个技术交流群中的热点话题,阿里的 dubbo,新浪微博的 motan,谷歌的 grpc,以及不久前蚂蚁金服开源的 sofa,都是比较出名的 RPC 框架.RPC 框架,或者一 ...

  5. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  6. java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答

    基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...

  7. sata接口_接口不同有啥区别?M.2和SATA接口SSD该选哪种?

    随着存储技术的快速发展,如今固态硬盘已是很多人电脑里不可或缺的一款硬件.在这场存储的革命中,为了实现更快的传输速度满足不同的需求,硬盘的接口经历了各种进化与革新,也便有了我们所熟之的 SATA.M.2 ...

  8. 面试题:接口和抽象类的区别

    区别一,两者表达的概念不一样.抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于"是"的关系:而接口是定义行为规范,因此对于实现接口的子类来说,相对于接 ...

  9. thrift RPC接口请求超时

    某次client调用服务端thrift  RPC接口超时导致连接断开,但是server说自己返回数据了,然后client用tcpdump抓包发现没抓到server返回的数据,没抓到表明client没收 ...

最新文章

  1. 单细胞RNA降维之UMAP
  2. spring bean scope作用域及多线程安全问题场景分析
  3. 全志代码中的bug之2
  4. 【数据结构与算法】之深入解析“合并两个有序链表”的求解思路与算法示例
  5. slot多作用域 vue_vue 深度长文之slot 篇
  6. Array deduplication
  7. 运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误
  8. DVWA-CSRF-low级别
  9. 38.django的路由系统
  10. 2016-05-06
  11. 三星手机的计算机功能在哪里,【分享】三星手机几个投屏电脑的方法
  12. 波士顿房价预测python决策树_模型评价与验证-波士顿房价预测.ipynb
  13. LeCo-82.删除排序链表中的重复元素(二)
  14. CSDN黑科技----简单暴力
  15. 财富自由的声音:蚂蚁上市前,取消了周报
  16. Scrapy中的item和pipline
  17. 《Java SE实战指南》09-01:访问级别修饰符概述
  18. android adb:电池与电量
  19. InfoSphere Guardium应用程序用户翻译
  20. 转:德鲁克: 每个人都应成为自己的“首席执行官”

热门文章

  1. 时序算法交叉验证法python实现
  2. 一个「学渣」的从零Web前端自学之路,附学习资源分享
  3. oracle的check约束
  4. 什么是WebGL,它有什么优点
  5. Veeam+XSKY 推出基于 Object Lock 的防勒索病毒联合方案
  6. 价值240万的photoshop中文教程
  7. 5分钟学会使用剪映剪辑视频并将视频保存-新手教程
  8. 郭富城唱不完1990-2006年62张专辑
  9. 细数T-BOX中TI的明星产品之 线性稳压器 | 第五节TPS7B7701-Q1:为车载应用保驾护航
  10. 单片机和微型计算机的区别,单片机和电脑的区别,很多人不知道