谈谈RPC与套接字以及信号

深入浅出RPC:选取适合自己的RPC 文章摘要:本文主要介绍远程调用(rpc的概念、背景、作用,以及分析主流rpc的优劣,选取适合自己的rpc协议) 阅读详情

Rpc 的 linux 实现是很简洁的,这是有目共睹的。事实上 rpc 机制在 linux 上只是其 n 分之一而已, windows 才是 rpc 大行其道的舞台。可是为何 rpc 没有在 unix/linux 上得到大规模应用呢?这还得从 unix 的设计哲学上寻找答案。 linux 就不必说了,因为它继承了 unix 的优良基因。

     一个 rpc 几乎最少封装了一个事务,具体的数据封装在经过编码的二进制流中, rpc 二进制流中包含了太多的东西以至于它是应用相关的,比如包括过程号,程序号,版本等, rpc 接口定义的不仅仅是一个用户接口还包括了应用程序的具体数据,而且即使把它纯粹看做一个接口,那么这个接口(确切地说应该是一套接口,而不是一个)也过于复杂,因为你不能说出一个确切的接口函数来表示 rpc 接口,当你要列举 rpc 的接口时,你必须说出这次 rpc 是做什么的。当然越复杂就越容易出错。 rpc 可以将复杂的网络交易更快更方便的打包,这也许是它的优势,不像套接字那样,首先你要初始化一个套接字,然后你要自己手动的将数据进行组织,因为套接字并不知道除了传输之外的任何行为性质的东西,而 rpc 却知道约定的不下 20 种交易行为。

     unix 的哲学就是简洁,而且引导程序员用小而简单的接口组合从而实现较大的功能,这样的小接口都是最基本的,而且是正交的,对于这一点,我写都快写烦了。这样的好处在于,系统可以提供一个最小集,所有的元素都可以在这个集合里找到,这个集合里面的接口不包含任何策略性的东西,也就是说系统不限制编程者,当然这提高了编程者的技术门槛,毕竟一切都要自己来,但是这真的给了程序员极大的灵活性。可以实现 rpc 功能的套接字就是这个正交最小集合中的一员,用它来实现一个功能的话可能要自己组织数据结构,要自己发送,实在很麻烦,但是 unix 却认为这样很好;相反如果用 rpc 的话,可能仅仅需要一个函数调用就可以了,但是 unix 却很不推崇这种行为。

     在 windows 中,几乎一切都是用 rpc 实现的,这并不是说 windows 不好,而是 windows 的系统结构决定了它用 rpc 是不错的选择。在 windows 中,到处都是 c/s 模式的应用, windows 本身就是 C/S 模式架构出来的,在双方知根知底的情况下,用 rpc 是一个不错的选择,比用套接字或者其它的 IPC 机制要简洁不少,形式也比较统一,当然也有其弊端,比如不够稳定,客户端和服务器程序双向依赖等等,不过客户端和服务器同在一台机器上,依赖又如何呢?不过 windows 的 rpc 确实有很多不尽人意的地方,比如出了问题会连累很多无辜者,另外不够稳定。虽然 windows 想占 rpc 的便宜,但是天下没有免费的午餐,其对 rpc 维护的消耗加上出了问题后解决问题的繁杂带来的劣势已经掩盖了其带来的恩惠; unix 就不这样,什么也不想,一心坚持自己的哲学 -- 简单!再看看 unix 的信号,设置好信号处理函数后,信号就是一个通知,没有附带任何数据,数据和代码分来,这也是策略和机制分离的体现,数据就是策略,代码就是机制,这也是 unix 的哲学。

 

套接字、信号、管道、消息队列、信号量、共享内存的使用场景 Socket(套接字)通常在以下场景中使用:网络通信:Socket最常见的用途是进行网络通信。通过Socket,可以在不同计算机之间建立连接,并进行数据交换。例如,客户端和服务器之间的通信、对等节点之间的通信等。客户端/服务器应用:在客户端/服务器架构中,Socket被广泛用于实现服务器端和客户端之间的通信。服务器端通过监听指定端口并接受客户端连接请求,而客户端则与服务器建立连接并发送请求。实时数据传输:Socket可用于实现实时数据传输,例如视频流、音频流、实时游戏等。 阅读详情

相关推荐

RpcView64: 64位RPC查看与分析工具

分布式计算是一种计算范式,它允许将一个大的计算任务分解成小的部分,这些部分可以在多台计算机上并行处理。这种计算模式有效地利用了网络中多个计算资源的能力,以实现比单个计算机更快或更可靠地完成任务。RPCView是一款由Tobias Klein开发的工具,旨在提供对Windows RPC系统的详细视图,方便管理员和开发者监控和调试RPC服务。该工具具有以下功能和特点:界面展示:RPCView提供一个直观的图形界面,列出所有当前活动的RPC接口、服务以及与之关联的进程信息。过滤和搜索。

