CN101719902B - 一种远程过程调用方法和系统 - Google Patents

一种远程过程调用方法和系统 Download PDF

Info

Publication number
CN101719902B
CN101719902B CN200910188734.6A CN200910188734A CN101719902B CN 101719902 B CN101719902 B CN 101719902B CN 200910188734 A CN200910188734 A CN 200910188734A CN 101719902 B CN101719902 B CN 101719902B
Authority
CN
China
Prior art keywords
stake
code
client
idl
serializing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200910188734.6A
Other languages
English (en)
Other versions
CN101719902A (zh
Inventor
李昌盛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Skyworth Digital Technology Co Ltd
Original Assignee
Shenzhen Skyworth Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Skyworth Digital Technology Co Ltd filed Critical Shenzhen Skyworth Digital Technology Co Ltd
Priority to CN200910188734.6A priority Critical patent/CN101719902B/zh
Publication of CN101719902A publication Critical patent/CN101719902A/zh
Application granted granted Critical
Publication of CN101719902B publication Critical patent/CN101719902B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开一种远程过程调用方法和系统,包括:通信模块,用于为RPC提供底层通信机制;序列化模块,用于对传输的消息进行序列化和反序列化;调度模块,用于对整个RPC调用进行调度,包括对异步调用的管理、超时机制、事务机制;编译模块,用于为接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的转换提供支持。克服了WebService在效率,异步调用方面的不足,并且与具有平台无关,用户代码中心简单易用等特点。

Description

一种远程过程调用方法和系统
技术领域
本发明涉及IPTV(Internet Protocol Television,交互式网络电视)技术,尤其涉及网元之间的通信技术。
背景技术
IPTV即交互式网络电视,是一种利用宽带有线电视网,集互联网、多媒体、通讯等多种技术于一体,向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。用户在家中可以有两种方式享受IPTV服务:(1)计算机,(2)网络机顶盒+普通电视机)。它能够很好地适应当今网络飞速发展的趋势,充分有效地利用网络资源。IPTV既不同于传统的模拟式有线电视,也不同于经典的数字电视。因为,传统的和经典的数字电视都具有频分制、定时、单向广播等特点;尽管经典的数字电视相对于模拟电视有许多技术革新,但只是信号形式的改变,而没有触及媒体内容的传播方式。
IPTV是利用计算机或机顶盒+电视完成接收视频点播节目、视频广播及网上冲浪等功能。它采用高效的视频压缩技术,使视频流传输带宽在800Kb/s时可以有接近DVD的收视效果(通常DVD的视频流传输带宽需要3Mb/s),对今后开展视频类业务如因特网上视频直播、远距离真视频点播、节目源制作等来讲,有很强的优势,是一个全新的技术概念。
现有的IPTV系统中,网元之间的通信往往采用Web Service的模式,或者是自定义的通信协议。
Web Service的模式的缺点是效率问题,虽然Web Service能够很好的解决异构问题,但是对于电信级应用,对通信的要求体现在高效,异步等方面,这些都是Web Service做不到的;而自定义协议也存在开发成本,协议的稳定性等问题。
Web Service的一个缺点就是同步调用,这是使用http协议的结果,假如服务器端是一个长过程的调用,那么Web Service就得阻塞在那里。为了避免这种情况,可以让Web Service立即返回,并在调用完成之后回调,但是这种方式增加了程序设计的复杂度。
因此,随着数字电视技术的发展,如何提高异步调用效率,成为急待解决的问题。
发明内容
本发明目的在于提供一种远程过程调用RPC(Remote Procedlure Call)系统,克服了WebService在效率,异步调用方面的不足,并且具有与平台无关,用户代码中心简单易用等特点。
为解决本发明的技术问题,本发明公开一种远程过程调用系统,包括:通信模块,序列化模块,调度模块和编译模块,其中,所述序列化模块,调度模块和编译模块均与所述通信模块连接,通过所述通信模块与其他通信设备通信,其中
所述通信模块,用于为RPC提供底层通信机制;
所述序列化模块,用于对传输的消息进行序列化和反序列化;
所述调度模块,用于对整个RPC调用进行调度,包括对异步调用的管理、超时机制、事务机制;
所述编译模块,用于为接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的转换提供支持。
较优的,所述底层通信机制包括传输控制协议(TCP)和流控制传输协议(SCTP)。
较优的,所述编译模块用于编译头文件为IDL,再由IDL生成客户端和服务器端的桩。
较优的,所述编译模块用于将头文件编译为接口定义语言文件、客户端桩代码和服务器端桩代码;用于将接口定义语言文件生成Protocol Buffer的序列化代码,用于将序列化代码和服务器端桩代码,客户端桩代码分别编译成为服务器端桩和客户端桩,其中所述客户代码和服务器代码分别链接自己的桩,成为完整的客户端程序和服务器端程序。
为解决本发明的技术问题,本发明还公开一种远程过程调用方法,其中,包括:
对传输的消息进行序列化和反序列化;
在接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的进行转换;
对整个RPC调用进行调度,包括对异步调用的管理、超时机制、事务机制。
较优的,所述在接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的进行转换具体包括:
编译头文件为IDL,再由IDL生成客户端和服务器端的桩。
较优的,所述在接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的进行转换具体包括:
将头文件编译为接口定义语言文件、客户端桩代码和服务器端桩代码;
将接口定义语言文件生成Protocol Buffer的序列化代码;
将序列化代码和服务器端桩代码,客户端桩代码分别编译成为服务器端桩和客户端桩;
其中,所述客户代码和服务器代码分别链接自己的桩,成为完整的客户端程序和服务器端程序。
较优的,还包括:
函数调用的所有形参,封装在一个以函数名为基础命名的结构体中,称为根(root)结构体;
以结构体为单位,做内存的序列化处理;
建立一个哈希表,将结构体类型和内存指针为哈希的key,结构体的内存为哈希的value;
从根结构体开始遍历,存储所有的子结构体,跳过在哈希表中的结构体,处理至RPC所支持的最基本数据结构为止。
与现有技术相比,本发明具有如下有益效果:
本发明公开一种远程过程调用(RPC)方法和系统,克服了Web Service在效率,异步调用方面的不足,并且具有与平台无关,用户代码中心简单易用等特点。
附图说明
图1为本发明实施例的一种基于Google Protocol Buffer的RPC通信系统结构示意图;
图2为本发明实施例的RPC在序列化调用参数时的一个示例图;
图3为本发明实施例的用户使用RPC的一个示意图;
图4为本发明实施例的远程过程调用RPC系统的结构示意图。
具体实施方式
本发明一种远程过程调用(RPC)方法和系统,克服了Web Service在效率,异步调用方面的不足,并且具有与平台无关,用户代码中心简单易用等特点。
远程过程调用RPC协议,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP(Transmission ControlProtocol,传输控制协议)或UDP(User Datagram Protocol,用户数据报协议),为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
图1为本发明实施例的一种基于Google Protocol Buffer的RPC通信系统结构示意图,该系统包括:调用服务器11,服务器12和客户机13,其中服务器12和客户机13均与调用服务器11通信连接。调用服务器11内装有服务程序1,服务器12内装有服务程序2,客户机13内装有客户程序。
其中,调用服务器11处于多个网段,它可以连接客户机13与服务器12,客户机13想要调用服务器12中服务程序2,但是由于它和服务器12之间没有路由,所以无法调用。但是通过RPC命名机制的支持,客户机13可以对服务调用服务器11发起调用,由调用服务器11负责调用服务器12中的服务程序2,并将调用的结果返回给客户机13。
图2为本发明实施例的RPC在序列化调用的形式参数时的示例图,假设此调用的参数只有结构体A,那么序列化必须把结构体A所涉及到得所有内存都保存下来,发给服务端,RPC的序列化模块42对结构体A进行了遍历,这是一个递归的调用,因为事先不能确定这种结构体之间的指针构成了多复杂的内存结构。
当遍历到b3时,发现b3所组成的key已经在哈希中,哈希命中,不再继续做分析,从而避免了死循环。当内存指针更复杂时,处理的原则是一样的。
图3为本发明实施例的用户使用RPC的一个示意图,其过程可以如下所示。
步骤31,用户定义头文件。
步骤32,RPC的编译模块将头文件编译为接口定义语言文件、客户端桩代码和服务器端桩代码。
步骤33,将接口定义语言文件生成Protocol Buffer的序列化代码。
步骤34,将序列化代码和服务器端桩代码,客户端桩代码分别编译成为服务器端桩和客户端桩。
步骤35,客户代码和服务器代码分别链接自己的桩,成为完整的客户端程序和服务器端程序。
本发明提出了一种基于protocol buffer的远程过程调用(RPC)系统,其主要特点是:
1)平台无关性
RPC可以做到与系统平台和程序语言无关,以下重点描述服务器开发中常用的C语言的实现。用户代码中心(User-Code-Centered),RPC以用户代码为中心,定义良好的头文件设置不需做任何更改,用户可以方便的将现有的本地调用代码移植为远程调用。
2)简单性
简单性指用户使用简单、方便。该RPC还集成了Google Protocol Buffer的可扩展性、高性能和向后兼容等特点。
如图4所示,为本发明实施例的一种远程过程调用RPC系统的结构示意图,从功能上可以逻辑可以包括:通信模块41,序列化模块42,调度模块43和编译模块44。其中,所述序列化模块42,调度模块43和编译模块44均与通信模块41连接,通过所述通信模块41与其他通信设备通信。
通信模块41,用于为RPC提供底层通信机制,通信模块41的设计使得RPC系统可以使用各种通信协议,包括TCP和SCTP(STREAM CONTROL TRANSMISSION PROTOCOL,流控制传输协议)。
序列化模块42,由桩(stub)和Google Protocol Buffer共同完成,其作用是对传输的消息进行序列化和反序列化。
调度模块43的作用是对整个RPC调用进行调度,包括对异步调用的管理、超时机制、事务机制等。
编译模块44为接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的转换提供支持。该RPC是用户代码中心的(User-Code-Centered),因此用户提供自己的头文件,就可以由编译模块44编译此头文件为IDL,再由IDL生成客户端和服务器端的桩。
桩(stub)生成策略
生成桩的目的是提供客户端13和调用服务器11、12端的支持,以便用户无需书写代码,上调用远程的服务器就如同调用本地函数一样。桩包括客户端桩和服务器端桩,它们的相同部分是都需要把调用所涉及的内存传递到对方。因此如何序列化这些内存就成为一个重要的问题。
对于C这种过程式的语言来说,不能期望像java一样直接把类序列化或者反序列化,因此必须用一种抽象的方式描述C语言当中的内存。
本发明的RPC采取的策略描述如下:
1)函数调用的所有形参,封装在一个以函数名为基础命名的结构体中,称为根(root)结构体。
2)以结构体为单位,做内存的序列化处理。
3)建立一个哈希表,将结构体类型和内存指针为哈希的key,结构体的内存为哈希的value。
4)从根结构体开始遍历,存储所有的子结构体,跳过在哈希表中的结构体(即为已经处理过),否则处理至RPC所支持的最基本数据结构为止。
5)得到调用所涉及的所有内存。
本发明的RPC使用rpc://ip:port/service_name的方式命名RPC服务,类URI的命名使其获得良好的可读性和通用性,此外这种方式使得一台处于不同网段的机器有了做RPC代理的可能。
当一台调用服务器11处于不同网段时,它可以被设置为当收到一个不属于自己的调用请求时(即rpc字串中的ip不是自己的),转发此rpc调用,并且将调用的结果返回给请求的客户机13,如图1所示。
本发明的RPC提供版本校验特性,在通信程序中,由于接口版本问题所带来的问题很多,因此版本校验的特性有很大意义,本发明的RPC使用IDL文件的MD5值作为版本的描述信息,当发现客户机13和调用服务器11端的MD5值不一致时给予警告。
使用IDL文件的MD5值作为版本的好处是,可以不必要求用户头文件的一致,由于IDL是用户头文件生成的,对于不同的头文件,只要其意义仍一致,就认为是其版本没有发生变化。
本发明的RPC提供异步调用,采用事件驱动的方式为用户提供类epoll的接口,使得用户程序不必阻塞,从而得到更高的效率。

