一种分布式代理的链路复用的方法技术

技术编号:15695509 阅读:116 留言:0更新日期:2017-06-24 10:59
本发明专利技术涉及一种分布式代理的链路复用的方法,不同区域调度机构使用动态代理服务形成分布式代理,本地客户端访问异地调度机构的应用,两个代理服务之间建立两条TCP链路,分别为正向链路和反向链路,创建一个会话,会话的请求报文通过正向链路传输至异地调度机构的动态代理服务,会话的响应报文通过反向链路传输至本地调度机构的动态代理服务;当异地调度机构的客户端访问本地的应用时,分布式代理创建另一个会话,并使用相同TCP链路。本发明专利技术在共享链路的模式下,两个不同调度机构间理论上只存在两条TCP连接,以支持代理间的双向通信,提高了不同地域、不同级别调度机构信息交互的效率,提高了电力系统运行的安全性。

【技术实现步骤摘要】
一种分布式代理的链路复用的方法
本专利技术涉及电力系统通信
,特别是涉及一种分布式代理的链路复用的方法。
技术介绍
近期特高压建设的快速推进,区域间电网联系更加密切,一体化调度的特征日趋明显。智能电网调度控制系统中需要跨机构进行数据交互的进程越来越多,所以不同调度机构代理间存在大量TCP连接。远程服务代理是智能电网调度控制系统中的一个通讯基础模块,可以实现不同调度机构或者不同区之间的数据交互,为构建广域全景的智能电网调度系统提供进程间通信的基础设施。目前远程服务代理已经在国、分、省三级调控机构实现了部署,支撑了大量的调度业务,包括远程画面浏览、远程数据库访问、告警信息远程推送等。现有技术中,代理采用独占链路模式,调度机构A的客户端访问调度机构B服务的过程为,客户端先与本地代理建立TCP连接,本地代理与远程代理建立TCP连接,远程代理通过调度B的服务总线连接服务程序。服务程序的响应报文通过远程代理转发给本地代理,再由本地代理回发给客户端。每有一个的客户端访问服务,就要建立1条TCP连接。在当前独占链路模式下,TCP连接占用了系统大量的连接句柄、CPU、内存、网络等资源,严重影响代理程序的稳定运行。因此,目前急需一种共享链路的方法,两个不同调度机构间理论上只存在两条TCP连接,使分布式代理更加稳定、高效地运行。
技术实现思路
为解决上述技术问题,在共享链路的模式下,两个不同调度机构间理论上只存在两条TCP连接,以支持代理间的双向通信。跨区域的客户端和服务程序以逻辑会话的形式进行数据交互,不同的会话复用一条物理TCP链路。共享链路模式可以极大程度降低不同区域间代理的连接数,从而降低代理程序的负荷。为实现上述专利技术目的,本专利技术提供一种加强分布式代理运行稳定性和高效性的链路复用方法。本专利技术解决其技术问题是采取以下技术方案实现的:一种分布式代理的链路复用的方法,不同区域调度机构使用动态代理服务形成分布式代理,本地客户端访问异地调度机构的应用时,本地代理服务作为输出代理,异地代理服务作为输入代理,分布式代理在两个代理服务之间建立两条TCP链路,分别为正向链路和反向链路,并创建一个会话,会话的请求报文通过正向链路传输至异地调度机构的动态代理服务,会话的响应报文通过反向链路传输至本地调度机构的动态代理服务;当所述异地调度机构的客户端访问本地的应用时,分布式代理创建另一个会话,会话的请求报文通过所述反向链路传输至本地调度机构的动态代理服务,会话的响应报文通过所述正向链路传输至异地调度机构的动态代理服务;所述TCP链路为长连接,建立后不会主动关闭。进一步地,所述输出代理包括客户端处理模块、会话数据缓存模块和数据转发模块,其中,客户端处理模块监听客户端请求,如果有客户端请求则创建线程处理该请求,将客户端请求按照代理会话协议ASP重新封装报文,更新到输入缓存,等待输出缓存的信号;会话数据缓存模块存储本地动态代理服务同异地调度机构间的会话数据,所述会话数据包括客户端的请求报文会话数据、服务端的响应报文和控制报文的会话数据;数据转发模块包括若干收发数据的工作线程和链路管理线程,工作线程收发一个地区内的会话数据,链路管理线程对工作线程进行管理。进一步地,所述输入代理包括数据转发模块、会话缓存模块和服务端处理模块,所述数据转发模块接收客户端的请求数据,转发至服务端处理模块,所述服务端处理模块通过服务线程与应用程序建立连接,服务线程将请求转发给应用程序,并将应用程序的响应报文更新至会话缓存的响应缓存区。进一步地,所述代理会话协议ASP保证代理两端准确识别每一个数据报文的来源、类型及目的,并传输控制命令及错误信息,所述报文格式由依次顺序的设定特定字节长度的会话编号、区域号、服务号、报文类型、优先级、控制位、错误号和报文长度组成。进一步地,所述客户端处理模块包括客户端监听器和线程池,所述线程池有若干个客户端工作线程cworker,客户端监听器负责实时监听客户端请求,当有新的客户端请求时,所述监听器从线程池中分配一个cworker线程响应所述新的客户端,cworker线程与客户端建立连接后,接受客户端报文,并按照代理会话协议ASP封装客户端报文,放到相应区域的会话缓存区中。进一步地,所述服务端处理模块包括若干个服务端工作线程sworker,服务端工作线程收到数据传输模块转发的请求报文后,通过解析代理会话协议ASP头部选择获取应用程序,并将请求报文发送给响应的应用程序,然后获取应用程序响应报文后将响应报文封装成代理会话协议ASP报文暂存到响应缓存区中。进一步地,所述数据转发模块由若干组数据传输线程组成,将响应的代理会话协议ASP报文发送到指定区域。进一步地,异常处理的机制,客户端和远程服务器通过协议报文共享异常信息,检测到异常情况后将错误编号更新到代理会话协议ASP的头部,并通知异常相应的模块。本专利技术的优点和积极效果是:1、本专利技术在共享链路的模式下,两个不同调度机构间理论上只存在两条TCP连接,以支持代理间的双向通信,提高了不同地域、不同级别调度机构信息交互的效率,提高了电力系统运行的安全性。2、本专利技术通过链路复用方法改进后,分布式代理更加稳定、运行效率更高,可以支持更高的并发度,同时大大减少了程序运行时系统资源的占用率。附图说明图1为本专利技术分布式代理链路复用的原理示意图;图2为本专利技术分布式代理链路复用信息传输的结构示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,下面结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的结构图及具体实施例仅用以解释本专利技术,并不用于限定本专利技术。以下结合附图对本专利技术实施例作进一步详述:本专利技术提供了一种分布式代理的链路复用的方法,图1为本专利技术分布式代理链路复用的原理示意图,如图1所示,链路复用的总体思路是用逻辑会话替代物理链路,客户端与远程服务间通过会话进行通信,两个调度机构间的每个传输方向的所有会话复用一条物理链路。调度A的客户端C1访问调度B的S1应用时,代理会为C1、B1之间的通讯创建一个会话1(session1),同时建立AB、BA两条TCP链路,然后session1的请求报文通过AB链路传输,session1的响应报文通过BA链路传输。此时如果客户端C2要访问调度机构B的S2应用,代理会再创建会话session2,session2的请求报文同session1的请求报文复用AB链路,session1和session2的响应报文复用BA链路。代理之间TCP链路为长连接,建立后不会主动关闭。图2为本专利技术分布式代理链路复用信息传输的结构示意图,信息的传输如图2所示,代理主要通过引入会话机制实现链路复用功能支撑链路共享模式的输出代理主要由客户端处理模块、会话数据缓存模块、数据转发模块三部分组成。客户端处理模块负责监听客户端请求,如果有客户端请求则创建线程处理该请求。具体为将客户端请求按照代理会话协议(Agentsessionprotocol,ASP)重新封装报文并将其更新到输入缓存,同时等待输出缓存的信号量。会话数据缓存主要用于存储本地代理同各调度机构间的会话数据,包括客户端的请求报文、服务端的响应报文和控制报文,分别储在请求缓存和响应缓存。数据转发模块包括N个负责收发数据本文档来自技高网...
一种分布式代理的链路复用的方法

