县局长是什么级别| 口坐念什么| 射精什么意思| 眼睛有黑影是什么原因| s是什么车| 胎儿永久性右脐静脉是什么意思| 乳腺结节是什么| buffalo是什么牌子| 杨新鸣包贝尔什么关系| 一什么不什么四字成语| 心肌供血不足用什么药| 肝郁化火是什么意思| 一什么水| 延年是什么意思| 什么除湿气效果最好| 经常流鼻血是什么原因引起的| 捞女什么意思| 水痘不能吃什么| 心机是什么意思| 人生得意须尽欢是什么意思| 什么叫屈光不正| 廿是什么意思| 大便化验隐血阳性什么意思| 四月十九是什么星座| 经期肚子疼是什么原因| 阴虱用什么药最有效| 补钾吃什么食物| 啮齿类动物什么意思| 肛塞是什么| 面瘫吃什么药| 胃炎胃溃疡吃什么药| 为什么万恶淫为首| 代表友谊的花是什么花| 什么情况吃通宣理肺丸| 尿路感染吃什么消炎药| 自投罗网是什么意思| 桜什么意思| 虎是什么意思| 魔芋粉是什么做的| 盐酸舍曲林片治疗什么程度的抑郁| 盆腔钙化灶是什么意思| 脉冲是什么意思| 十一月六号是什么星座| 阁五行属什么| iphone的i是什么意思| 撕票是什么意思| 盥洗室什么意思| 豆角长什么样| 脑供血不足吃什么| 鱼子酱是什么东西| 什么叫肾阳虚肾阴虚| 眼睛充血用什么眼药水最好| 1835年属什么生肖| 女m是什么意思| 咳嗽咳出血是什么原因| 自己是什么意思| 夸瓜读什么| 什么是血浆| 尿道感染应该吃什么药| 什么生辉| 什么好像什么一样| 全身而退是什么意思| 吃什么补血效果最好| 重塑是什么意思| 一个骨一个宽是什么字| 清鱼是什么鱼| 什么照镜子里外不是人| 血管检查什么方法最好| 面筋是什么做的| 日常是什么意思| 碳水化合物是什么食物| 喉咙长息肉有什么症状| 音容笑貌的意思是什么| 肝区疼痛吃什么药| 牛和什么生肖相冲| 腰椎间盘突出吃什么药| 波罗蜜多什么意思| 荞麦长什么样子图片| 搭桥是什么意思| 灵芝有什么作用与功效| 池塘边的榕树上是什么歌| 冠脉cta是什么检查| 额头上长痘是因为什么| 罗汉果有什么功效| 早上醒来手麻是什么原因| 比特币是什么意思| 申五行属什么| 口蘑是什么| 孕妇待产需要准备什么| crab是什么意思| 晚上喝柠檬水有什么好处| u熊是什么意思| 女性肾虚吃什么药| 积阴德是什么意思| 菠萝是什么季节的水果| 孽债是什么意思| 什么是钙化点| 梦见买鸡蛋是什么意思周公解梦| oppo最新款是什么型号| 智商什么意思| 贫血是什么原因引起的| 今年流行什么颜色头发| 什么的羊群| 鸟语花香是什么生肖| 维生素b族为什么不能晚上吃| 局级是什么级别| 背动态心电图要注意什么| 结扎对男人有什么伤害| 前额头疼是什么原因引起的| 地铁什么时候停运| ea是什么单位| 无非是什么意思| 7月20日什么星座| 黑鱼不能和什么一起吃| 不见棺材不落泪是什么生肖| 出现血精吃什么药| 农历五月二十是什么星座| 鱼喜欢什么颜色| 好不热闹是什么意思| 入睡困难吃什么中成药| notebook什么意思| 圣水是什么| 金木水火土各代表什么| 黑客帝国4什么时候上映| 总胆固醇偏低是什么意思| 流产是什么症状| 吃火龙果有什么好处和坏处| 膝盖小腿酸软无力是什么原因| 违和感是什么意思| 属鸡的幸运色是什么颜色| wonderflower是什么牌子| lala是什么意思| 擦伤用什么药| 国药准字号是什么意思| 突然流鼻血是什么征兆| 二尖瓣钙化是什么意思| 腰椎生理曲度变直是什么意思| 梦见自己化妆是什么意思| 床单什么颜色有助于睡眠| 蛋白低是什么原因| 伪善是什么意思| 绿色痰是什么原因| 为什么一直打哈欠| 负离子有什么作用| 女生喝什么茶对身体好| 红细胞分布宽度偏低是什么原因| 猪肉什么馅的饺子好吃| thenorthface是什么牌子| 属猴的守护神是什么菩萨| 异性是什么意思| 脾胃伏火是什么意思| 插科打诨是什么意思| 虾滑是什么| 榴莲皮可以做什么| 盛夏什么意思| 脖子淋巴结肿大是什么原因| 乳果糖什么时候吃效果更佳| 蹀愫女鞋什么档次| 老是放屁什么原因| 检查幽门螺旋杆菌挂什么科| 卵巢是什么| 太阳是什么| 丁克是什么意思| 9k金是什么意思| 柏读什么| 喉咙有痰吐出来有血是什么原因| mj什么意思| 付诸东流是什么意思| 过敏是什么样的图片| 什么东西去火| 毛囊炎用什么药| 皇太极叫什么名字| 水印相机是什么意思| 肾脏挂什么科| 爱豆是什么意思| 安眠药有什么副作用| 鸭屎香为什么叫鸭屎香| 筝是什么意思| st是什么意思| 毛周角化症用什么药膏| 流产可以吃什么水果| 盆腔炎什么症状| 鱼水之欢是什么意思| 安是什么生肖| 临官是什么意思| 是什么病| 沙棘有什么作用| 宫颈液基细胞学检查是什么| 柱状上皮外移什么意思| 梦见大胖小子是什么意思| 经期适合吃什么| 梅毒什么症状| 平行宇宙是什么意思| 梦见殡仪馆是什么意思| 休是什么意思| 牛牛是什么意思| 夸父是一个什么样的人| 大便很粗是什么原因| 氯化钠是什么盐| 拜阿司匹林什么时间吃最好| 洋葱吃了有什么好处| 潜血阴性是什么意思| 孕期脸上长痘痘是什么原因| 看乳房挂什么科| 女人吃什么补充胶原蛋白| 男人喜欢什么礼物| 鱼肝油又叫什么名字| 孕妇为什么不能参加婚礼| 灵芝泡水喝有什么功效| 不加大念什么| 貂蝉原名叫什么| 床头朝什么方向是正确的| 手指麻木是什么原因引起的| 抽烟是什么感觉| 钙不能和什么一起吃| 什么是教育| 肠胃炎发烧吃什么药| hg是什么单位| 大乔叫什么| 洛神花是什么| 上火牙龈肿痛吃什么药| 傻狍子为什么叫傻狍子| 射手座与什么星座最配| 20岁长白头发是什么原因造成的| mh是什么意思| 上焦湿热吃什么中成药| 发烧拉稀是什么原因| 宫腔内偏强回声是什么意思| 大血小板比率偏高是什么原因| 胎盘前壁是什么意思| 过敏性咳嗽用什么药效果好| 肝多发钙化灶什么意思| 61年属什么生肖| 荷叶是什么的什么| 孕妇梦见老鼠是什么意思| 起居是什么意思| 心悸是什么意思| 98属什么| 三伏天是什么| 球蛋白低是什么原因| 刷牙时牙龈出血是什么原因| 钼靶检查是什么| 脸部肿胀是什么原因| 公费医疗什么意思| 宝宝尿少是什么原因| mic是什么意思| fast什么意思| 女人吃生蚝有什么好处| 皮肤痒是什么病的前兆| 闷骚男是什么意思| 功成名就是什么意思| 美商是什么意思| 山东都有什么大学| 7月29是什么星座| icp是什么意思| 喝酒拉肚子是什么原因| 螺内酯片治什么病| 什么叫五福临门| 泰国是一个什么样的国家| 布鲁斯是什么意思| 传染病检查项目有什么| 气管炎挂什么科| 什么样的降落伞| ppa是什么药| 百度

