CN112422681B - 一种跨平台分布式通讯调用方法及装置 - Google Patents

一种跨平台分布式通讯调用方法及装置 Download PDF

Info

Publication number
CN112422681B
CN112422681B CN202011294485.1A CN202011294485A CN112422681B CN 112422681 B CN112422681 B CN 112422681B CN 202011294485 A CN202011294485 A CN 202011294485A CN 112422681 B CN112422681 B CN 112422681B
Authority
CN
China
Prior art keywords
calling
distributed
reading
control center
file
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
Application number
CN202011294485.1A
Other languages
English (en)
Other versions
CN112422681A (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.)
Unihub China Information Technology Co Ltd
Original Assignee
Unihub China Information 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 Unihub China Information Technology Co Ltd filed Critical Unihub China Information Technology Co Ltd
Priority to CN202011294485.1A priority Critical patent/CN112422681B/zh
Publication of CN112422681A publication Critical patent/CN112422681A/zh
Application granted granted Critical
Publication of CN112422681B publication Critical patent/CN112422681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0631Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开一种跨平台分布式通讯调用方法及装置,其中,该方法包括:调用程序与控制中心建立TCP会话,并通过socket接口向控制中心发布调用指令,指明对应的分布式代理的地址、指令类型、指令和参数;控制中心采用多线程分别与多个分布式代理建立TCP会话,并通过socket接口转发调用报文;分布式代理根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话;控制中心在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话。该方法及装置主要实现分布式系统下,各个服务间的信号交换、指令调度和文件调度等功能。

Description

