CN103399786B - 一种基于运行时上下文的出站式服务实现方法及系统 - Google Patents
一种基于运行时上下文的出站式服务实现方法及系统 Download PDFInfo
- Publication number
- CN103399786B CN103399786B CN201310328848.2A CN201310328848A CN103399786B CN 103399786 B CN103399786 B CN 103399786B CN 201310328848 A CN201310328848 A CN 201310328848A CN 103399786 B CN103399786 B CN 103399786B
- Authority
- CN
- China
- Prior art keywords
- module
- node
- context
- service
- functional module
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开提供一种基于运行时上下文的出站式服务实现方法,包括:计算节点向控制端发起连接;控制端进行身份验证后,维持所述连接作为主连接,并创建进程上下文;控制端通判断计算节点现有功能模块中是否有未更新的功能模块;若有未更新功能模块控制端通过主连接对未更新的功能模块相应的服务函数进行更新;计算节点加载功能模块;控制端通过主连接与计算节点进行会话连接,并通过会话连接指示计算节点进行数据计算和结果回传。本发明还提供一种基于运行时上下文的出站式服务实现系统。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种基于运行时上下文的出站式服务方法及系统。
背景技术
在出站式服务架构中,由控制端指令计算节点执行数据服务,一种典型的通信模型的主要过程如下:
将分布式服务程序分别部署在每个计算节点中,分布式服务程序中包含必要的服务过程;计算节点回连控制端,控制端进行必要的身份验证后,维持此连接作为主连接;控制端通过主连接分化出新会话连接,并通过会话连接指示计算节点进行数据计算和结果回传。
在这种模型中,需要解决两个问题:
一、计算节点服务升级:当计算节点需要更新服务时,传统的做法是通过升级程序或手动将计算节点的服务程序更新,重启计算节点服务程序,再次回连。升级过程不够灵活。
二、计算节点和控制端的资源管理问题:当计算服务所处的会话异常结束,例如网络断开时,需要处理资源释放问题。专利申请号为CN201210521645的文献披露了一种基于BOOST的出站式RFI/RMI服务实现方法及通信系统,其使用远程对象作为会话资源管理器,使用会话式契约(RMI服务)来管理资源,在这种模式下,每种服务会话需要独立定义会话对象及契约接口,当基于会话的服务种类增多时,会增大控制端和计算节点的耦合度。
发明内容
为解决上述问题,本发明采用的一个技术方案是:
提供一种基于运行时上下文的出站式服务实现系统,包括控制端以及与控制端通信连接的至少一个计算节点,所述计算节点包括主连接发起模块、 功能模块加载模块、计算模块,所述控制端包括验证模块、主连接模块、查询模块、判断模块、更新模块、会话模块;所述主连接发起模块用于向控制端发起连接;所述验证模块用于对发起连接的计算节点进行身份验证;所述主连接模块用于当验证模块对计算节点身份验证通过后,维持所述连接作为主连接,并创建进程上下文,进程上下文中包含服务函数表,服务函数表中注册有功能模块对应的服务函数;所述查询模块用于通过主连接查询计算节点现有功能模块的类别和版本号;所述判断模块用于根据所述类别和版本号判断计算节点现有功能模块中是否有未更新的功能模块,并当判定没有未更新的功能模块时,通知计算节点加载功能模块;所述更新模块用于当判断模块判定有未更新的功能模块时,通过主连接对未更新的功能模块相应的服务函数进行更新,然后通知计算节点加载功能模块;所述功能模块加载模块用于加载功能模块;所述会话模块用于通过主连接与计算节点进行会话连接;所述计算模块用于根据会话连接的指示进行数据计算并将结果回传。
本发明采用的另一个技术方案是:
提供一种基于运行时上下文的出站式服务实现方法,包括:S101、计算节点向控制端发起连接;S102、控制端对发起连接的计算节点进行身份验证后,维持所述连接作为主连接,并创建进程上下文,进程上下文中包含服务函数表,服务函数表中注册有功能模块对应的服务函数;S103、控制端通过主连接查询计算节点现有功能模块的类别和版本号,并根据所述类别和版本号判断计算节点现有功能模块中是否有未更新的功能模块,若是,进入步骤S104,若否,进入步骤S105;S104、控制端通过主连接对未更新的功能模块相应的服务函数进行更新;S105、计算节点加载功能模块,然后进入步骤S106;S106、控制端通过主连接与计算节点进行会话连接,并通过会话连接指示计算节点进行数据计算和结果回传。
本发明的种基于运行时上下文的出站式服务实现方法及系统,基于RFI服务模型,使用进程运行时上下文实现服务功能模块的自动更新,使更新过程自动化,并在大部分场合下不需要重启服务程序,提高了升级维护的效率;使用线程上下文管理会话资源,省去了会话对象的定义及对象接口契约设计,提高 了开发效率并降低通信双方的耦合度。事实上,在其他很多应用场合,恰当使用运行时上下文可以降低程序耦合度,例如实现进程级的单例、增强的线程局部存储等。
附图说明
图1是本发明一实施方式中一种基于运行时上下文的出站式服务实现系统的系统架构图;
图2是计算节点的结构框图;
图3是控制端的结构框图;
图4是计算模块的功能模块图;
图5是上下文类定义的示意图;
图6是上下文载体的类定义图;
图7是本发明一实施方式中一种基于运行时上下文的出站式服务实现方法的执行流程图。
主要元件符号说明
基于运行时上下文的出站式服务实现系统100;控制端10;计算节点20;主连接发起模块21;功能模块加载模块22;计算模块23;验证模块11;主连接模块12;查询模块13;判断模块14;更新模块15;会话模块16;线程创建子模块231;绑定子模块232;线程退出子模块233。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
请参阅图1,是本发明一实施方式中一种基于运行时上下文的出站式服务实现系统的系统架构图。该基于运行时上下文的出站式服务实现系统100包括控制端10以及与控制端通信连接的至少一个计算节点20。
请一并参阅图2、图3,图2是计算节点的结构框图,图3是控制端的结构框图。所述计算节点20包括主连接发起模块21、功能模块加载模块22、计算 模块23。
所述控制端10包括验证模块11、主连接模块12、查询模块13、判断模块14、更新模块15、会话模块16。
所述主连接发起模块21用于向控制端10发起连接。
所述验证模块11用于对发起连接的计算节点20进行身份验证。
所述主连接模块12用于当验证模块11对计算节点20身份验证通过后,维持所述连接作为主连接,并创建进程上下文,进程上下文中包含服务函数表,服务函数表中注册有功能模块对应的服务函数。
其中,在RFI调用模型基础上,本发明将服务集合分类整合到不同的功能模块中,每个模块具有版本号、类别信息。在模块的入口处注册服务函数至服务函数表中,服务函数表保存了每一个服务函数的ID和对应的服务函数,其定义如下:
Map<FunctionKey,FunctionAgent>
所述服务函数表设置在进程上下文中,所以整个进程都可以访问。
所述查询模块13用于通过主连接查询计算节点20现有功能模块的类别和版本号。
所述判断模块14用于根据所述类别和版本号判断计算节点20现有功能模块中是否有未更新的功能模块,并当判定没有未更新的功能模块时,通知计算节点20加载功能模块。
所述更新模块15用于当判断模块判定有未更新的功能模块时,通过主连接对未更新的功能模块相应的服务函数进行更新,然后通知计算节点20加载功能模块。
具体地,新的服务函数将替换旧的服务代理函数,在以后的会话将自动使用新服务函数,不必重新启动计算节点服务程序。更新服务过程本身也是一个会话服务,为了避免更新服务与其他会话请求造成访问冲突,更新服务过程必须由主连接完成。
所述功能模块加载模块22用于加载功能模块。
所述会话模块16用于通过主连接与计算节点20进行会话连接。
所述计算模块23用于根据会话连接的指示进行数据计算并将结果回传。
请参阅图4,是计算模块的功能模块图。所述计算模块23具体包括线程创建子模块231、绑定子模块232、线程退出子模块233。
线程创建子模块231用于当计算节点20接收到控制端10发起的会话服务后,与控制端建立会话连接,并创建与会话连接惟一对应的线程上下文。
绑定子模块232用于当计算节点20接收到控制端发送的打开文件指令后,将文件句柄与线程上下文绑定,并返回文件句柄ID至控制端10;
线程退出子模块233用于当计算节点20侦测到会话结束条件满足时,退出线程并关闭文件句柄。其中,所述会话结束的条件包括正常终止、网络异常退出、服务异常退出。
自动关闭句柄可以由上下文对象或析构行为实现,在windows中,句柄属于内核对象,通过统一的API可关闭不同类型的句柄,因此自动关闭柄的功能策略在某种程度上简化了句柄资源的管理。运行上下文通过调用子类的获取上下文方法,访问子类上下文对象。
无论会话以何种形式终止,文件都会被释放。下面是打开文件是将文件句柄绑定到线程上下文的伪代码。
其中ThreadRuntimeContext是线程上下文,通过静态函数将文件句柄注册到上下文载体中,因此文件句柄在线程退出时会自动释放。对于其他非句柄资源,也可以通过queue_exit_handler自定义退出操作,类似于异常处理中的final块。
请参阅图5,是上下文类定义的示意图。图中GenericRuntimeContext是运行时上下文的基类,封装了以下操作:
基类通过get_context获取子类的上下文载体,进程上下文子类的上下文载体生存周期是应用程序的整个运行期,访问域是进程域;线程上下文子类的上下文载体的生存周期是每个线程的运行期,访问域是线程域,例如线程上下文设置的变量不能被其他线程访问。
请参阅图6,是上下文载体的类定义图。其中values是set_value和get_value访问的变量表,handlers是queue_exit_handler操作的函数对象,handles是上下文析构是自动关闭的句柄,section是限制访问竞争的信号量。
在上下文析构时,变量表中的所有变量会被释放,对象的析构函数会被调用;析构操作会被依次调用,句柄会被依次关闭。对于线程上下文,信号量是空类型,及信号量不存在锁和解锁的操作,因为同个线程中不可能出现访问竞争。
运行时对象最关键的部分是上下文载体何时创建和释放。在实现上,进程上下文在第一次执行上下文操作时创建上下文载体,线程上下文则在每个线程第一次执行上下文操作时创建上下文载体,这不影响使用逻辑。
进程上下文不同于单例,单例一般是运行模块内的单例,是语言级的。当一个进程由多个模块组成,每个模块会对于同一个类型具有各自的单例,而在RFI模型中,服务函数需要注册在进程域的服务表中,模块内的单例模型不能满足要求。在Windows中,不存在语言级的进程单例,本文使用文献“Modern C++Design Generic Programming and Design Patterns Applied,Andrei Alexandrescu”中的环境变量和凤凰模式的单例模型实现进程上下文,通过环境变量访问上下文载体单例的地址,第一次访问时,由于环境变量不存在,需要创建单例并注册单例的地址到环境变量中。
上述基于线程上下文的会话模型,省去了对象接口契约,但要求每个会话 服务对应于计算节点的一个线程,即当控制端发起一个会话服务时,要求计算节点创建一个新线程和一个新连接,在该线程和连接中处理会话过程中的所有服务请求,与此同时,服务节点在该线程中使用的文件或其他资源,将通过服务函数绑定到线程上下文中。当会话连接以任何形式终止时,线程将自动退出,而会话过程中,服务函数产生的异常使线程退出时,也同时终止会话连接,线程和会话连接的生命期是一致的。
请参阅图7,是本发明一实施方式中一种基于运行时上下文的出站式服务实现方法的执行流程图,该方法运行于所述基于运行时上下文的出站式服务实现系统100中,该方法包括如下步骤:
步骤S101、计算节点向控制端发起连接;
步骤S102、控制端对发起连接的计算节点进行身份验证后,维持所述连接作为主连接,并创建进程上下文,进程上下文中包含服务函数表,服务函数表中注册有功能模块对应的服务函数;
其中,在RFI调用模型基础上,本发明将服务集合分类整合到不同的功能模块中,每个模块具有版本号、类别信息。在模块的入口处注册服务函数至服务函数表中,服务函数表保存了每一个服务函数的ID和对应的服务函数,其定义如下:
Map<FunctionKey,FunctionAgent>
所述服务函数表设置在进程上下文中,所以整个进程都可以访问。
步骤S103、控制端通过主连接查询计算节点现有功能模块的类别和版本号,并根据所述类别和版本号判断计算节点现有功能模块中是否有未更新的功能模块,若是,进入步骤S104,若否,进入步骤S105;
步骤S104、控制端通过主连接对未更新的功能模块相应的服务函数进行更新,然后进入步骤S105;
步骤S105、计算节点加载功能模块,然后进入步骤S106;
具体地,新的服务函数将替换旧的服务代理函数,在以后的会话将自动使用新服务函数,不必重新启动计算节点服务程序。更新服务过程本身也是一个会话服务,为了避免更新服务与其他会话请求造成访问冲突,更新服务过程必 须由主连接完成。
步骤S106、控制端通过主连接与计算节点进行会话连接,并通过会话连接指示计算节点进行数据计算和结果回传。
其中,所述步骤S106具体包括:
步骤S1061、计算节点当接收到控制端发起的会话服务后,与控制端建立会话连接,并创建与会话连接惟一对应的线程上下文;
步骤S1062、计算节点当接收到控制端发送的打开文件指令后,将文件句柄与线程上下文绑定,并返回文件句柄ID至控制端;
步骤S1063、当计算节点侦测到会话结束条件满足时,退出线程并关闭文件句柄。所述会话结束的条件包括正常终止、网络异常退出、服务异常退出。
本发明的种基于运行时上下文的出站式服务实现方法及系统,基于RFI服务模型,使用进程运行时上下文实现服务功能模块的自动更新,使更新过程自动化,并在大部分场合下不需要重启服务程序,提高了升级维护的效率;使用线程上下文管理会话资源,省去了会话对象的定义及对象接口契约设计,提高了开发效率并降低通信双方的耦合度。事实上,在其他很多应用场合,恰当使用运行时上下文可以降低程序耦合度,例如实现进程级的单例、增强的线程局部存储等。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种基于运行时上下文的出站式服务实现系统,其特征在于,包括控制端以及与控制端通信连接的至少一个计算节点,所述计算节点包括主连接发起模块、功能模块加载模块、计算模块,所述控制端包括验证模块、主连接模块、查询模块、判断模块、更新模块、会话模块;
所述主连接发起模块用于向控制端发起连接;
所述验证模块用于对发起连接的计算节点进行身份验证;
所述主连接模块用于当验证模块对计算节点身份验证通过后,维持所述连接作为主连接,并创建进程上下文,进程上下文中包含服务函数表,服务函数表中注册有功能模块对应的服务函数;
所述查询模块用于通过主连接查询计算节点现有功能模块的类别和版本号;
所述判断模块用于根据所述类别和版本号判断计算节点现有功能模块中是否有未更新的功能模块,并当判定没有未更新的功能模块时,通知计算节点加载功能模块;
所述更新模块用于当判断模块判定有未更新的功能模块时,通过主连接对未更新的功能模块相应的服务函数进行更新,然后通知计算节点加载功能模块;
所述功能模块加载模块用于加载功能模块;
所述会话模块用于通过主连接与计算节点进行会话连接;
所述计算模块用于根据会话连接的指示进行数据计算并将结果回传。
2.根据权利要求1所述的一种基于运行时上下文的出站式服务实现系统,其特征在于,所述计算模块具体包括:
线程创建子模块,用于当计算节点接收到控制端发起的会话服务后,与控制端建立会话连接,并创建与会话连接惟一对应的线程上下文;
绑定子模块,用于当计算节点接收到控制端发送的打开文件指令后,将文件句柄与线程上下文绑定,并返回文件句柄ID至控制端;
线程退出子模块,用于当计算节点侦测到会话结束条件满足时,退出线程并关闭文件句柄。
3.根据权利要求2所述的一种基于运行时上下文的出站式服务实现系统,其特征在于,所述会话结束的条件包括正常终止、网络异常退出、服务异常退出。
4.一种基于运行时上下文的出站式服务实现方法,其特征在于,包括:
S101、计算节点向控制端发起连接;
S102、控制端对发起连接的计算节点进行身份验证后,维持所述连接作为主连接,并创建进程上下文,进程上下文中包含服务函数表,服务函数表中注册有功能模块对应的服务函数;
S103、控制端通过主连接查询计算节点现有功能模块的类别和版本号,并根据所述类别和版本号判断计算节点现有功能模块中是否有未更新的功能模块,若是,进入步骤S104,若否,进入步骤S105;
S104、控制端通过主连接对未更新的功能模块相应的服务函数进行更新,然后进入步骤S105;
S105、计算节点加载功能模块,然后进入步骤S106;
S106、控制端通过主连接与计算节点进行会话连接,并通过会话连接指示计算节点进行数据计算和结果回传。
5.根据权利要求4述的一种基于运行时上下文的出站式服务实现方法,其特征在于,所述步骤S106具体包括:
S1061、计算节点当接收到控制端发起的会话服务后,与控制端建立会话连接,并创建与会话连接惟一对应的线程上下文;
S1062、计算节点当接收到控制端发送的打开文件指令后,将文件句柄与线程上下文绑定,并返回文件句柄ID至控制端;
S1063、当计算节点侦测到会话结束条件满足时,退出线程并关闭文件句柄。
6.根据权利要求5述的一种基于运行时上下文的出站式服务实现方法,其特征在于,所述会话结束的条件包括正常终止、网络异常退出、服务异常退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310328848.2A CN103399786B (zh) | 2013-07-31 | 2013-07-31 | 一种基于运行时上下文的出站式服务实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310328848.2A CN103399786B (zh) | 2013-07-31 | 2013-07-31 | 一种基于运行时上下文的出站式服务实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103399786A CN103399786A (zh) | 2013-11-20 |
CN103399786B true CN103399786B (zh) | 2016-12-28 |
Family
ID=49563420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310328848.2A Active CN103399786B (zh) | 2013-07-31 | 2013-07-31 | 一种基于运行时上下文的出站式服务实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103399786B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239313A (zh) * | 2017-06-09 | 2017-10-10 | 中国建设银行股份有限公司 | Spring应用服务的升级方法和存储介质 |
CN112506955B (zh) * | 2020-12-10 | 2021-09-21 | 星环信息科技(上海)股份有限公司 | 一种查询处理方法、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001297005A (ja) * | 2000-04-14 | 2001-10-26 | Mitsubishi Electric Corp | クライアントサーバシステム |
EP1178402A1 (en) * | 2000-08-03 | 2002-02-06 | Hsing Tech Enterprises Co., Ltd. | Method and apparatus for actively updating program file(s) of a client computer |
CN1553314A (zh) * | 2003-05-30 | 2004-12-08 | 英业达股份有限公司 | 服务器程序自动更新方法及系统 |
CN101483556A (zh) * | 2009-01-06 | 2009-07-15 | 中兴通讯股份有限公司 | 交换机远程目标端自动升级方法及系统 |
CN102469064A (zh) * | 2010-11-03 | 2012-05-23 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN102880482A (zh) * | 2012-08-06 | 2013-01-16 | 厦门市美亚柏科信息股份有限公司 | 一种主机批量控制虚拟机中软件自动升级的系统及技术方法 |
-
2013
- 2013-07-31 CN CN201310328848.2A patent/CN103399786B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001297005A (ja) * | 2000-04-14 | 2001-10-26 | Mitsubishi Electric Corp | クライアントサーバシステム |
EP1178402A1 (en) * | 2000-08-03 | 2002-02-06 | Hsing Tech Enterprises Co., Ltd. | Method and apparatus for actively updating program file(s) of a client computer |
CN1553314A (zh) * | 2003-05-30 | 2004-12-08 | 英业达股份有限公司 | 服务器程序自动更新方法及系统 |
CN101483556A (zh) * | 2009-01-06 | 2009-07-15 | 中兴通讯股份有限公司 | 交换机远程目标端自动升级方法及系统 |
CN102469064A (zh) * | 2010-11-03 | 2012-05-23 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN102880482A (zh) * | 2012-08-06 | 2013-01-16 | 厦门市美亚柏科信息股份有限公司 | 一种主机批量控制虚拟机中软件自动升级的系统及技术方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103399786A (zh) | 2013-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2021245203B2 (en) | Methods for defining a Network Service Descriptor (NSD) for a Network Service (NS), and Network Functions Virtualization (NFV) Orchestrator (NFVO) using said NSD | |
CN110661842B (zh) | 一种资源的调度管理方法、电子设备和存储介质 | |
US20130191436A1 (en) | Building large scale infrastructure using hybrid clusters | |
CN105760180B (zh) | 一种工作流引擎的扩展开发方法 | |
CN101286212A (zh) | 业务流程执行方法、业务流程引擎及其部署方法 | |
CN105959302A (zh) | 一种终端管理框架及方法 | |
CN106406836A (zh) | 面向电力系统分析的软件平台及其运行和分布式开发方法 | |
CN104572286A (zh) | 一种基于分布式内存集群的任务调度方法 | |
CN108255467A (zh) | 按照工作流顺序执行服务的方法、装置及系统 | |
CN103399786B (zh) | 一种基于运行时上下文的出站式服务实现方法及系统 | |
CN101056210B (zh) | 一种网络集中管理平台上的事件处理系统和方法 | |
CN111736871A (zh) | Fpga芯片的升级方法、装置及系统 | |
CN112448833A (zh) | 一种多管理域的通信方法和装置 | |
CN111447273B (zh) | 云处理系统及基于云处理系统的数据处理方法 | |
CN113658351A (zh) | 一种产品生产的方法、装置、电子设备及存储介质 | |
CN110287089B (zh) | 一种基于中间格式及smt技术的微内核ipc验证方法 | |
CN105183468A (zh) | 一种开放式插件处理装置及分布式系统 | |
WO2015117458A1 (zh) | 故障信息收集方法、装置及系统 | |
CN101246421A (zh) | 一种基于工作流引擎实现的通用框架 | |
CN117149413A (zh) | 一种通用ai算法模型云服务集成部署系统及方法 | |
CN105490846A (zh) | 服务器虚拟化管理系统及方法 | |
CN104484227A (zh) | 一种硬件资源使用率的管理方法及系统 | |
CN115801687A (zh) | 一种流量均衡方法、装置、电子设备和存储介质 | |
CN114997574A (zh) | 一种基于业务中台的配电台区弹性资源管理方法及装置 | |
CN103685404B (zh) | 网络服务系统及其更新固件的方法 |
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 |