【技术保护点】
一种分布式代理的链路复用的方法,其特征在于,不同区域调度机构使用动态代理服务形成分布式代理,本地客户端访问异地调度机构的应用时,本地代理服务作为输出代理,异地代理服务作为输入代理,分布式代理在两个代理服务之间建立两条TCP链路,分别为正向链路和反向链路,并创建一个会话,会话的请求报文通过正向链路传输至异地调度机构的动态代理服务,会话的响应报文通过反向链路传输至本地调度机构的动态代理服务;当所述异地调度机构的客户端访问本地的应用时,分布式代理创建另一个会话,会话的请求报文通过所述反向链路传输至本地调度机构的动态代理服务,会话的响应报文通过所述正向链路传输至异地调度机构的动态代理服务;所述TCP链路为长连接,建立后不会主动关闭。

【技术特征摘要】
1.一种分布式代理的链路复用的方法,其特征在于,不同区域调度机构使用动态代理服务形成分布式代理,本地客户端访问异地调度机构的应用时,本地代理服务作为输出代理,异地代理服务作为输入代理,分布式代理在两个代理服务之间建立两条TCP链路,分别为正向链路和反向链路,并创建一个会话,会话的请求报文通过正向链路传输至异地调度机构的动态代理服务,会话的响应报文通过反向链路传输至本地调度机构的动态代理服务;当所述异地调度机构的客户端访问本地的应用时,分布式代理创建另一个会话,会话的请求报文通过所述反向链路传输至本地调度机构的动态代理服务,会话的响应报文通过所述正向链路传输至异地调度机构的动态代理服务;所述TCP链路为长连接,建立后不会主动关闭。2.根据权利要求1所述的分布式代理的链路复用的方法,其特征在于:所述输出代理包括客户端处理模块、会话数据缓存模块和数据转发模块,其中,客户端处理模块监听客户端请求,如果有客户端请求则创建线程处理该请求,将客户端请求按照代理会话协议ASP重新封装报文,更新到输入缓存,等待输出缓存的信号;会话数据缓存模块存储本地动态代理服务同异地调度机构间的会话数据,所述会话数据包括客户端的请求报文会话数据、服务端的响应报文和控制报文的会话数据;数据转发模块包括若干收发数据的工作线程和链路管理线程,工作线程收发一个地区内的会话数据,链路管理线程对工作线程进行管理。3.根据权利要求1所述的分布式代理的链路复用的方法,其特征在于:所述输入代理包括数据转发模块、会话缓存模块和服务端处理模块,所述数据转发模块接收客户端的请求数据,转发至服务端处理模块,所述服务端处理模块通过服务线程与应用程序建立连接,服务线程将请求转发给应用...

【专利技术属性】
技术研发人员:张志君厉启鹏郭凌旭叶飞王梓马云龙姜宁王恒范广民梅峥李西太王跃
申请(专利权)人:国网天津市电力公司国家电网公司北京科东电力控制系统有限责任公司南京南瑞集团公司
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1