一种跨平台分布式通讯调用方法及装置
技术领域
本发明涉及分布式系统领域,尤其是一种跨平台分布式通讯调用方法及装置。
背景技术
以往产品或者功能在实现分布式多服务器间进程通讯调用,包括前个(前端+接口)与后个(后个逻辑处理)调用和后个程序之间调用时,一般使用类似服务器操作系统提供的ssh等调用方法。这类方法要求在系统部署时配置允许访问权限,而且偶尔会出现进程挂死的情况。
发明内容
为解决分布式系统中各个服务器间的互信和安全的通讯调度问题,本发明提供一种基于socket接口的跨平个(跨操作系统平个含linux、unix、win等)分布式通讯调用方法及装置,主要实现分布式系统下,各个服务间的信号交换、指令调度和文件调度等功能。
为实现上述目的,本发明采用下述技术方案:
在本发明一实施例中,提出了一种跨平台分布式通讯调用方法,该方法包括:
调用程序与控制中心建立TCP会话,发布调用指令,以报文形式通过socket接口发送给控制中心,指明对应的分布式代理的地址、指令类型、指令和参数;
控制中心采用多线程分别与多个分布式代理建立TCP会话,并通过socket接口转发调用报文;
分布式代理根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话;
控制中心在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话。
进一步地,控制中心的调度流程及规则,包括:
从shconfig.xml读取dispatcher参数,获取控制中心监听地址及端口信息,启动TCP监听;
从配置文件$SETUPDIR/nms/cfg/AgentServer.ini读取所有分布式代理的地址及类型,从shconfig.xml读取分布式代理监听端口参数AgentPort及TCP连接超时参数TCPConnectTimeout,放到内存;
接收到调用程序TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
如果调用类型为“reload”,从配置文件$SETUPDIR/nms/cfg/AgentServer.ini重新读取所有分布式代理的地址及类型装载内存,装载完成后返回消息;
从调用报文解析出分布式代理的地址,如果为IP地址,则为指定单个分布式代理;如果为ALL,则表示所有分布式代理;从内存读取所有分布式代理的类型,如果为类型编码,则为该类型所有分布式代理,从内存读取指定类型的所有分布式代理的地址;如果调用报文涉及多个分布式代理,采用多线程分别与多个采集机建立socket连接,建立socket连接时使用程序启动时从系统参数读取的TCPConnectTimeout为连接超时时间;
下发线程对于”文件下发”类型的调用、“文件上传”类型的调用,以及非“文件下发”和“文件上传”的其他类型的调用,进行不同处理;
主程序等待所有线程处理结束后,将每个采集机的返回结果按报文格式要求发送给调用程序,然后返回综合信息及结束标志<end>,并关闭和调用程序的TCP会话。
进一步地,下发线程对于”文件下发”类型的调用,进行以下处理:
解析并读取本地文件名,检查文件是否都存在,如果有不存在的文件,返回错误,将结果记录内存;
依次读取本地文件,按报文格式要求发送;
读取采集机返回结果直至对方关闭会话或超时,将结果记录内存。
进一步地,下发线程对于”文件上传”类型的调用,进行以下处理:
解析调用报文获取本地文件名,并将调用报文转发至采集机;
读取采集机返回结果,解析报文,校验返回的文件名与要求获取的文件名是否一致,生成本地文件;
读取采集机返回结果直至对方关闭会话、超时、发现报文格式异常或写本地文件异常,然后按返回调用程序的报文格式要求将结果记录内存。
进一步地,下发线程对非”文件下发”和”文件上传”的其他类型的调用,直接转发调用程序的调用报文,然后读取采集机的返回结果直至对方关闭会话或超时,将结果记录内存。
进一步地,调用程序的测试流程及规则,包括:
从任务文件task.txt中读取任务,包括任务类型,超时和任务内容;
调用socket接口,将任务发送给控制中心,等待并输出控制中心返回的任务输出。
进一步地,调用程序的监测流程及规则,包括:
判断调用参数的合法性;
从shconfig.xml获取控制中心监听地址及端口信息,获取syslog目标信息;
与控制中心建立TCP连接,向控制中心发送消息;
从控制中心读取返回结果,解析每个分布式代理的调用结果,将调用结果入到AgentServer表的AgentStatus字段,同时置AgentCheckTime为系统当前时间;
如果与控制中心的TCP会话发生异常,发出syslog进行告警;
对调用结果不为0的采集机,发出syslog进行告警。
进一步地,分布式代理的处理流程及规则,包括:
从shconfig.xml读取AgentPort参数,获取分布式代理调用监听端口信息,启动TCP监听;
接收到控制机TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
根据不同的调用类型进行不同的处理,将执行结果按报文格式要求通过socket接口发送给控制中心,然后关闭TCP会话并退出。
进一步地,分布式代理的发现流程及规则,包括:
发现采集服务器:从probehost表读取采集机信息,作为采集服务器;
发现netflow采集机:从modellicensecfg表检查是否安装了netflow模块,如果有,则连接xFlowHost与Host表,查出HostRole为采集机的主机,作为netflow采集服务器;
发现故障收集服务器:从modellicensecfg表检查是否安装了alarm模块,如果有,则读取syslogprobe表,获取故障收集服务器信息,如果多条记录的IP地址相同,则只取一个;
发现开通引擎:从modellicensecfg表检查是否安装了业务开通平台模块,如果有,则读取cfgdriverinstance表,获取开通服务器信息,如果多条记录的IP地址相同,则只取一个;
发现AAA服务器:从modellicensecfg表检查是否安装了设备AAA管理模块,如果有,则从文件$SETUPDIR/resin/config/SHNMPTacacsConfig.xml里读取AAA服务器IP信息,如果不是IP地址,则忽略;
从AgentServer表读取已有服务器信息,依次将各类型发现的服务器与已有服务器进行比较,并填入AgentServer表:
如果新发现的IP地址在已有服务器中不存在,则在AgentServer表插入记录,填写字段ServerIP,ServerType和ServerDescr,并填写CreateTime为系统当前时间;
如果AgentServer表已有此IP地址,则检查ServerType字段中是否包含此type,如果有,则跳过此记录,如果没有,则将此type以分号分隔追加到ServerType字段后,将描述也以分号分隔追加到ServerDescr字段后;
扫描已有服务器信息,如果服务器的某个类型在发现的该类型服务器中不再存在,则从类型字段中删去此类型。
在本发明一实施例中,还提出了一种跨平台分布式通讯调用装置,该装置包括:
调用程序,用于与控制中心建立TCP会话,发布调用指令,以报文形式通过socket接口发送给控制中心,指明对应的分布式代理的地址、指令类型、指令和参数;
控制中心,用于采用多线程分别与多个分布式代理建立TCP会话,并通过socket接口转发调用报文;在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话;
分布式代理,用于根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话。
进一步地,控制中心的调度流程及规则,包括:
从shconfig.xml读取dispatcher参数,获取控制中心监听地址及端口信息,启动TCP监听;
从配置文件$SETUPDIR/nms/cfg/AgentServer.ini读取所有分布式代理的地址及类型,从shconfig.xml读取分布式代理监听端口参数AgentPort及TCP连接超时参数TCPConnectTimeout,放到内存;
接收到调用程序TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
如果调用类型为“reload”,从配置文件$SETUPDIR/nms/cfg/AgentServer.ini重新读取所有分布式代理的地址及类型装载内存,装载完成后返回消息;
从调用报文解析出分布式代理的地址,如果为IP地址,则为指定单个分布式代理;如果为ALL,则表示所有分布式代理;从内存读取所有分布式代理的类型,如果为类型编码,则为该类型所有分布式代理,从内存读取指定类型的所有分布式代理的地址;如果调用报文涉及多个分布式代理,采用多线程分别与多个采集机建立socket连接,建立socket连接时使用程序启动时从系统参数读取的TCPConnectTimeout为连接超时时间;
下发线程对于”文件下发”类型的调用、“文件上传”类型的调用,以及非“文件下发”和“文件上传”的其他类型的调用,进行不同处理;
主程序等待所有线程处理结束后,将每个采集机的返回结果按报文格式要求发送给调用程序,然后返回综合信息及结束标志<end>,并关闭和调用程序的TCP会话。
进一步地,下发线程对于”文件下发”类型的调用,进行以下处理:
解析并读取本地文件名,检查文件是否都存在,如果有不存在的文件,返回错误,将结果记录内存;
依次读取本地文件,按报文格式要求发送;
读取采集机返回结果直至对方关闭会话或超时,将结果记录内存。
进一步地,下发线程对于”文件上传”类型的调用,进行以下处理:
解析调用报文获取本地文件名,并将调用报文转发至采集机;
读取采集机返回结果,解析报文,校验返回的文件名与要求获取的文件名是否一致,生成本地文件;
读取采集机返回结果直至对方关闭会话、超时、发现报文格式异常或写本地文件异常,然后按返回调用程序的报文格式要求将结果记录内存。
进一步地,下发线程对非”文件下发”和”文件上传”的其他类型的调用,直接转发调用程序的调用报文,然后读取采集机的返回结果直至对方关闭会话或超时,将结果记录内存。
进一步地,调用程序的测试流程及规则,包括:
从任务文件task.txt中读取任务,包括任务类型,超时和任务内容;
调用socket接口,将任务发送给控制中心,等待并输出控制中心返回的任务输出。
进一步地,调用程序的监测流程及规则,包括:
判断调用参数的合法性;
从shconfig.xml获取控制中心监听地址及端口信息,获取syslog目标信息;
与控制中心建立TCP连接,向控制中心发送消息;
从控制中心读取返回结果,解析每个分布式代理的调用结果,将调用结果入到AgentServer表的AgentStatus字段,同时置AgentCheckTime为系统当前时间;
如果与控制中心的TCP会话发生异常,发出syslog进行告警;
对调用结果不为0的采集机,发出syslog进行告警。
进一步地,分布式代理的处理流程及规则,包括:
从shconfig.xml读取AgentPort参数,获取分布式代理调用监听端口信息,启动TCP监听;
接收到控制机TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
根据不同的调用类型进行不同的处理,将执行结果按报文格式要求通过socket接口发送给控制中心,然后关闭TCP会话并退出。
进一步地,分布式代理的发现流程及规则,包括:
发现采集服务器:从probehost表读取采集机信息,作为采集服务器;
发现netflow采集机:从modellicensecfg表检查是否安装了netflow模块,如果有,则连接xFlowHost与Host表,查出HostRole为采集机的主机,作为netflow采集服务器;
发现故障收集服务器:从modellicensecfg表检查是否安装了alarm模块,如果有,则读取syslogprobe表,获取故障收集服务器信息,如果多条记录的IP地址相同,则只取一个;
发现开通引擎:从modellicensecfg表检查是否安装了业务开通平台模块,如果有,则读取cfgdriverinstance表,获取开通服务器信息,如果多条记录的IP地址相同,则只取一个;
发现AAA服务器:从modellicensecfg表检查是否安装了设备AAA管理模块,如果有,则从文件$SETUPDIR/resin/config/SHNMPTacacsConfig.xml里读取AAA服务器IP信息,如果不是IP地址,则忽略;
从AgentServer表读取已有服务器信息,依次将各类型发现的服务器与已有服务器进行比较,并填入AgentServer表:
如果新发现的IP地址在已有服务器中不存在,则在AgentServer表插入记录,填写字段ServerIP,ServerType和ServerDescr,并填写CreateTime为系统当前时间;
如果AgentServer表已有此IP地址,则检查ServerType字段中是否包含此type,如果有,则跳过此记录,如果没有,则将此type以分号分隔追加到ServerType字段后,将描述也以分号分隔追加到ServerDescr字段后;
扫描已有服务器信息,如果服务器的某个类型在发现的该类型服务器中不再存在,则从类型字段中删去此类型。
在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述跨平台分布式通讯调用方法。
在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行跨平台分布式通讯调用方法的计算机程序。
有益效果:
本发明基于socket接口的可信和安全通讯机制;可扩展和可伸缩的分布式多服务器通讯支持;跨服务器操作系统平台的控制和采集通讯机制;支持调用、信号和文件等支持通讯调用类型。
附图说明
图1是本发明一实施例的跨平台分布式通讯调用方法总体数据流图;
图2是本发明一实施例的文件下发调用流程图;
图3是本发明一实施例的文件上传调用流程图;
图4是本发明一实施例的远程命令调用流程图;
图5是本发明一实施例的控制中心重新装载采集机信息调用流程图;
图6是本发明一实施例的远程命令实时调用流程图;
图7是本发明一实施例的跨平台分布式通讯调用装置结构示意图;
图8是本发明一实施例的计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种跨平台分布式通讯调用方法及装置,在所有服务器,包括主应用和分布式采集机上起监听进程;采用TCP连接和多线程;主应用上起控制进程,采集机上起代理进程;在进行远程调用时,调用程序向控制中心发起socket请求,指明对应的代理的地址、请求的命令类型、命令和参数;控制中心负责转发到代理进程;代理进程负责执行相应的命令,并返回结果;结果通过控制中心返回调用程序;支持windows、linux多平台通讯调用;该功能的核心为后台daemon进程;对前端透明;有采集代理监视页面。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是本发明一实施例的跨平台分布式通讯调用方法总体数据流图。如图1所示,该方法包括:
调用程序与控制中心建立TCP会话,发布调用指令,以报文形式通过socket接口发送给控制中心,指明对应的分布式代理的地址、指令类型、指令和参数;
控制中心采用多线程分别与n个分布式代理建立TCP会话,并通过socket接口转发调用报文;
分布式代理根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话;
控制中心在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话。
分块程序实现逻辑说明:
控制中心调度程序controller.c
功能及性能描述如下表1:
表1
Figure BDA0002784952700000131
调用关系:
守护进程,后台一直运行。
处理流程及规则:
1、从shconfig.xml读取dispatcher参数,获取控制中心监听地址及端口信息,启动TCP监听;
2、从配置文件$SETUPDIR/nms/cfg/AgentServer.ini读取所有分布式代理地址及服务器类型,从shconfig.xml读取代理监听端口参数AgentPort及TCP连接超时参数TCPConnectTimeout,放到内存;
3、接收到外部程序TCP连接后,fork进程,解析调用报文;
若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
4、如果调用类型为“reload”,从配置文件$SETUPDIR/nms/cfg/AgentServer.ini重新读取所有分布式代理地址及类型装载内存,装载完成后返回消息;
5、从报文解析出分布式代理地址,如果为IP地址,则为指定单个分布式代理;如果为ALL,则表示所有分布式代理,从内存读取所有分布式代理的地址;如果为类型编码,则为该类型所有分布式代理,从内存读取指定类型的所有分布式代理的地址;单个IP、ALL和指定类型的分布式代理不能同时在一个报文中出现;如果报文涉及多个分布式代理,采用多线程分别与多台采集机建立socket连接,建立socket连接时使用程序启动时从系统参数读取的TCPConnectTimeout为连接超时时间;
6、下发线程对于”文件下发(sendfile)”类型的调用,进行以下处理:
解析并读取本地文件名,检查文件是否都存在,如果有不存在的文件,返回错误,将结果记录内存;
依次读取本地文件,按报文格式要求发送;
读取采集机返回结果直至对方关闭会话或超时,将结果记录内存;
7、下发线程对于”文件上传(getfile)”类型的调用,进行以下处理:
解析调用报文获取本地文件名,并将调用报文转发至采集机;
读取采集机返回结果,解析报文,校验返回的文件名与要求获取的文件名是否一致,生成本地文件;生成文件时可以先生成一个临时文件,边接收边写文件,不必等全接收完再生成文件,以节省内存开销,等文件完全写完并且报文格式校验正确后将临时文件mv成要求的文件名;
读取采集机返回结果直至对方关闭会话、超时、发现报文格式异常或写本地文件异常,然后按返回调用程序的报文格式要求将结果记录内存;
8、下发线程对非”文件下发(sendfile)”和”文件上传(getfile)”的其他类型的调用,直接转发调用程序的调用消息,然后读取采集机的返回结果直至对方关闭会话或超时,将结果记录内存;
9、主程序等待所有线程处理结束后,将每个采集机的返回结果按报文格式要求发送给调用程序,然后返回综合信息及结束标志<end>,并关闭和调用程序的tcp会话。
分布式代理进程collector
功能及性能描述如下表2:
表2
输入数据 -d调试级别启动–lcollog(日志文件名)
配置数据 监听端口
输出数据
调用关系:
守护进程,后台一直运行。
处理流程及规则:
从shconfig.xml读取AgentPort参数,获取分布式代理调用监听端口信息,启动TCP监听;
接收到控制中心TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
根据不同的调用类型进行不同的处理,将执行结果按报文格式要求通过socket接口发送给控制中心,然后关闭TCP会话并退出。
分布式调用测试程序tcpclient.c
(c接口callcontroller()测试程序)tcpclient.pl(perl接口callconpl()测试程序),send.pl(不通过接口的测试程序)
功能及性能描述如下表3:
表3
Figure BDA0002784952700000161
Figure BDA0002784952700000171
调用关系:
后台调用。
处理流程及规则:
从任务文件task.txt中读取任务,包括任务类型,超时和任务内容;调用socket接口,将任务发送给控制中心,等待并输出控制中心返回的任务输出。
文件格式及内容如下:
type=3
timeout=60
192.168.6.21:command=dmesg
type=1
timeout=60
192.168.6.21:localfile=/slview/nms/rpc/util.c#remotefile=/slview/nms/rpc/util.c.bak;localfile=/slivew/nms/rpc/util.h#remotefile=/slview/nms/rpc/util.h.bak
type=2
timeout=60
192.168.6.21:remotefile=/slview/nms/rpc/util.c#localfile=/slview/nms/rpc/util.c.bak;remotefile=/slivew/nms/rpc/util.h#localfile=/slview/nms/rpc/util.h.bak
分布式代理发现程序found.pl
功能及性能描述如表4:
表4
输入数据
配置数据
输出数据 AgentServer表
调用关系:
前台页面调用,或后台手动调用。
处理流程及规则:
1、发现采集服务器:从probehost表读取采集机信息,作为采集服务器;
AgentServerIP=probehost.ProbeIP
ServerType=‘COL’
ServerDescr=probehost.probename
2、发现netflow采集机:从modellicensecfg表检查是否安装了netflow模块,如果有,连接xFlowHost与Host表,查出HostRole为2(采集机)的主机,作为netflow采集服务器;
AgentServerIP=hos IPAddress
ServerType=‘NETFLOW’
ServerDescr=host.hostname
3、发现故障收集服务器:从modellicensecfg表检查是否安装了alarm模块,如果有,读取syslogprobe表,获取故障收集服务器信息,如果多条记录的IP地址相同,则只取一个;
AgentServerIP=syslogprobe.prsip
ServerType=‘ALARM’
ServerDescr=syslogprobe.prsdescr
4、发现开通引擎:从modellicensecfg表检查是否安装了业务开通平台模块,如果有,读取cfgdriverinstance表,获取开通服务器信息,如果多条记录的IP地址相同,则只取一个;
AgentServerIP=从cfgdriverinstance.url中截取IP地址部分
ServerType=‘CFG’
ServerDescr=‘开通服务器’||AgentServerIP
5、发现AAA服务器:从modellicensecfg表检查是否安装了设备AAA管理模块,如果有,从文件$SETUPDIR/resin/config/SHNMPTacacsConfig.xml里读取AAA服务器IP信息,如果不是IP地址,则忽略;
<TacServerIP>localhost</TacServerIP>
<TacServer2IP></TacServer2IP>
<TacServerNIP></TacServerNIP>
AgentServerIP=服务器IP地址
ServerType=‘AAA’
ServerDescr=‘TacServerN’(配置XML项<>中的部分)
6、从AgentServer表读取已有服务器信息,依次将各类型发现的服务器与已有服务器进行比较,并填入AgentServer表:
如果新发现的IP在已有服务器中不存在,在AgentServer表插入记录,填写字段ServerIP,ServerType,ServerDescr;并填写CreateTime为系统当前时间;
如果AgentServer表已有此IP,检查ServerType中是否包含此type,如果有则跳过此记录,如果没有,则将此type以分号分隔追加到ServerType字段后,将描述也以分号分隔追加到ServerDescr字段后;
7、扫描已有服务器信息,如果服务器的某个类型在发现的该类型服务器中不再存在,则从类型字段中删去此类型。
分布式调用监测程序moni_syslog.pl
功能及性能描述如下表5:
表5
输入数据 ALL:检测所有代理xxx.xxx.xxx.xxx检测指定IP
配置数据 监听端口、采集机地址及连接端口
输出数据 AgentServer表
调用关系:
前台页面调用,或后台手动调用。
处理流程及规则:
1、判断调用参数的合法性;
2、从shconfig.xml获取控制中心监听地址及端口信息(Dispatcher),获取syslog目标信息(MoniSyslogTarget);
3、与控制中心建立TCP连接,向控制中心发送以下消息:
type=rexec
timeout=30
[ALL或IP地址]
<msg-begin>
command=hostname
<msg-end>
4、从控制中心读取返回结果,解析每个分布式代理的调用结果(return的内容),将调用结果入到AgentServer表的AgentStatus字段,同时置AgentCheckTime为系统当前时间;
5、如果和控制中心的TCP会话发生异常(如不能建立连接,超时,报文格式异常等),发出syslog进行告警,syslog级别(alert),syslog格式:
6、ITE-ProbeMoni ControlCenter(IP地址:端口):异常原因;
7、对调用结果不为0的采集机,发syslog进行告警,syslog级别(err),syslog格式:
8、ITE-ProbeMoni Probe(IP地址):agent status abnormal:调用结果。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
为了对上述跨平台分布式通讯调用方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
分类型分布式调用实现过程:
图2是本发明一实施例的文件下发调用流程图。如图2所示:
文件下发type=sendfile
功能说明:
将文件下发到采集机的指定目录下,如果该文件已经存在,则覆盖文件。
调用指令:
文件下发调用:com.zhongying.platform.distransfer.sendfile.ReturnSendFile类的
public ReceiveFileC sendfile(String IP,intPort,SendFileC obj)方法
文件下发简化方法调用:com.zhongying.platform.distransfer.sendfile.ReturnSendFile类的
public sendfile(String ip,String localfile,Stringremotetfile)方法
参数:String IP控制中心IP
String Port控制中心端口
SendFileC obj发送文件C类――对应包含所有要发送信息:
String timeout;――超时阀值(秒)非空
ArrayList<AgentIpC>agentIp――AgentIp组可选
AgentIpC――对应多个[AgentIp]及其内容:
String IpAddress;――ip地址
ArrayList<FileC>fileobj――msg组
FileC――对应多个<msg-begin><msg-end>中间内容:
String localfile;--本地文件名
String remotetfile;--远程文件名
返回:ReceiveFileC obj接收文件C类――对应包含所有收到的信息:
ArrayList<AgentIpBackC>agentIp――AgentIp组可选
ArrayList<DispatcherC>dispatcherC――用户调用总返回结果
DispatcherC――用户调用总返回结果[Dispatcher]后面内容:
String returnResult;――返回结果ParaModel:用户调用返回结果
ArrayList<FileBackC>fileobj――msg组
AgentIpBackC――对应多个返回的[AgentIp]及其内容:
String IpAddress;--ip地址
String returnValue;--返回结果ParaModel:单任务返回结果
ArrayList<FileIpBackC>fileobj--msg组
FileIpBackC――对应多个返回的<msg-begin><msg-end>中间内容:
String filename;--远程调用文件名
String filelength;--文件长度
图3是本发明一实施例的文件上传调用流程图。如图3所示:
文件上传type=getfile
功能说明:
读取采集机的指定文件,保存到控制机指定目录,如果该文件已经存在,则覆盖。
调用指令:
文件上传调用:com.zhongying.platform.distransfer.getfile.ReturnSendFile类的
public ReceiveFileC sendfile(String IP,int Port,SendFileC obj)方法
文件上传简化方法调用:com.zhongying.platform.distransfer.getfile.ReturnSendFile类的
public String getfile(String ip,String localfile,String remotetfile)方法
参数:String IP控制中心IP
String Port控制中心端口
SendFileC obj发送文件C类――对应包含所有要发送信息:
String timeout;――超时阀值(秒)非空
ArrayList<AgentIpC>agentIp――AgentIp组可选
AgentIpC――对应多个[AgentIp]及其内容:
String IpAddress;--ip地址
ArrayList<FileC>fileobj――msg组
FileC――对应多个<msg-begin><msg-end>中间内容:
String localfile;--本地文件名
String remotetfile;--远程文件名
返回:ReceiveFileC obj接收文件C类――对应包含所有收到的信息:
ArrayList<AgentIpBackC>agentIp――AgentIp组可选
ArrayList<DispatcherC>dispatcherC――用户调用总返回结果
DispatcherC――用户调用总返回结果[Dispatcher]后面内容:
String returnResult;――返回结果ParaModel:用户调用返回结果
ArrayList<FileBackC>fileobj――msg组
AgentIpBackC――对应多个返回的[AgentIp]及其内容:
String IpAddress;--ip地址
String returnValue;--返回结果ParaModel:单任务返回结果
ArrayList<FileIpBackC>fileobj--msg组
FileIpBackC――对应多个返回的<msg-begin><msg-end>中间内容:
String filename;--远程调用文件名
String filelength;--文件长度
图4是本发明一实施例的远程命令调用流程图。如图4所示:
远程命令调用type=rexec
功能说明:
远程调用采集机上的可执行程序,获取stdout返回的信息。
调用指令:
远程命令调用:com.zhongying.platform.distransfer.rexec.ReturnSendFile类的public ReceiveFileC sendfile(String IP,int Port,SendFileC obj)方法
远程命令调用简化方法:com.zhongying.platform.distransfer.rexec.ReturnSendFile类的public String rexec(String ip,String command)方法
参数:String IP控制中心IP
String Port控制中心端口
SendFileC obj发送文件C类――对应包含所有要发送信息:
String timeout;――超时阀值(秒)非空
ArrayList<AgentIpC>agentIp――AgentIp组可选
AgentIpC――对应多个[AgentIp]及其内容:
String IpAddress;--ip地址
ArrayList<FileC>fileobj――msg组
FileC――对应多个<msg-begin><msg-end>中间内容:
String command;--要调用的命令行,注意要包含命令的全路径
返回:ReceiveFileC obj接收文件C类――对应包含所有收到的信息:
ArrayList<AgentIpBackC>agentIp――AgentIp组
可选
ArrayList<DispatcherC>dispatcherC――用户调用总返回结果
DispatcherC――用户调用总返回结果[Dispatcher]后面内容:
String returnResult;――返回结果ParaModel:用户调用返回结果
ArrayList<FileBackC>fileobj――msg组
AgentIpBackC――对应多个返回的[AgentIp]及其内容:
String IpAddress;--ip地址
String returnValue;--返回结果ParaModel:单任务返回结果
ArrayList<FileIpBackC>fileobj--msg组
FileIpBackC――对应多个返回的<msg-begin><msg-end>中间内容:
String msg;--被调用程序通过stdout输出的信息
图5是本发明一实施例的控制中心重新装载采集机信息调用流程图。如图5所示:
控制机重新装载type=reload
功能说明:
控制中心重新装载采集机信息。
调用指令:
控制中心重新装载采集机信息调用:com.zhongying.platform.distransfer.reload.ReturnSendFile类的public ReceiveFileC sendfile(String IP,int Port,SendFileC obj)方法
控制中心重新装载采集机信息调用:com.zhongying.platform.distransfer.reload.ReturnSendFile类的public String reload()方法
参数:String IP控制中心IP
String Port控制中心端口
SendFileC obj发送文件C类――对应包含所有要发送信息:
String timeout;――超时阀值(秒)非空
返回:ReceiveFileC obj接收文件C类――对应包含所有收到的信息:
String returnResult;--返回结果ParaModel:用户调用返回结果
ArrayList<FileBackC>fileobj――msg组
FileIpBackC――对应多个返回的<msg-begin><msg-end>中间内容:
String msg――被调用程序通过stdout输出的信息
图6是本发明一实施例的远程命令实时调用流程图。如图6所示:
远程命令实时调用type=rexeol
功能说明:
远程实时调用采集机上的可执行程序,获取stdout返回的信息。
调用指令:
远程命令实时调用:
远程命令实时调用方法:com.zhongying.platform.distransfer.rexeol.ReturnSendFile类的public String rexec(String ip,String command)方法
com.zhongying.platform.distransfer.rexeol.ReturnSendFile类的publicString rexecTimeout(String ip,String command)方法
参数:String IP控制中心IP
String command;--要调用的命令行,注意要包含命令的全路径
String timeout--超时(秒)
返回:InputStream result--输入流
基于同一发明构思,本发明还提出一种跨平台分布式通讯调用装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是本发明一实施例的跨平台分布式通讯调用装置结构示意图。如图7所示,该装置包括:
调用程序101,用于与控制中心建立TCP会话,发布调用指令,以报文形式通过socket接口发送给控制中心,指明对应的分布式代理的地址、指令类型、指令和参数;
调用程序101的测试流程及规则,包括:
从任务文件task.txt中读取任务,包括任务类型,超时和任务内容;
调用socket接口,将任务发送给控制中心,等待并输出控制中心返回的任务输出;
调用程序的监测流程及规则,包括:
判断调用参数的合法性;
从shconfig.xml获取控制中心监听地址及端口信息,获取syslog目标信息;
与控制中心建立TCP连接,向控制中心发送消息;
从控制中心读取返回结果,解析每个分布式代理的调用结果,将调用结果入到AgentServer表的AgentStatus字段,同时置AgentCheckTime为系统当前时间;
如果与控制中心的TCP会话发生异常,发出syslog进行告警;
对调用结果不为0的采集机,发出syslog进行告警;
控制中心102,用于采用多线程分别与多个分布式代理建立TCP会话,并通过socket接口转发调用报文;在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话;
控制中心102的调度流程及规则,包括:
从shconfig.xml读取dispatcher参数,获取控制中心监听地址及端口信息,启动TCP监听;
从配置文件$SETUPDIR/nms/cfg/AgentServer.ini读取所有分布式代理的地址及类型,从shconfig.xml读取分布式代理监听端口参数AgentPort及TCP连接超时参数TCPConnectTimeout,放到内存;
接收到调用程序TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
如果调用类型为“reload”,从配置文件$SETUPDIR/nms/cfg/AgentServer.ini重新读取所有分布式代理的地址及类型装载内存,装载完成后返回消息;
从调用报文解析出分布式代理的地址,如果为IP地址,则为指定单个分布式代理;如果为ALL,则表示所有分布式代理;从内存读取所有分布式代理的类型,如果为类型编码,则为该类型所有分布式代理,从内存读取指定类型的所有分布式代理的地址;如果调用报文涉及多个分布式代理,采用多线程分别与多个采集机建立socket连接,建立socket连接时使用程序启动时从系统参数读取的TCPConnectTimeout为连接超时时间;
下发线程对于”文件下发”类型的调用,进行以下处理:
解析并读取本地文件名,检查文件是否都存在,如果有不存在的文件,返回错误,将结果记录内存;
依次读取本地文件,按报文格式要求发送;
读取采集机返回结果直至对方关闭会话或超时,将结果记录内存;
下发线程对于”文件上传”类型的调用,进行以下处理:
解析调用报文获取本地文件名,并将调用报文转发至采集机;
读取采集机返回结果,解析报文,校验返回的文件名与要求获取的文件名是否一致,生成本地文件;
读取采集机返回结果直至对方关闭会话、超时、发现报文格式异常或写本地文件异常,然后按返回调用程序的报文格式要求将结果记录内存;
下发线程对非”文件下发”和”文件上传”的其他类型的调用,直接转发调用程序的调用报文,然后读取采集机的返回结果直至对方关闭会话或超时,将结果记录内存;
主程序等待所有线程处理结束后,将每个采集机的返回结果按报文格式要求发送给调用程序,然后返回综合信息及结束标志<end>,并关闭和调用程序的TCP会话。
分布式代理103,用于根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话;
分布式代理103的处理流程及规则,包括:
从shconfig.xml读取AgentPort参数,获取分布式代理调用监听端口信息,启动TCP监听;
接收到控制机TCP连接后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP连接并退出;
根据不同的调用类型进行不同的处理,将执行结果按报文格式要求通过socket接口发送给控制中心,然后关闭TCP会话并退出;
分布式代理103的发现流程及规则,包括:
发现采集服务器:从probehost表读取采集机信息,作为采集服务器;
发现netflow采集机:从modellicensecfg表检查是否安装了netflow模块,如果有,则连接xFlowHost与Host表,查出HostRole为采集机的主机,作为netflow采集服务器;
发现故障收集服务器:从modellicensecfg表检查是否安装了alarm模块,如果有,则读取syslogprobe表,获取故障收集服务器信息,如果多条记录的IP地址相同,则只取一个;
发现开通引擎:从modellicensecfg表检查是否安装了业务开通平台模块,如果有,则读取cfgdriverinstance表,获取开通服务器信息,如果多条记录的IP地址相同,则只取一个;
发现AAA服务器:从modellicensecfg表检查是否安装了设备AAA管理模块,如果有,则从文件$SETUPDIR/resin/config/SHNMPTacacsConfig.xml里读取AAA服务器IP信息,如果不是IP地址,则忽略;
从AgentServer表读取已有服务器信息,依次将各类型发现的服务器与已有服务器进行比较,并填入AgentServer表:
如果新发现的IP地址在已有服务器中不存在,则在AgentServer表插入记录,填写字段ServerIP,ServerType和ServerDescr,并填写CreateTime为系统当前时间;
如果AgentServer表已有此IP地址,则检查ServerType字段中是否包含此type,如果有,则跳过此记录,如果没有,则将此type以分号分隔追加到ServerType字段后,将描述也以分号分隔追加到ServerDescr字段后;
扫描已有服务器信息,如果服务器的某个类型在发现的该类型服务器中不再存在,则从类型字段中删去此类型。
应当注意,尽管在上文详细描述中提及了跨平台分布式通讯调用装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
基于前述发明构思,如图8所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述跨平台分布式通讯调用方法。
基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述跨平台分布式通讯调用方法的计算机程序。
本发明提出的跨平台分布式通讯调用方法及装置,基于socket接口的可信和安全通讯机制;可扩展和可伸缩的分布式多服务器通讯支持;跨服务器操作系统平台的控制和采集通讯机制;支持调用、信号和文件等支持通讯调用类型。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (18)