weixin_36369848的博客 1014

聊聊分布式架构04——RPC通信原理

RPC(Remote Procedure Call)是一种远程过程调用协议,用于在分布式系统中进行远程通信,允许一个计算机程序调用另一个地址空间(通常是在不同的机器上)的函数或过程,就像调用本地函数一样。在RPC(Remote Procedure Call,远程过程调用)中使用反射的主要目的是实现透明的远程调用,即使在客户端和服务器之间存在远程分离,也可以像调用本地方法一样调用远程服务。

Elaine2391的博客 3036

基于STM32的Keil5代码自动补全设置操作指南

掌握Keil5代码自动补全设置技巧,提升STM32开发效率。通过合理配置编辑器选项,实现智能提示与语法补全,让嵌入式编程更流畅,尤其适合使用keil5代码自动补全设置的开发者快速上手。

weixin_32287387的博客 762

RPC和socket的区别

转载博客:https://www.cnblogs.com/Leo_wl/p/8418929.html rpc是通过什么实现啊?socket! RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用). 越底层,代码越复杂、灵活性越高、效率越高;越上层,抽...

Zuoerfeng 1万+

C++中为什么要引入引用变量?

C++引用机制的设计哲学在于平衡性能与安全性。它解决了指针的三个痛点:语法噪音、空指针风险和语义模糊,同时保持了指针的效率优势。引用必须绑定有效对象且不可重绑定的特性增强了安全性,其值语义语法更直观。尤其在运算符重载和const引用场景中,引用展现了不可替代的优势。本质上,引用是编译器优化的指针实现,体现了C++"零开销抽象"的核心思想——既保持底层性能,又提供高级抽象。这种设计允许开发者根据场景灵活选择指针或引用,反映了C++多范式共存的语言智慧。

教学 & 技术专栏 175

别再只改config了!YOLO/RT-DETR多通道输入实战:数据集结构、多卡训练与参数优先级避坑指南

本文详细解析了YOLO/RT-DETR模型在多通道输入(如8通道多光谱图像)中的实战应用,涵盖数据集结构优化、数据加载器改造、模型参数调优及多卡训练配置。针对常见的多通道输入报错问题,提供了系统的解决方案和性能优化技巧,帮助开发者高效实现非标准数据格式的适配与训练。

weixin_30955617的博客 397

深入理解 RPC 交互流程

文节我们讲解 RPC 的消息交互流程,目的是搞清楚一个简单的 RPC 方法调用背后究竟发生了怎样复杂曲折的故事,以看透 RPC 的本质。上图是信息系统交互模型宏观示意图,...

codehole_的博客 649

Imatest-Star模块(西门子星图)

星图分析指南:基于ISO12233标准的MTF测试方法,通过放射状射线和正弦灰度变化评估相机SFR性能。

weixin_64706696的博客 1565

SPI NOR Flash从入门到实战:GD25Q80E时序解析与STM32 QSPI开发

SPI(Serial Peripheral Interface)作为嵌入式系统中最基础的同步串行通信协议,负责在MCU与外部存储芯片之间桥接数据通路。NOR Flash则因其支持随机读取、掉电数据保持等特性,成为固件存储、参数保存等场景的主流选择。理解其命令时序、状态寄存器轮询机制以及页编程边界约束,是稳定驱动SPI NOR Flash的关键。在实际工程中,从标准SPI读写到DMA传输,再到QSPI并行访问,每一步都需要与具体芯片的时序参数对齐。GD25Q80E作为一颗典型的8Mbit SPI NOR Fl

weixin_33881140的博客 503

Windows服务器XMRig挖矿病毒深度清除实战指南

XMRig是一种广泛用于Monero(XMR)加密货币挖矿的开源工具,其在Windows环境中的持久化机制已远超传统木马范畴,融合WMI事件订阅、服务伪装、PowerShell无文件执行与注册表隐写等多重反检测技术。理解其基于行为而非特征的生存逻辑,是实现有效检测与根除的前提。该技术具备强隐蔽性、高自愈性与网络通信合法化特征,常见于RDP弱口令爆破、SMB共享泄露及PowerShell远程执行等非漏洞类入侵场景。本文聚焦Windows原生命令与Sysinternals工具链,提供覆盖进程定位、WMI清理、服

weixin_30535843的博客 730

撸毛笔记-朴朴超市 v1.01

