rpc、socket、mq
关于RPC与MQ异同的理解
相同:
1、都利于大型系统的解耦;
2、都提供子系统之间的交互,特别是异构子系统(如java\node等不同开发语言);
不同:
1、RPC侧重功能调用,因此多半是同步的;
备注:也有基于MQ上实现RPC的,这样的话就是异步的,MQ本身,如rabbitMQ也有提供实现RPC的能力;
2、MQ 的使用,一方面是基于性能的考虑,比如服务端不能快速的响应客户端(或客户端也不要求实时响应),需要在队列里缓存;
另外一方面,它更侧重数据的传输,因此方式更加多样化,除了点对点外,还有订阅发布等功能。
备注:之前在政府交换平台项目中,源数据库向目标库同步数据,底层用的就是MQ;
RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用远程另一套机器上的子程序,就像LPC(本地过程调用).
越底层,代码越复杂,灵活性越高,效率越高; 越上层,抽象封装的越好,代码越简单,效率越差. Socket和RPC的区别再次说明了这点.
那么, RPC与Socket通信的区别是什么呢?
RPC是建立在Socket之上的,RPC带来了开发C/S程序的简单可靠的手段,它通过一种叫XDR的数据表达方法描述数据,程序员写伪代码,然后由rpcgen程序翻译为真正的可编译的C语言源代码,再翻译成真正的Client端和Server端程序.
RPC作为普遍的C/S开发方法,开发效率高效,可靠. 但RPC方法的基本原则是--以模块调用的简单性忽略了通讯的具体细节,以便程序员不用关心C/S之间的通讯协议, 集中精力对付实现过程. 这就决定了RPC生成的通讯不可能对每种应用都有恰当的处理方法. 与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽.
RPC是在Socket的基础上实现的, 它比socket需要更多的网络和系统资源. 另外, 在对程序优化时, 程序员虽然可以直接修改由rpcgen产生的令人费解的源程序. 但对于追求程序设计高效率的RPC而言, 获得的简单性则被大大削弱.
Linux编程中进程间的通信是很重要的一部分,下面介绍下这部分的主题框架,让人有一个很清楚的认识:
进程间通信:
1、同一个主机之间的通讯:
1、unix进程间通讯的方式:无名管道、有名管道、信号
2、system V进程间通讯的方式:信号量、消息队列、共享内存
2、不同主机间(网络)进程之间的通信:
1、RPC
2、Socket
rpc、socket、mq的更多相关文章
- TCP/IP、Http、Socket、XMPP-从入门到深入
TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的 ...
- iOS之 HTTP、Socket、TCP的区别(易混
一.HTTP 是一种超文本传输协议,全名hypertext transfer protocol,从字面意思上可以看出该协议用于规定客户端与服务端之间的传输规则, 传输的内容不限于文本(任意类型的数据) ...
- 转--webservice、socket、http 小记(一)
webservice.socket.http 小记(一) http://blog.csdn.net/m_123hj_520/article/details/9370723 2013-07-18 17: ...
- TCP/IP、SOCKET、HTTP之间的联系与区别
主要内容: 1.网络的七层协议 2.TCP/IP.SOCKET.HTTP简介 3.TCP连接.HTTP连接.Socket连接的区别 一.网络的七层协议 网络七层由下往上分别为物理层.数据链路层.网络层 ...
- 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...
- Http、Socket、WebSocket之间联系与区别
WebSocket和Socket区别 可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系. HTTP 协议有一个缺陷:通信只 ...
- 【windows 操作系统】进程间通信(IPC)简述|无名管道和命名管道 消息队列、信号量、共享存储、Socket、Streams等
一.进程间通信简述 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进 ...
- rpc、socket、tcp/udp简要梳理
RPC:远程过程调用(分布式.微服务间的方法调用) HTTP:无状态,每次请求都要发送一个request,服务器响应之后就断掉(http header中的keep-alive指的是tcp) TCP:面 ...
- Web通信协议:OSI、TCP、UDP、Socket、HTTP、HTTPS、TLS、SSL、WebSocket、Stomp
1 各层的位置 1.1 OSI七层模型全景图 OSI是Open System Interconnect的缩写,意为开放式系统互联. 1.2 五层网络协议 在七层的基础上, ...
随机推荐
- [转]NMON服务器监控、指标说明
一.NMON中的各项参数指标: SYS_SUMM:显示当前服务器的总体性能情况 Total System I/OStatistics:Avg tps during an interval:显示采集间隔 ...
- 一篇文看懂Hadoop
我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 本文分为技术篇.产业篇.应用篇.展望篇四部分 技 ...
- bootstrap中如何使input中的小图标获得点击事件
bootstrap中,放入input中的小图标是不能点击的. 在表单中经常遇见密码旁边的眼睛图标点击后,可使密码可见. 要使小图标获得点击事件,可在小图标上覆盖一个跟小图标一样大的透明层,然后给透明层 ...
- mongodb启动时报错ERROR: child process failed, exited with error number 1
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb安装部署步骤(图文详解) Ubuntu16.04下Mongodb安装部署步骤(图文详解) root@zhouls-virtual- ...
- sublime常用插件及配置
以下是我的sublime插件列表: SideBarEnhancements增强版侧边栏 这个插件官方不支持通过package安装了,只能手动了,下载地址https://github.com/S ...
- ionic调用数据接口(post、解决 payload 问题)
$http({method:'POST', url:apiUrl, headers:{'Content-Type': 'application/x-www-form-urlencoded; chars ...
- 安装autoit libary失败问题解决
运行环境:win7-32,python2.7安装遇到的问题:
- linux下串口调试工具/串口终端推荐: picocom(转)
对于picocom, kermit, minicom, picocom 最简单易用,也完全符合我的使用需求. 安装(mint / ubuntu):$ sudo apt-get install pico ...
- 《C++ Primer Plus》10.2 抽象和类 学习笔记
10.2.1 类型是什么基本类型完成了下面的三项工作:* 决定数据对象需要的内存数量:* 决定如何解释内存中的位(long和float在内存中占用的位数相同,但是将它们转换为数值的方法不同):* 决定 ...
- WPS Word查询某些内容的出现次数
1.CTRL+F 打开查找窗体