1.一种跨平台分布式通讯调用方法,其特征在于,该方法包括:
调用程序与控制中心建立TCP会话,发布调用指令,以报文形式通过socket接口发送给控制中心,指明对应的分布式代理的地址、指令类型、指令和参数;
控制中心采用多线程分别与多个分布式代理建立TCP会话,并通过socket接口转发调用报文;
分布式代理根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话;
控制中心在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话;
控制中心的调度流程及规则,包括:
从配置文件shconfig.xml读取dispatcher参数,获取控制中心监听地址及端口信息,启动TCP监听;
从配置文件$SETUPDIR/nms/cfg/AgentServer.ini读取所有分布式代理的地址及类型,从配置文件shconfig.xml读取分布式代理监听端口参数AgentPort及TCP会话超时参数TCPConnectTimeout,放到内存;
接收到调用程序TCP会话后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP会话并退出;
如果调用类型为“reload”,从配置文件$SETUPDIR/nms/cfg/AgentServer.ini重新读取所有分布式代理的地址及类型装载内存,装载完成后返回消息;
从调用报文解析出分布式代理的地址,如果为IP地址,则为指定单个分布式代理,如果为ALL,则表示所有分布式代理;从内存读取所有分布式代理的类型,如果为类型编码,则为该类型所有分布式代理,从内存读取指定类型的所有分布式代理的地址;如果调用报文涉及多个分布式代理,采用多线程分别与多个采集机建立socket连接,建立socket连接时使用程序启动时从系统参数读取的TCPConnectTimeout为连接超时时间;
下发线程对于”文件下发”类型的调用、“文件上传”类型的调用,以及非“文件下发”和“文件上传”的其他类型的调用,进行不同处理;
主程序等待所有线程处理结束后,将每个采集机的返回结果按报文格式要求发送给调用程序,然后返回综合信息及结束标志<end>,并关闭和调用程序的TCP会话。
2.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,下发线程对于”文件下发”类型的调用,进行以下处理:
解析并读取本地文件名,检查文件是否都存在,如果有不存在的文件,返回错误,将结果记录内存;
依次读取本地文件,按报文格式要求发送;
读取采集机返回结果直至对方关闭会话或超时,将结果记录内存。
3.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,下发线程对于”文件上传”类型的调用,进行以下处理:
解析调用报文获取本地文件名,并将调用报文转发至采集机;
读取采集机返回结果,解析报文,校验返回的文件名与要求获取的文件名是否一致,生成本地文件;
读取采集机返回结果直至对方关闭会话、超时、发现报文格式异常或写本地文件异常,然后按返回调用程序的报文格式要求将结果记录内存。
4.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,下发线程对非”文件下发”和”文件上传”的其他类型的调用,直接转发调用程序的调用报文,然后读取采集机的返回结果直至对方关闭会话或超时,将结果记录内存。
5.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,所述调用程序的测试流程及规则,包括:
从任务文件task.txt中读取任务,包括任务类型,超时和任务内容;
调用socket接口,将任务发送给控制中心,等待并输出控制中心返回的任务输出。
6.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,所述调用程序的监测流程及规则,包括:
判断调用参数的合法性;
从配置文件shconfig.xml获取控制中心监听地址及端口信息,获取syslog目标信息;
与控制中心建立TCP会话,向控制中心发送消息;
从控制中心读取返回结果,解析每个分布式代理的调用结果,将调用结果入到AgentServer表的AgentStatus字段,同时置AgentCheckTime为系统当前时间;
如果与控制中心的TCP会话发生异常,发出syslog进行告警;
对调用结果不为0的采集机,发出syslog进行告警。
7.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,所述分布式代理的处理流程及规则,包括:
从配置文件shconfig.xml读取AgentPort参数,获取分布式代理调用监听端口信息,启动TCP监听;
接收到控制机TCP会话后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP会话并退出;
根据不同的调用类型进行不同的处理,将执行结果按报文格式要求通过socket接口发送给控制中心,然后关闭TCP会话并退出。
8.根据权利要求1所述的跨平台分布式通讯调用方法,其特征在于,所述分布式代理的发现流程及规则,包括:
发现采集服务器:从probehost表读取采集机信息,作为采集服务器;
发现netflow采集机:从modellicensecfg表检查是否安装了netflow模块,如果有,则连接xFlowHost与Host表,查出HostRole为采集机的主机,作为netflow采集服务器;
发现故障收集服务器:从modellicensecfg表检查是否安装了alarm模块,如果有,则读取syslogprobe表,获取故障收集服务器信息, 如果多条记录的IP地址相同,则只取一个;
发现开通引擎:从modellicensecfg表检查是否安装了业务开通平台模块,如果有,则读取cfgdriverinstance表,获取开通服务器信息,如果多条记录的IP地址相同,则只取一个;
发现AAA服务器:从modellicensecfg表检查是否安装了设备AAA管理模块,如果有,则从文件$SETUPDIR/resin/config/SHNMPTacacsConfig.xml里读取AAA服务器IP信息,如果不是IP地址,则忽略;
从AgentServer表读取已有服务器信息,依次将各类型发现的服务器与已有服务器进行比较,并填入AgentServer表:
如果新发现的IP地址在已有服务器中不存在,则在AgentServer表插入记录,填写字段ServerIP,ServerType和ServerDescr,并填写CreateTime为系统当前时间;
如果AgentServer表已有此IP地址,则检查ServerType字段中是否包含此type,如果有,则跳过此记录,如果没有,则将此type以分号分隔追加到ServerType字段后,将描述也以分号分隔追加到ServerDescr字段后;
扫描已有服务器信息,如果服务器的某个类型在发现的该类型服务器中不再存在,则从类型字段中删去此类型。
9.一种跨平台分布式通讯调用装置,其特征在于,该装置包括:
调用程序,用于与控制中心建立TCP会话,发布调用指令,以报文形式通过socket接口发送给控制中心,指明对应的分布式代理的地址、指令类型、指令和参数;
控制中心,用于采用多线程分别与多个分布式代理建立TCP会话,并通过socket接口转发调用报文;在所有线程处理结束后,将每个分布式代理的返回调用结果发送给调用程序,并关闭TCP会话;
分布式代理,用于根据不同的指令类型进行不同的处理,将调用结果通过socket接口返回给控制中心,并关闭TCP会话;
控制中心的调度流程及规则,包括:
从配置文件shconfig.xml读取dispatcher参数,获取控制中心监听地址及端口信息,启动TCP监听;
从配置文件$SETUPDIR/nms/cfg/AgentServer.ini读取所有分布式代理的地址及类型,从配置文件shconfig.xml读取分布式代理监听端口参数AgentPort及TCP会话超时参数TCPConnectTimeout,放到内存;
接收到调用程序TCP会话后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP会话并退出;
如果调用类型为“reload”,从配置文件$SETUPDIR/nms/cfg/AgentServer.ini重新读取所有分布式代理的地址及类型装载内存,装载完成后返回消息;
从调用报文解析出分布式代理的地址,如果为IP地址,则为指定单个分布式代理,如果为ALL,则表示所有分布式代理;从内存读取所有分布式代理的类型,如果为类型编码,则为该类型所有分布式代理,从内存读取指定类型的所有分布式代理的地址;如果调用报文涉及多个分布式代理,采用多线程分别与多个采集机建立socket连接,建立socket连接时使用程序启动时从系统参数读取的TCPConnectTimeout为连接超时时间;
下发线程对于”文件下发”类型的调用、“文件上传”类型的调用,以及非“文件下发”和“文件上传”的其他类型的调用,进行不同处理;
主程序等待所有线程处理结束后,将每个采集机的返回结果按报文格式要求发送给调用程序,然后返回综合信息及结束标志<end>,并关闭和调用程序的TCP会话。
10.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,下发线程对于”文件下发”类型的调用,进行以下处理:
解析并读取本地文件名,检查文件是否都存在,如果有不存在的文件,返回错误,将结果记录内存;
依次读取本地文件,按报文格式要求发送;
读取采集机返回结果直至对方关闭会话或超时,将结果记录内存。
11.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,下发线程对于”文件上传”类型的调用,进行以下处理:
解析调用报文获取本地文件名,并将调用报文转发至采集机;
读取采集机返回结果,解析报文,校验返回的文件名与要求获取的文件名是否一致,生成本地文件;
读取采集机返回结果直至对方关闭会话、超时、发现报文格式异常或写本地文件异常,然后按返回调用程序的报文格式要求将结果记录内存。
12.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,下发线程对非”文件下发”和”文件上传”的其他类型的调用,直接转发调用程序的调用报文,然后读取采集机的返回结果直至对方关闭会话或超时,将结果记录内存。
13.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,所述调用程序的测试流程及规则,包括:
从任务文件task.txt中读取任务,包括任务类型,超时和任务内容;
调用socket接口,将任务发送给控制中心,等待并输出控制中心返回的任务输出。
14.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,所述调用程序的监测流程及规则,包括:
判断调用参数的合法性;
从配置文件shconfig.xml获取控制中心监听地址及端口信息,获取syslog目标信息;
与控制中心建立TCP会话,向控制中心发送消息;
从控制中心读取返回结果,解析每个分布式代理的调用结果,将调用结果入到AgentServer表的AgentStatus字段,同时置AgentCheckTime为系统当前时间;
如果与控制中心的TCP会话发生异常,发出syslog进行告警;
对调用结果不为0的采集机,发出syslog进行告警。
15.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,所述分布式代理的处理流程及规则,包括:
从配置文件shconfig.xml读取AgentPort参数,获取分布式代理调用监听端口信息,启动TCP监听;
接收到控制机TCP会话后,fork进程,解析调用报文;若发现不符合报文格式要求,返回错误信息,关闭TCP会话并退出;
根据不同的调用类型进行不同的处理,将执行结果按报文格式要求通过socket接口发送给控制中心,然后关闭TCP会话并退出。
16.根据权利要求9所述的跨平台分布式通讯调用装置,其特征在于,所述分布式代理的发现流程及规则,包括:
发现采集服务器:从probehost表读取采集机信息,作为采集服务器;
发现netflow采集机:从modellicensecfg表检查是否安装了netflow模块,如果有,则连接xFlowHost与Host表,查出HostRole为采集机的主机,作为netflow采集服务器;
发现故障收集服务器:从modellicensecfg表检查是否安装了alarm模块,如果有,则读取syslogprobe表,获取故障收集服务器信息, 如果多条记录的IP地址相同,则只取一个;
发现开通引擎:从modellicensecfg表检查是否安装了业务开通平台模块,如果有,则读取cfgdriverinstance表,获取开通服务器信息,如果多条记录的IP地址相同,则只取一个;
发现AAA服务器:从modellicensecfg表检查是否安装了设备AAA管理模块,如果有,则从文件$SETUPDIR/resin/config/SHNMPTacacsConfig.xml里读取AAA服务器IP信息,如果不是IP地址,则忽略;
从AgentServer表读取已有服务器信息,依次将各类型发现的服务器与已有服务器进行比较,并填入AgentServer表:
如果新发现的IP地址在已有服务器中不存在,则在AgentServer表插入记录,填写字段ServerIP,ServerType和ServerDescr,并填写CreateTime为系统当前时间;
如果AgentServer表已有此IP地址,则检查ServerType字段中是否包含此type,如果有,则跳过此记录,如果没有,则将此type以分号分隔追加到ServerType字段后,将描述也以分号分隔追加到ServerDescr字段后;
扫描已有服务器信息,如果服务器的某个类型在发现的该类型服务器中不再存在,则从类型字段中删去此类型。
17.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-8任一项所述方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-8任一项所述方法的计算机程序。
CN202011294485.1A 2020-11-18 2020-11-18 一种跨平台分布式通讯调用方法及装置 Active CN112422681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011294485.1A CN112422681B (zh) 2020-11-18 2020-11-18 一种跨平台分布式通讯调用方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011294485.1A CN112422681B (zh) 2020-11-18 2020-11-18 一种跨平台分布式通讯调用方法及装置