Claims (4)

1.一种远程过程调用系统,其特征在于,包括:通信模块,序列化模块,调度模块和编译模块,其中,所述序列化模块,调度模块和编译模块均与所述通信模块连接,通过所述通信模块与其他通信设备通信,其中
所述通信模块,用于为RPC提供底层通信机制;
所述序列化模块,用于对传输的消息进行序列化和反序列化;
所述调度模块,用于对整个RPC调用进行调度,包括对异步调用的管理、超时机制、事务机制;
所述编译模块,用于为接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的转换提供支持;
所述编译模块用于编译头文件为IDL,再由IDL生成客户端和服务器端的桩;
所述编译模块用于将头文件编译为接口定义语言文件、客户端桩代码和服务器端桩代码;用于将接口定义语言文件生成Protocol Buffer的序列化代码,用于将序列化代码和服务器端桩代码,客户端桩代码分别编译成为服务器端桩和客户端桩,其中所述客户端桩代码和服务器端桩代码分别链接自己的桩,成为完整的客户端程序和服务器端程序。
2.如权利要求1所述的系统,其特征在于,所述底层通信机制包括传输控制协议(TCP)和流控制传输协议(SCTP)。
3.一种远程过程调用方法,其特征在于,包括:
对传输的消息进行序列化和反序列化;
在接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的进行转换;
对整个RPC调用进行调度,包括对异步调用的管理、超时机制、事务机制;
所述在接口定义文件(IDL)、用户头文件、桩(stub)文件三者之间的进行转换具体包括:编译头文件为IDL,再由IDL生成客户端和服务器端的桩;还包括:
将头文件编译为接口定义语言文件、客户端桩代码和服务器端桩代码;
将接口定义语言文件生成Protocol Buffer的序列化代码;
将序列化代码和服务器端桩代码,客户端桩代码分别编译成为服务器端桩和客户端桩;
其中,所述客户端桩代码和服务器端桩代码分别链接自己的桩,成为完整的客户端程序和服务器端程序。
4.如权利要求3所述的方法,其特征在于,还包括:
函数调用的所有形参,封装在一个以函数名为基础命名的结构体中,称为根(root)结构体;
以结构体为单位,做内存的序列化处理;
建立一个哈希表,将结构体类型和内存指针为哈希的key,结构体的内存为哈希的value;
从根结构体开始遍历,存储所有的子结构体,跳过在哈希表中的结构体,处理至RPC所支持的最基本数据结构为止。
CN200910188734.6A 2009-12-04 2009-12-04 一种远程过程调用方法和系统 Expired - Fee Related CN101719902B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910188734.6A CN101719902B (zh) 2009-12-04 2009-12-04 一种远程过程调用方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910188734.6A CN101719902B (zh) 2009-12-04 2009-12-04 一种远程过程调用方法和系统

