服务接口,选择rpc还是http?
从通信内容/功能上看
http应用于web环境,rpc应用于分布式调度
从功能上看没有太大区别,很多情况下rpc与消息中间件结合通信实现分布式调度
从用法上看
两者都是c/s结构,无太大区别
从实现上看
类型 底层协议
从性能上看
1、听说rpc是长链接,http是三次握手。
长链接虽然,可以减少tcp开销,相对的它会导入新的缺点,是否会对连接数数量有限制呢?
2、假如rpc的性能比http高,无非就是socket多连接了三次。如果http结合非阻塞io服务器(例如tornado),这三次连接开销真没啥消耗。
当然网络也会有一点消耗. 非阻塞io服务器可以将rpc与http的性能差距拉平
从链接开销上,比较性能问题,本就是错误,两者是在解决不同问题,所有没有必要在这个问题上纠结。请继续看下面
从概念上看
rpc远程调用
http超文本传输协议
该如何选择呢?
1、思考这个问题,应该用最简单的方式,相信协议设计者,会选择最好方式来解决它面临的问题(毕竟协议代表着公认),我们只用关注它解决什么问题。
rpc解决什么问题呢?远程调用。“调用”属于程序内部之间。调用总不可能只传简单参数,会涉及到对象序列化,
这个对象在开发是代码总不会用两套吧,server与client很可能是在一起的属于一个组件.
2、连接数不该是”调用”考虑的事。在创建一个全局连接后,不会再频繁创建连接. 如果rpc作为服务,频繁连接的场景不适合它
总结
1、c与s关系紧密程度
rpc远程调用,属于程序内部之间,cs关系密切。
http,适合不同组件, cs关系独立。
2、连接数
rpc叫调用,频繁连接的场景不适合它
http的应用的web环境,本就是频繁连接的场景
服务接口,选择rpc还是http?的更多相关文章
- .Net 与 Java 的服务接口相互调用
本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说 ...
- 面试都在问的微服务、服务治理、RPC、下一代微服务框架... 一文带你彻底搞懂!
文章每周持续更新,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 单体式应用程序 与微服务相对的另一个概念是传统的单体式应用程序( ...
- 面试都在问的「微服务」「RPC」「服务治理」「下一代微服务」一文带你彻底搞懂!
❝ 文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 单体式应用程序 与微服务相对的另一个概念是传统的「单体式应用程 ...
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- Web Service 一些对外公开的网络服务接口
商业和贸易: 1.股票行情数据 WEB 服务(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebSe ...
- ASP.NET交互Rest服务接口(Jquery的Get与Post方式)
ASP.NET交互Rest服务接口(Jquery的Get与Post方式) 本文将通过一个简单的实例,介绍如何创建一个Rest服务接口,以及通过JQUERY去对它进行调用;主要采取两种方式分别为Get跟 ...
- QQ18年,解密8亿月活的QQ后台服务接口隔离技术
作者:shane,腾讯后台开发高级工程师 QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗 ...
- Openfire开发广播服务接口,支持离线广播消息
Openfire开发广播服务接口,支持离线广播消息 概要 最近公司要求做一个web端向所有移动端发送公告,所以考虑到即时性就用openfire做服务.不过为了减轻web端的工作量,我们开发一个简单的插 ...
- 前端利用百度开发文档给的web服务接口实现对某个区域周边配套的检索
最近项目需要实现地图功能,以便于实现对房源周边配套设施的检索.内容如下 其实百度官方有对应的api,但是对于一个网站来说这样的样式难免有些难看 这样的结果显然不能满足当下的需求,所以我决定利用官方给的 ...
- WebApiClient百度地图服务接口实践
1. 文章目的 随着WebApiClient的不断完善,越来越多开发者选择WebApiClient替换原生的HttpClient,然而在应用到实际项目中多多少少会遇到一些项目结合上的疑问和困难,本文将 ...
随机推荐
- typescript - 6.泛型
泛型类 class MinClas<T>{ public list:T[]=[]; add(value:T):void{ this.list.push(value); } min():T{ ...
- django -xadmin 详解 功能实现及orm 的复习
django 在xadmin中自定义内容的变量及优化汇总 一: 首先下载xadmin pip install git+git://github.com/sshwsfc/xadmin.git@djang ...
- UBI mkfs.ubifs 参数记录
NAND 硬件结构如下: 脚本如下 sudo mkfs.ubifs -q -r rootfs_iproute -m 4096 -e 248KiB -c 3840 -o ubifs.img -F ech ...
- 元数据Meta
元数据,指的是“除了字段外的所有内容”,例如排序方式.数据库表名.人类可读的单数或者复数名等等.所有的这些都是非必须的,甚至元数据本身对模型也是非必须的. 在模型中增加元数据,需要在模型类中添加一个子 ...
- LeetCode_415. Add Strings
415. Add Strings Easy Given two non-negative integers num1 and num2 represented as string, return th ...
- JAVA Asponse.Word Office 操作神器,借助 word 模板生成 word 文档,并转化为 pdf,png 等多种格式的文件
一,由于该 jar 包不是免费的, maven 仓库一般不会有,需要我们去官网下载并安装到本地 maven 仓库 1,用地址 https://www-evget-com/product/564 ...
- [LeetCode] 229. Majority Element II 多数元素 II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
- [LeetCode] 361. Bomb Enemy 炸敌人
Given a 2D grid, each cell is either a wall 'W', an enemy 'E' or empty '0' (the number zero), return ...
- test String.split
test "map.mergd" do s = :crypto.strong_rand_bytes() # <<, , , , , >> # = >& ...
- 【Python开发】【编程开发】各种系统的清屏操作命令
mac os x terminal清屏快捷键 cammand+k linux系统清屏快捷键 ctrl+l linux系统命令行清屏命令 clear windows 命令行清屏命令 cls Matlab ...