Publications (2)

Publication Number Publication Date
CN112422681A CN112422681A (zh) 2021-02-26
CN112422681B true CN112422681B (zh) 2023-01-13

Family

ID=74774064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011294485.1A Active CN112422681B (zh) 2020-11-18 2020-11-18 一种跨平台分布式通讯调用方法及装置

Country Status (1)

Country Link
CN (1) CN112422681B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032003B (zh) * 2021-04-08 2024-04-02 深圳赛安特技术服务有限公司 开发文件导出方法、装置、电子设备及计算机存储介质
CN113259485B (zh) * 2021-06-22 2021-09-17 统信软件技术有限公司 一种网络代理方法、计算设备及可读存储介质
CN113612837B (zh) * 2021-07-30 2023-08-08 杭州朗和科技有限公司 数据处理方法、装置、介质和计算设备
CN117201577B (zh) * 2023-11-07 2024-02-13 中电长城(长沙)信息技术有限公司 基于pisa的跨平台api和spi的通讯方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106301959A (zh) * 2016-10-10 2017-01-04 烽火通信科技股份有限公司 基于windows和linux平台的网关批量升级方法及系统
WO2019028673A1 (zh) * 2017-08-08 2019-02-14 深圳先进技术研究院 基于B/S架构的数据通信系统、方法、Web服务器及监控系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376969B1 (en) * 2002-12-02 2008-05-20 Arcsight, Inc. Real time monitoring and analysis of events from multiple network security devices
CN100512271C (zh) * 2004-08-31 2009-07-08 中国科学院计算技术研究所 一种终端网络环境中的分布式设备重定向系统及其方法
CN102025593B (zh) * 2009-09-21 2013-04-24 中国移动通信集团公司 分布式用户接入系统及方法
CN101799751B (zh) * 2009-12-02 2013-01-02 山东浪潮齐鲁软件产业股份有限公司 一种构建主机监控代理软件的方法
WO2012142854A1 (zh) * 2011-04-18 2012-10-26 北京新媒传信科技有限公司 一种应用服务平台系统及其实现方法
CN102546624A (zh) * 2011-12-26 2012-07-04 西北工业大学 一种网络多路入侵检测防御方法及系统
CN102694866B (zh) * 2012-06-01 2015-02-25 北京首钢自动化信息技术有限公司 一种分布式网络环境中的服务请求代理系统
CN103237035B (zh) * 2013-04-28 2015-10-28 哈尔滨工业大学 可控分布式代理平台
CN106888129A (zh) * 2017-04-20 2017-06-23 国家电网公司 一种可弹性伸缩的分布式服务管理系统及其方法
CN108804238B (zh) * 2018-03-29 2022-03-04 中国工程物理研究院计算机应用研究所 一种基于远程过程调用的软总线通信方法
CN109743411B (zh) * 2018-12-10 2022-03-01 厦门市美亚柏科信息股份有限公司 一种在分布式环境下动态调度ip代理池的方法、装置及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106301959A (zh) * 2016-10-10 2017-01-04 烽火通信科技股份有限公司 基于windows和linux平台的网关批量升级方法及系统
WO2019028673A1 (zh) * 2017-08-08 2019-02-14 深圳先进技术研究院 基于B/S架构的数据通信系统、方法、Web服务器及监控系统