北师大将在厦门办美术公益营

mecanismo que permite ejecutar procedimientos remotos
(Redirigido desde ?Remote Procedure Call?)
百度 据塔斯社报道,俄罗斯负责军事合作的总统助手弗拉基米尔·科任对俄罗斯24新闻频道说:我认为,我们将在2020年初的某个时候开始履行(与土耳其的协议)。

En computación distribuida, la llamada a procedimiento remoto (en inglés, Remote Procedure Call, RPC) es un programa que utiliza una computadora para ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambas, de forma que parezca que se ejecuta en local. El protocolo que se utiliza para esta llamada es un gran avance sobre los sockets de Internet usados hasta el momento. De esta manera el programador no tenía que estar pendiente de las comunicaciones, estando estas encapsuladas dentro de las RPC.

Una llamada a procedimiento es muy similar a una invocación a un método remoto en la que un programa cliente llama a un procedimiento de otro programa en ejecución en un proceso servidor. Los servidores pueden ser clientes de otros servidores para permitir cadenas de RPC. Un proceso servidor define en su interfaz de servicio los procedimientos disponibles para ser llamados remotamente. RPC se implementa usualmente sobre protocolo petición-respuesta, que se encuentra simplificado por omisión de referencias a objetos remotos en la parte de los mensajes de petición.