Publications (2)

Publication Number Publication Date
CN101719902A CN101719902A (zh) 2010-06-02
CN101719902B true CN101719902B (zh) 2014-07-30

Family

ID=42434417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910188734.6A Expired - Fee Related CN101719902B (zh) 2009-12-04 2009-12-04 一种远程过程调用方法和系统

Country Status (1)

Country Link
CN (1) CN101719902B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651753B (zh) * 2011-02-25 2016-04-27 国际商业机器公司 与平台无关的信息处理系统及其通信方法
CN103294652B (zh) * 2012-02-27 2018-03-20 腾讯科技(深圳)有限公司 一种数据转换方法及系统
CN102810069A (zh) * 2012-07-16 2012-12-05 深圳市融创天下科技股份有限公司 一种java对象的请求和响应方法、装置、系统和终端
CN103019820B (zh) * 2012-12-06 2015-10-07 厦门市美亚柏科信息股份有限公司 基于boost的出站式rfi/rmi服务实现方法及通信系统
CN103051728B (zh) * 2013-01-10 2015-07-08 太仓市同维电子有限公司 一种远程过程调用方法
CN103176803A (zh) * 2013-04-18 2013-06-26 成都一云数据处理有限公司 一种代码序列化的方法
CN104270257B (zh) * 2014-09-10 2017-11-07 烽火通信科技股份有限公司 基于pb和xpath的网元级网管业务配置适配系统及方法
CN104363285B (zh) * 2014-11-18 2018-04-10 东方网力科技股份有限公司 一种网络通信程序生成方法及装置
CN105872578A (zh) * 2016-03-30 2016-08-17 青岛海信电器股份有限公司 一种调用方法及服务器
EP3282357B1 (en) 2016-08-09 2023-10-11 Huawei Technologies Co., Ltd. Apparatus and method for running plurality of threads
CN106452879A (zh) * 2016-10-20 2017-02-22 国网青海省电力公司电力科学研究院 一种基于pb的scd跨平台解析方法
CN107301098B (zh) * 2017-06-15 2020-09-08 搜易贷(北京)金融信息服务有限公司 一种基于Thrift协议的远程过程调用装置、方法及系统
CN107832046A (zh) * 2017-10-31 2018-03-23 北京聆云信息技术有限公司 数据生成方法及装置
CN108540477A (zh) * 2018-04-13 2018-09-14 腾讯科技(成都)有限公司 数据通信的方法及相关设备
CN109857576A (zh) * 2019-01-28 2019-06-07 中国工商银行股份有限公司 Rpc接口调用方法及装置
CN109871289B (zh) * 2019-02-01 2020-03-10 北京顺丰同城科技有限公司 一种远程过程调用rpc服务生成方法及装置
CN111338944B (zh) * 2020-02-21 2023-09-08 北京字节跳动网络技术有限公司 远程过程调用rpc接口测试方法、装置、介质及设备
CN112367376A (zh) * 2020-10-28 2021-02-12 常州微亿智造科技有限公司 一种工业物联网下微服务间相互通讯框架的实现方法
CN114710541A (zh) * 2022-01-28 2022-07-05 赛纳生物科技(北京)有限公司 一种传输测序数据的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1609792A (zh) * 2003-10-24 2005-04-27 微软公司 计算机程序的编程接口
CN1848774A (zh) * 2005-04-11 2006-10-18 华为技术有限公司 一种远程调用通信组件的系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050179936A1 (en) * 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1609792A (zh) * 2003-10-24 2005-04-27 微软公司 计算机程序的编程接口
CN1848774A (zh) * 2005-04-11 2006-10-18 华为技术有限公司 一种远程调用通信组件的系统及方法