Also Published As

Publication number Publication date
CN112422681A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
CN112422681B (zh) 一种跨平台分布式通讯调用方法及装置
CN112035317B (zh) 一种微服务链路监控方法、装置、设备及介质
US8713177B2 (en) Remote management of networked systems using secure modular platform
US9542302B2 (en) System and method for remote debugging of an application in an image forming apparatus over a network
CN109831318A (zh) 一种获取网络拓扑的系统、方法和服务器
US11218541B2 (en) Data storage method, storage server, and storage medium and system
WO2021088254A1 (zh) 一种用户态网络文件系统双栈访问方法、装置及设备
CN109040207B (zh) 一种访问用户态网络文件系统的方法、装置及设备
US20210026959A1 (en) Malicious File Detection Method, Device, and System
CN112398847B (zh) 一种基于TCP Socket和改进心跳机制的内网穿透方法和系统
US10499311B2 (en) Method and apparatus for implementing network sharing
US20140337471A1 (en) Migration assist system and migration assist method
CN113835836B (zh) 动态发布容器服务的系统、方法、计算机设备及介质
US8572245B1 (en) Using the TCP window size for identifying packets and debugging
CN116633775A (zh) 一种多容器网络接口的容器通信方法及系统
US8489727B2 (en) Active storage area network discovery system and method
CN113726834A (zh) 消息路由的方法、装置、系统、设备及介质
US7805733B2 (en) Software implementation of hardware platform interface
Cisco Troubleshooting Cisco Access Registrar
Cisco Troubleshooting Cisco Access Registrar
CN114338461A (zh) 一种网络连接监控方法及相关设备
Cisco Cisco StrataView Plus for Solaris Release Notes
Cisco 9.0 Version Software Release Notes Cisco StrataView Plus for Solaris
Cisco 9.0 Version Software Release Notes Cisco StrataView Plus for Solaris
CN114500681A (zh) 一种网络请求的连接方法、装置、介质及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 200000 room 702-2, No. 4811 Cao'an Road, Jiading District, Shanghai

Patentee after: CHINA UNITECHS

Address before: Room 1004-4, 10 / F, 1112 Hanggui Road, Anting Town, Jiading District, Shanghai

Patentee before: CHINA UNITECHS

CP02 Change in the address of a patent holder