http接口和RPC接口区别
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接口区别相关推荐
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
在这之前一定要好好理解一下接口的含义,我觉得在这一类中接口理解成规则很恰当 http接口:基于HTTP协议的开发接口.这个并不能排除没有使用其他的协议. api接口:API(Appli ...
- 抽象类和接口的联系与区别
抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
- 设计RPC接口时,你有考虑过这些吗?
RPC 框架的讨论一直是各个技术交流群中的热点话题,阿里的 dubbo,新浪微博的 motan,谷歌的 grpc,以及不久前蚂蚁金服开源的 sofa,都是比较出名的 RPC 框架.RPC 框架,或者一 ...
- Java中实现接口与继承的区别
** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...
- java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答
基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...
- sata接口_接口不同有啥区别?M.2和SATA接口SSD该选哪种?
随着存储技术的快速发展,如今固态硬盘已是很多人电脑里不可或缺的一款硬件.在这场存储的革命中,为了实现更快的传输速度满足不同的需求,硬盘的接口经历了各种进化与革新,也便有了我们所熟之的 SATA.M.2 ...
- 面试题:接口和抽象类的区别
区别一,两者表达的概念不一样.抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于"是"的关系:而接口是定义行为规范,因此对于实现接口的子类来说,相对于接 ...
- thrift RPC接口请求超时
某次client调用服务端thrift RPC接口超时导致连接断开,但是server说自己返回数据了,然后client用tcpdump抓包发现没抓到server返回的数据,没抓到表明client没收 ...
最新文章
- 单细胞RNA降维之UMAP
- spring bean scope作用域及多线程安全问题场景分析
- 全志代码中的bug之2
- 【数据结构与算法】之深入解析“合并两个有序链表”的求解思路与算法示例
- slot多作用域 vue_vue 深度长文之slot 篇
- Array deduplication
- 运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误
- DVWA-CSRF-low级别
- 38.django的路由系统
- 2016-05-06
- 三星手机的计算机功能在哪里,【分享】三星手机几个投屏电脑的方法
- 波士顿房价预测python决策树_模型评价与验证-波士顿房价预测.ipynb
- LeCo-82.删除排序链表中的重复元素(二)
- CSDN黑科技----简单暴力
- 财富自由的声音:蚂蚁上市前,取消了周报
- Scrapy中的item和pipline
- 《Java SE实战指南》09-01:访问级别修饰符概述
- android adb:电池与电量
- InfoSphere Guardium应用程序用户翻译
- 转:德鲁克: 每个人都应成为自己的“首席执行官”