Also Published As

Publication number Publication date
CN101719902A (zh) 2010-06-02

Similar Documents

Publication Publication Date Title
CN101719902B (zh) 一种远程过程调用方法和系统
CA2841377C (en) Video transcoding services provided by searching for currently transcoded versions of a requested file before performing transcoding
CN104205884B (zh) 多播广播多媒体服务辅助内容分发
CN102546794B (zh) 浏览器客户端与后端服务器直通的方法、网关和通信系统
US9860603B2 (en) Method and apparatus for managing applications based on application information included in a broadcasting signal
CN104243998B (zh) 一种数据处理方法、装置及相关服务器
CN105763619B (zh) 客户端与服务端进行通讯的方法及装置
EP3155525A2 (en) Automated service profiling and orchestration
CN104283873B (zh) 基于多网卡设备下数字媒体服务器的实现方法及系统
CN102970378A (zh) 二进制数据优化传输系统
CN101350813A (zh) 一种为数字家电提供WiFi接入互联网的方法和装置
WO2015176648A1 (zh) 将智能终端上的数据传输至电视终端的方法、装置
CN112256246A (zh) 一种用于电力系统中支持跨语言调用的微服务集成架构
CN104885430B (zh) 在家庭网络中播放媒体的装置和方法
US9871840B2 (en) Electronic apparatus and method for transferring contents on cloud system to device connected to DLNA
CN109151586B (zh) 一种通用多媒体播放方法及播放器
KR20050094372A (ko) 멀티미디어 콘텐츠 서비스 시스템과 방법 및 그 기록매체
CN101815073A (zh) 一种嵌入式蓝牙-以太网服务器
WO2016202202A1 (zh) 设备连接的方法和装置、以及智能电视系统
WO2011130962A1 (zh) 远程处理方法、装置及系统
CN101902471B (zh) Rdp环境下流媒体映射方法
CN113542217B (zh) 一种服务订阅系统
KR101324393B1 (ko) Rest 기반 웹 서비스 조합 시스템 및 방법
WO2017193955A1 (zh) 一种管理方法及系统、终端及服务器
US8755677B2 (en) Moving-picture processing device and moving-picture processing method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: SHENZHEN SKYWORTH DIGITAL TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SKY-WORTH DIGITAL TECHNOLOGY CO., LTD.;SHENZHEN CITY

CP01 Change in the name or title of a patent holder

Address after: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road SKYWORTH building A14

Patentee after: Shenzhen Skyworth Digital Technology Co., Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road SKYWORTH building A14

Patentee before: Shenzhen Skyworth Digital Technology Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140730

Termination date: 20151204

EXPY Termination of patent right or utility model