Las RPC son muy utilizadas dentro de la comunicación cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando este de vuelta el resultado de dicha operación al cliente.

El cliente que accede a un servicio incluye un procedimiento de resguardo para cada procedimiento en la interfaz de servicio. El papel de un procedimiento de resguardo es similar al de un proxy. Se comporta como un procedimiento local del cliente pero en lugar de ejecutar la llamada, empaqueta el identificador del procedimiento y los argumentos en un mensaje de petición que se envía vía su módulo de comunicación al servidor; cuando llega el mensaje de respuesta, desempaqueta los resultados.

El concepto de RPC fue introducido por primera vez por Birrell y Nelson en 1984, y sentaron las bases para el desarrollo en sistemas distribuidos que se usa actualmente.[1]?

Problemas de dise?o

editar

Existen problemas asociados a la implementación de los sistemas RPC que son la programación con interfaces y de transparencia, ambos resumidos del libro "Distributed Systems: Concepts and Design".[2]?

Interfaces

editar

La mayoría de programas modernos presentan una estructura modular, en la que una función puede ser utilizada mediante una interfaz, la cual enmascara dicho procedimiento pudiéndose cambiar su funcionalidad sin que afecte a la forma en la que es llamada. Estos módulos pueden comunicarse entre sí mediante RPC de tal manera que las interacciones quedan controladas a través de las interfaces de los módulos, aunque varíe su implementación interna.

En un programa distribuido, por ejemplo, con arquitectura cliente-servidor, el servidor proporciona a los clientes un listado de los módulos que están disponibles para su uso, así como los argumentos necesarios para realizar una correcta llamada a los mismos. De esta forma el cliente únicamente debe preocuparse de la interfaz, no necesita saber detalles de la implementación del módulo, como por ejemplo el lenguaje de programación, o la plataforma en la que el servicio fue implementado, de esta manera se soluciona el problema de la heterogeneidad de los sistemas distribuidos actuales.

Por otro lado, si un módulo que se ejecuta en un proceso necesita acceder a variables de otro módulo que se ejecuta en otro proceso, no puede acceder a ellas, ya que el paso de argumentos por referencia no está permitido. Como consecuencia de esto último, los parámetros de salida van en un mensaje de respuesta. Una excepción es CORBA que puede acceder a las variables de un módulo situado en otro proceso mediante los métodos getter y setter.

Transparencia

editar

Los creadores de RPC, Birrell y Nelson, intentaron hacer las llamadas a procedimiento remoto lo más parecidas a las locales, de tal manera que no hubiese una distinción entre una llamada local y una llamada remota. Las transformaciones de la representación de los datos a un formato adecuado, el llamado marshalling, así como otros procedimientos de paso de mensaje se ocultan al programador. RPC se centra en ofrecer transparencia en la localización y el acceso, ocultando la localización física de los métodos.

Sin embargo, las llamadas a procedimientos remotos son más vulnerables a fallar que las locales, ya que implican una conexión a red y otro ordenador con otro proceso. Eso hace que se tenga más dificultad en determinar qué ha podido ocasionar un fallo.

También hay que tener en cuenta que las llamadas RPC tienen una latencia superior. Esto se debe tener en cuenta reduciendo lo mínimo posible este tipo de llamadas o haciendo que el procedimiento que realiza la llamada RPC sea capaz de abortarla en el caso de que tarde demasiado tiempo. Si se hace lo segundo, es importante que el servidor restaure la información a como estaba antes de la llamada.