朴朴超市 v1.01脚本地址:自动签到和组队赚朴分, 朴分可以抵扣50%的金额组队瓜分需要4人成团, 每个号每天只能开团和入队各一次每天跑一两次即可使用扫码或自己想办法捉refreshToken扫码获取token: (先微信进入朴朴超市小程序并登录注册过账号再扫码)把获取的refreshToken和备注(非必须)填到文件pupuCookie.txt里(第一次运行会自动创建), 多账号换行或&或@隔开。

xiaoshun007的专栏 1805

谈谈套接字

650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://img1.51cto.com/attachment/201102/162414771.jpg" /> 650) this.width=6

李晨光原创IT博客 427

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1366

【RPC】—RPC介绍一篇就够了&RPC的选择

RPC远程调用的概念最早可以追溯到20世纪80年代,当时Sun Microsystems公司提出了一种名为ONC RPC(Open Network Computing Remote Procedure Call)的协议,用于在NFS(Network File System)中进行远程过程调用。此后,RPC成为了分布式系统中的一种重要通信方式,被广泛应用于各种分布式系统和应用中

一棵灬大树的博客 7487

23、OpenMP常见用例与标准循环级示例详解

本文详细介绍了OpenMP的三种典型用例:循环级OpenMP、高级OpenMP和MPI+OpenMP,适用于不同层次的并行需求。重点讲解了循环级OpenMP在向量加法、流三元组和模板计算中的应用示例,并探讨了首次触摸优化、线程绑定、NUMA架构影响等关键性能优化策略。通过实际代码演示和性能分析,帮助开发者快速掌握OpenMP的基础并行化方法,并为后续高性能优化提供指导。

fanta的博客 86

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RPC和RESTful的区别

RPC和REST在思想上差异的核心是抽象的目标不一样,即面向过程的编程思想与面向资源的编程思想两者之间的区别。

zhanyd的博客 5207

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RPC与REST

就只有 RPC,开发者是围绕着“远程方法”去设计两个系统交互的,这样做的坏处不仅是“如何在不同系统间表示一个方法”、“如何获得接口能够提供的方法清单”都成了需要专门协议去解决的问题,更在于服务的每个方法都是独立的,服务者必须熟悉每个方法才能使用,而REST抽象为了几类。而远程服务又不仅仅是为了分布式系统服务的,在网络时代,浏览器、移动设备、桌面应用和服务端的程序,普遍都有与其他设备交互的需求,所以今天很难找到没有开发过远程服务的人,但是没有正确理解远程服务的coder比比皆是。

凄戚的博客 1391

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RPC 原理与实现

文章目录1. RPC 简介1.1 什么是RPCReference: LPC & IPC (本地过程调用)1.2 为什么要用RPC1.2.1 系统架构的演进1.2.2 Web 服务的技术结构1.2.2 SOAP ( Simple Object Access Protocol)1.2.2 REST(REpresentational State Transfort)SOAP & REST......

谈谈1974 5416

JAVA网络编程——socket套接字的介绍上(详细)

大家好!今天笔者分享一篇关于Socket 套接字的博客,希望能为正在学习网络编程的读者提供一些帮助。梳理网络通信的基础概念本文还将顺带总结一些与 Socket 密切相关的基础知识,包括:IP 地址、端口号、网络协议、五元组、协议分层模型的作用与内容、TCP/UDP 区别、Socket API 的使用方式,以及如何通过代码模拟客户端/服务器之间的通信过程。理解客户端与服务器的数据交互。

cjejwe的博客 6318

python测试rpc接口_RPC接口测试方法及系统与流程

本发明涉及RPC(Remote Procedure Call Protocol,远程过程调用协议,通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议)接口测试领域,具体涉及一种RPC接口测试方法及系统。背景技术:接口测试(对系统组件间接口进行测试)主要用于检测外部系统与系统(包括各个子系统)之间的交互点,接口测试重点为检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系...

weixin_39553776的博客 1987

深入浅出RPC原理

远程过程调用RPC,就是客户端基于某种传输协议通过网络向服务提供端请求服务处理,然后获取返回数据(对于ONE WAY模式则不返还响应结果);而这种调用对于客户端而言,和调用本地服务一样方便,开发人员不需要了解具体底层网络传输协议。简单讲,就是本地调用的逻辑处理的过程放在的远程的机器上,而不是本地服务代理来处理。目前,Java界的RPC中间件百家争鸣,国内开源的就有阿里的Dubbo(当当二次开发的DubboX),新浪Motan;国外跨语言的有Facebook的Thrift, Google的gRpc等。

攻城狮不是猫 1378
上一篇: 聊聊操作系统设计
下一篇: 再谈RPC--长长的手,抓住了离去的你
linuxcode_turing
博客等级 码龄17年 0粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值