Existe una discusión entre los programadores de cómo de transparente tiene que ser una llamada RPC. Por ejemplo, los creadores del lenguaje de programación Argus (Liskov y Scheifler) afirmaban que las llamadas RPC deberían ser diferentes que las locales, y como consecuencia de ello en Argus hicieron las llamadas remotas explícitas al programador.[3]? La conclusión general a la que se ha llegado es que la sintaxis entre una llamada local y una remota debería ser igual, y que la diferencia entre una y otra debería ser explicada en sus interfaces.

Tipos de semántica

editar

Existen diferentes modos que garantizan la entrega de mensajes en RPC:

  • Reintentar el mensaje de solicitud:  controla la retransmisión de la petición hasta que el servidor la reciba o suponga que ha fallado
  • Filtro de duplicados: controla el uso de retransmisiones y si el servidor descarta peticiones duplicadas
  • Retransmisión de los resultados: Controla si se debe mantener un historial de resultados de mensaje, permitiendo volver a transmitir los resultados perdidos sin volver a ejecutar las operaciones en el servidor.

La combinación de estas opciones conduce a tres posibles tipos de semánticas: “tal-vez”, “al-menos-una-vez” y “como-máximo-una-vez”[4]?

Medidas de tolerancia a fallos[4]? Semánticas de llamada
Reintentar el mensaje de solicitud Filtro de duplicados Retransmisión de los resultados
No No es aplicable No es aplicable tal vez
No Volver a ejecutar el procedimiento al menos una vez
Retransmitir la respuesta como máximo una vez

Semántica "tal-vez"

editar
  • Procedimiento remoto puede ejecutarse una vez o ninguna vez.
  • El cliente puede recibir una respuesta o ninguna.
Funcionamiento
  1. El cliente envía una petición y se queda a la espera un tiempo determinado.
  2. Si no llega la respuesta dentro del tiempo de espera, continúa su ejecución.
  3. El cliente no tiene realimentación en caso de fallo (no sabe que pasó).

Sólo admisible en aplicaciones donde se tolere la pérdida de peticiones y la recepción de respuestas con retraso (fuera de orden).

Semántica "al-menos-una-vez"

editar
  • Procedimiento remoto se ejecuta una o más veces.
  • El cliente puede recibir una o más respuestas.
Funcionamiento
  1. El cliente envía una petición y queda a la espera un tiempo.
  2. Si no llega respuesta o ACK dentro del tiempo de espera, repite la petición.
  3. El servidor no filtra peticiones duplicadas (el procedimiento remoto puede ejecutarse repetidas veces).
  4. El cliente puede recibir varias respuestas.

Sólo es aplicable cuando se usan exclusivamente operaciones idempotentes (repetibles). Nota: una operación es idempotente si se puede ejecutar varias veces resultando el mismo efecto que si se hubiera ejecutado sólo una. En ocasiones una operación no idempotente puede implementarse como una secuencia de operaciones idempotentes. Admisible en aplicaciones donde se tolere que se puedan repetir invocaciones sin afectar a su funcionamiento.

Semántica "como-máximo-una-vez"

editar
  • El procedimiento remoto se ejecuta exactamente una vez o no llega a ejecutarse ninguna.
  • El cliente recibe una respuesta o una indicación de que no se ha ejecutado el procedimiento remoto.
Funcionamiento
  1. El cliente envía la petición y queda a la espera un tiempo.
  2. Si no llega respuesta o ACK dentro del tiempo de espera, repite la petición.
  3. El servidor filtra las peticiones duplicadas y guarda historial con las respuestas enviadas (servidor con memoria). El procedimiento remoto sólo se ejecuta una vez.
  4. El cliente sólo recibe una respuesta si la petición llegó y se ejecutó el procedimiento, si no recibe informe del error.
Resumen de semánticas RPC
Semántica Funcionamiento
tal vez Cliente no retransmite sus peticiones (no usa ACK)
Servidor no filtra peticiones duplicadas
al menos una vez Cliente retransmite sus peticiones (usa ACK + temporizador)
Servidor no filtra peticiones duplicadas
Ante peticiones repetidas, servidor repite ejecución
como máximo una Cliente retransmite sus peticiones (usa ACK + temporizador)
Servidor filtra peticiones duplicadas
Ante peticiones repetidas, servidor retransmite las respuestas pasadas

Implementaciones

editar

La implementación de una llamada a procedimiento remoto requiere una serie de componentes de software, los cuales se pueden ver en la siguiente figura traducida de la que se encuentra en el libro "Distributed Systems: Concepts and Design".[2]?

 
Esquema de implementación RPC

Dentro del proceso cliente se encuentra el programa principal (programa cliente). Este se comunica con un procedimiento stub que se encarga de realizar la función de marshaling, para transformar los datos al formato adecuado y enviarlos como un mensaje de solicitud a través del módulo de comunicación. Una vez que la respuesta llega, el stub deshace la transformación para obtener los resultados.

El módulo de comunicación del proceso cliente se comunica con el del proceso servidor, desde el cual transmite los datos a un distribuidor (dispatcher) que hace llegar los datos al procedimiento stub correspondiente, que realizará la función de marshaling con el procedimiento servicio. Al existir varios stub, uno por cada procedimiento de servicio, el distribuidor se encarga de elegir el que corresponda en cada petición.

Los módulos de comunicación no solo se encargan de direccionar los mensajes sino también de otros aspectos relativos a la comunicación como mensajes duplicados, timeouts o retransmisiones.[4]?

En general, RPC implementa un protocolo de petición-respuesta.

Las llamadas a procedimiento remoto están implementadas mediante varios tipos de protocolos, muchos de ellos estandarizados como pueden ser el RPC de Sun denominado ONC RPC (RFC 1057), el RPC de Open Software Foundation (OSF) denominado DCE/RPC y el "Modelo de Objetos de Componentes Distribuidos de Microsoft" (Distributed Component Object Model, DCOM), aunque ninguno de estos es compatible entre sí. La mayoría de ellos utilizan un lenguaje de descripción de interfaz (Interface description language o IDL) que define los métodos exportados por el servidor.

Hoy en día se está utilizando el XML como lenguaje para definir el IDL y el HTTP como protocolo de aplicación, dando lugar a lo que se conoce como servicios web. Ejemplos de estos pueden ser SOAP o XML-RPC.

Véase también

editar


Enlaces externos

editar

Referencias

editar
  1. Birrell and Nelson (1984). ?Implementing remote procedure calls?. ACM Transactions on Computer Systems. 
  2. a b G. Colouris, J. Dollimore, T. Kindberg and G. Blair (2011). ?Chapter 5.3 - Remote procedure call?. Distributed Systems: Concepts and Design. Addison-Wesley. p. 195-201. 
  3. Liskov, B. and Scheifler, R.W. (1982). ?Guardians and actions: Linguistic support for robust, distributed programs?. ACM Transactions on Programming Languages and Systems. 
  4. a b c Santamaría, Rodrigo. ?Apuntes tema 3 Middleware?. Apuntes Sistemas Distribuidos, Universidad de Salamanca. 
宫颈囊肿是什么 百香果有什么功效与作用 李嘉诚是什么国籍 澈字五行属什么 雷锋属什么生肖
什么街道 反讽是什么意思 爱困总想睡觉什么原因 4月份是什么季节 莫须有什么意思
鲅鱼是什么鱼 迷妹是什么意思 最里面的牙齿叫什么 肚子胀气老放屁是什么原因 脚心发痒是什么原因
吃菠萝蜜有什么好处 什么属于包皮过长 什么是气溶胶 土是念什么 菠萝是什么季节的水果
非球面镜片是什么意思hcv9jop4ns2r.cn 三晋是什么意思hcv8jop9ns1r.cn 枫字五行属什么0297y7.com 糖尿病的诊断标准是什么hcv8jop0ns3r.cn 颈部有肿块挂什么科helloaicloud.com
吃什么促进消化hcv8jop1ns8r.cn 肠梗阻是因为什么原因引起的hcv9jop2ns8r.cn 曼陀罗是什么hcv8jop3ns8r.cn 女性尿急憋不住尿是什么原因hcv8jop3ns1r.cn 充电宝什么品牌最好hcv8jop2ns8r.cn
鸡涌是什么意思jasonfriends.com 重庆什么时候解放的hcv7jop4ns6r.cn 自省是什么意思hcv8jop1ns8r.cn 29度穿什么衣服合适hcv9jop3ns3r.cn 炎是什么意思hcv9jop3ns2r.cn
吃brunch是什么意思啊hcv9jop2ns8r.cn 经常打喷嚏是什么原因hcv9jop1ns9r.cn 梦到蜈蚣是什么意思jasonfriends.com 人潮涌动是什么意思hcv9jop0ns6r.cn 什么是粒子hcv9jop1ns5r.cn
百度