CN106506490B - 一种分布式计算控制方法以及分布式计算*** - Google Patents

一种分布式计算控制方法以及分布式计算*** Download PDF

Info

Publication number
CN106506490B
CN106506490B CN201610959237.1A CN201610959237A CN106506490B CN 106506490 B CN106506490 B CN 106506490B CN 201610959237 A CN201610959237 A CN 201610959237A CN 106506490 B CN106506490 B CN 106506490B
Authority
CN
China
Prior art keywords
message
node
client
thread
url
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
CN201610959237.1A
Other languages
English (en)
Other versions
CN106506490A (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.)
Guozhi Digital Economy Shenzhen Co ltd
Original Assignee
Shenzhen Zhigaodian Intellectual Property Operation 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 Zhigaodian Intellectual Property Operation Co Ltd filed Critical Shenzhen Zhigaodian Intellectual Property Operation Co Ltd
Priority to CN201610959237.1A priority Critical patent/CN106506490B/zh
Publication of CN106506490A publication Critical patent/CN106506490A/zh
Application granted granted Critical
Publication of CN106506490B publication Critical patent/CN106506490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种分布式计算控制方法以及分布式计算***,方法包括:S1、定义节点之间通信的消息格式;S2、各节点基于消息中的目标URL或消息类型寻址:若服务器节点将消息发往客户端节点,则执行S3,若客户端节点将消息发往服务器节点,则执行S4,若客户端节点将消息发往客户端节点,则执行S5;S3、根据消息中的目标URL的节点进程ID或者目标URL的节点名称或者消息类型,找到相应连接并将消息发往客户端节点;S4、将消息中的目标URL置空后,直接发送消息至服务器节点;S5、如果消息中具有完整的目标URL且两个客户端节点的IP地址属于同一个网络,则两个客户端节点直接建立连接并发送消息,否则将消息发往服务器节点并转S3;基于本发明跨局域网的节点也可以相互通信。

Description

一种分布式计算控制方法以及分布式计算***
技术领域
本发明涉及计算机技术领域,尤其涉及一种分布式计算控制方法以及分布式计算***。
背景技术
传统的基于服务注册的分布式开发框架如RMI,CORBA等,它们的消息传递依赖IP寻址,局域网内的服务提供者只能够被同一局域网内部的使用者访问,跨局域网的服务不能互通。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种分布式计算控制方法以及分布式计算***。
本发明解决其技术问题所采用的技术方案是:构造一种分布式计算控制方法,方法包括:
S1、定义节点之间通信的消息格式:消息包括消息头和消息体,消息头包括以下字段:源URL、目标URL、消息类型,其中URL包括以下属性:IP地址、唯一标识该节点的节点进程ID和静态配置的用于标识节点类型的节点名称;
S2、各节点基于消息中的目标URL或消息类型寻址:若服务器节点将消息发往客户端节点,则执行步骤S3,若客户端节点将消息发往服务器节点,则执行步骤S4,若客户端节点将消息发往客户端节点,则执行步骤S5;
S3、服务器节点根据消息中的目标URL的节点进程ID或者目标URL的节点名称或者消息类型,找到相应连接并将消息发往客户端节点;
S4、客户端节点将消息中的目标URL置空后,直接发送消息至服务器节点;
S5、如果消息中具有完整的目标URL且两个客户端节点的IP地址属于同一个网络,则两个客户端节点直接建立连接并发送消息,否则将消息发往服务器节点并转步骤S3。
在本发明所述的分布式计算控制方法中,步骤S3包括:
S31、如果目标URL完整,则执行步骤S32,如果目标URL仅写入有节点名称,则执行步骤S33,如果目标URL为空,则执行步骤S34;
S32、根据URL中的节点进程ID从连接池中找到相应连接并发送消息,结束;
S33、从路由表中查询节点名称与消息中的目标URL中的节点名称相同的所有URL,进入步骤S35;
S34、根据消息中的消息类型,从路由表中查询支持该消息类型的所有URL,进入步骤S35;
S35、根据URL中的节点进程ID从连接池中找到相应的所有连接,随机选择其中的一个连接发送消息,如果发送失败,则选择下一个连接直至发送成功或者所有连接都尝试完毕。
在本发明所述的分布式计算控制方法中,所述IP地址包括本地IP和公网IP;
所述步骤S5具体包括:
S51、如果消息中具有完整的目标URL,则执行步骤S52,否则执行步骤S53;
S52、如果源URL和目标URL中的公网IP相同且本地IP的网段相同,或者,两个客户端节点的本地IP均分别和自身的公网IP相同,则判定两个客户端节点的IP地址属于同一个网络,两个客户端节点直接建立连接并发送消息,如果发送失败则进入步骤S53,否则,结束;
S53、将消息发往服务器节点并转步骤S3。
在本发明所述的分布式计算控制方法中,所述步骤S2之前还包括S12:客户端节点在启动后与服务器节点建立连接后,通过心跳消息把该客户端节点的URL和支持的消息类型发往服务器节点。
在本发明所述的分布式计算控制方法中,本发明还包括以下状态管理步骤:客户端节点通过心跳信息检测当前与服务器的连接是否可用以及上报自身的运行状态,如果心跳消息发送失败,则客户端重新建立一条连接至服务器,所述运行状态包括客户端当前的最大线程数、空闲线程数、已完成的任务数、失败任务数、未处理任务数、任务处理器状态、软件版本,服务器端根据运行状态计算消息分发量。
在本发明所述的分布式计算控制方法中,所述消息头还包括优先级字段,优先级字段被设置为有效的消息排列于优先队列中,优先级字段被设置为无效的消息排列于普通队列中,各节点的队列消息按照先进先出的顺序发送,且优先队列发送完毕后再发送普通队列。
在本发明所述的分布式计算控制方法中,各节点的线程池由工作中线程、空闲线程、临时线程组成,其中,工作中线程与空闲线程的线程数之和在最大线程数之内,临时线程的线程数在最大并发数之内;
本发明还包括以下线程管理步骤:当节点接收到的消息为优先级字段被设置为有效的消息时,若工作中线程达到最大线程数且临时线程未达到最大并发数,则创建临时线程,否则将消息置于本地的优先队列;其中,临时线程的任务完成后,若预设时间内没有其他待处理任务则停止该临时线程。
在本发明所述的分布式计算控制方法中,消息头还包括作为每个消息的唯一性标识的消息序列号字段、消息生存期字段和消息持久化字段,其中,对于请求-响应类型的消息,响应消息使用请求消息的消息序列号,消息转发一次消息生存期递减一,当消息生存期变为0时丢弃该消息;当节点接收到消息持久化字段被设置为有效的消息时,基于mongodb将消息保存到硬盘,当程序意外终止或者计算机断电重启后,从硬盘上恢复该消息。
在本发明所述的分布式计算控制方法中,所述方法还包括:
配置管理步骤:客户端节点启动后把自身所需要的配置项上报至服务器节点,服务器节点从配置数据库加载相应的配置项并下发回客户端节点,客户端节点针对已有本地配置参数的配置项采用本地配置参数,针对没有本地配置参数的配置项采用服务器节点返回的配置项的参数;
进程管理步骤:启动守护进程以维护计算进程的运行状态以及初始化计算节点的程序文件,守护进程与计算进程之间通过标准输入输出保持一个心跳信号,若守护进程未能检测到计算进程的心跳信号时,表明计算进程已经进入异常状态,则强行终止计算进程并重新启动计算进程;若计算进程未能检测到守护进程的心跳信号,则主动结束自身进程;
软件更新步骤:服务器节点向客户端节点的计算进程发送版本信息,版本信息包含版本号以及所有文件的数字摘要信息列表,客户端节点接收到版本信息后比较本地程序文件的数字摘要信息,找到需要更新的文件;客户端节点从服务器节点下载所有需要更新的文件,保存到一个临时的目录;客户端节点的计算进程发送消息给守护进程通知更新完毕;守护进程收到更新完毕的消息后,结束所有的计算进程,把临时目录中的程序文件合并到原有计算程序目录,合并完毕后启动原有的计算进程。
本发明还公开了一种分布式计算***,包括用于执行所述的分布式计算控制方法的服务器节点和若干的客户端节点。
实施本发明的分布式计算控制方法以及分布式计算***,具有以下有益效果:本发明采用自定义的消息格式发送消息,消息头包括源URL、目标URL、消息类型,而URL包括IP地址、节点进程ID和节点名称,对于IP地址属于同一个网络的两个客户端节点可以直接建立连接,其他情况可以通过服务器转发消息,服务器根据节点进程ID、节点名称、或者消息类型确定要建立连接的客户端节点进而发送消息,因此,跨局域网的节点也可以相互通信;
进一步地,对于请求-响应类型的消息,节点通过接收的消息中的源URL记录与其建立连接的节点的URL,并基于记录的URL确定要发送的消息的目标URL,提高消息传输的性能;消息头还包括消息持久化字段,基于Mongodb实现消息持久化,它能够使***处理很高的吞吐量,达到高并发,低延时的目的,而且在程序意外终止或者计算机断电重启后,可以从硬盘上恢复消息,防止消息丢失;消息头还包括优先级字段,优先消息排列于优先队列中可以优先发送。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明的分布式计算***的结构示意图;
图2是本发明的分布式计算控制方法流程图;
图3是守护进程与计算进程的关系图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
参考图1是本发明的分布式计算***的结构示意图,分布式计算***包括服务器节点和至少一个客户端节点。参考图2是本发明的分布式计算控制方法流程图。本发明的分布式计算控制方法,方法包括:
S1、定义节点之间通信的消息格式:消息包括消息头和消息体,消息头包括以下字段:源URL、目标URL、消息类型,其中URL包括以下属性:IP地址、唯一标识该节点的节点进程ID和静态配置的用于标识节点类型的节点名称;
S2、各节点基于消息中的目标URL或消息类型寻址:若服务器节点将消息发往客户端节点,则执行步骤S3,若客户端节点将消息发往服务器节点,则执行步骤S4,若客户端节点将消息发往客户端节点,则执行步骤S5;
S3、服务器节点根据消息中的目标URL的节点进程ID或者目标URL的节点名称或者消息类型,找到相应连接并将消息发往客户端节点;
S4、客户端节点将消息中的目标URL置空后,直接发送消息至服务器节点;
S5、如果消息中具有完整的目标URL且两个客户端节点的IP地址属于同一个网络,则两个客户端节点直接建立连接并发送消息,否则将消息发往服务器节点并转步骤S3。
下面以一个具体的实施例详细说明本发明。
本发明主要是对消息头部分进行自定义。较佳实施例中,定义的消息结构如下:
该实施例中,消息头依次包括以下字段:
消息序列号,一般记为ID,ID是每个消息的唯一性标识,由每个节点自己管理,通常使用递增式或者随机式序列。在同步通信模式下,对于请求-响应类型的消息,响应消息直接使用请求消息的序列号,以便请求节点在接收到响应消息时,能够通过消息序列号找到正在等待响应消息的线程。各节点通过接收的消息中的源URL记录与其建立连接的节点的URL,并基于记录的URL确定要发送的消息的目标URL。
源URL:即源节点地址,用来标识消息的源端地址,目标节点在发送响应消息的时候需要用到源URL。每个节点在收到其他节点发来消息时,会保存消息中的源URL,形成一个路由表。
目标URL:即目标节点地址,***将根据这个地址计算目标节点的路由,把消息发送到目标节点。
消息生存期,一般记为TTL,代表消息最大转发次数,当转发次数已经超过TTL设定的值,则丢弃该消息。比如可以将TTL是定为一个数值,转发一次就递减一次,当TTL变为0就丢弃消息。心跳消息即是设定TTL的数值为1。
优先级,用于表示该条消息是否为优先消息,当该属性设置有效的时候(例如设置为true)表示该消息为优先消息,否则为普通消息。
消息持久化,当节点接收到消息持久化字段被设置为有效的消息时(例如当该字段设置为true的时候表示该消息为持久化消息,否则为普通消息),基于mongodb将消息保存到硬盘,当程序意外终止或者计算机断电重启后,从硬盘上恢复该消息。
消息类型,可以是***定义的消息类型,如HEATBEAT,也可以是节点自定义的类型。当目标URL没有设置时,***会根据消息类型字段的内容,在所有支持该消息的节点中随机挑选一个作为目标节点,如果发送不成功,则挑选下一个节点,直到发送成功或者所有可用的节点都已经尝试过了为止。
本发明中发送消息,主要是根据目标URL的内容,下面介绍URL结构。较佳实施例中定义的URL结构如下:
较佳实施例中,URL包括以下属性:
本地IP,程序中一般记为LocalIP,如果节点在局域网内,则为局域网的IP地址;
公网IP,程序中一般记为NetIP,如果节点在局域网内,则为路由器的IP地址;
节点名称,节点名称是静态配置的,用于标识节点类型,进程重启或者IP改变后节点名称不会改变。在一个分布式***内,节点名称可以重复,节点名称的作用第一是用于寻址,第二是便于***管理员更方便的对节点进行管理。
端口号,即用于Socket连接的端口号
节点进程ID;唯一标识该节点,当一个计算机同时开了多个客户端,则使用进程ID进行区分。进程ID是个随机的字符串,在进程启动的时候生成,它在一个分布式***内是唯一存在的。
下面结合上述自定义的消息头和消息头中的URL,详细介绍本发明的寻址过程。
具体的,步骤S3包括:
S31、如果目标URL完整,则执行步骤S32,如果目标URL仅写入有节点名称,则执行步骤S33,如果目标URL为空,则执行步骤S34;
S32、根据URL中的节点进程ID从连接池中找到相应连接并发送消息,结束;
S33、从路由表中查询节点名称与消息中的目标URL中的节点名称相同的所有URL,进入步骤S35;
S34、根据消息中的消息类型,从路由表中查询支持该消息类型的所有URL,进入步骤S35;
S35、根据URL中的节点进程ID从连接池中找到相应的所有连接,随机选择其中的一个连接发送消息,如果发送失败,则选择下一个连接直至发送成功或者所有连接都尝试完毕。
可见,服务器到客户端可以实现三种方式的寻址。第一种是直接基于目标URL中的节点进程ID寻址,第二种是在第一种方式无法实现时,基于目标URL的节点名称寻址,第三种是在前面两种都无法实现时,基于消息类型寻址。
由于上述步骤中,服务器需知晓各客户端节点的URL、消息类型才能实现寻址,为此,客户端节点在启动后与服务器节点建立连接后,通过心跳消息把该客户端节点的URL和支持的消息类型发往服务器节点。如下是心跳消息的结构示意图:
心跳信息是发往服务器,所以目标URL不用填,为空地址。节点的URL通过源URL告知服务器,而节点支持的消息类型放在消息体中告知服务器。
具体的,所述步骤S5具体包括:
S51、如果消息中具有完整的目标URL,则执行步骤S52,否则执行步骤S53;
S52、如果源URL和目标URL中的公网IP相同且本地IP的网段相同,或者,两个客户端节点的本地IP均分别和自身的公网IP相同,则判定两个客户端节点的IP地址属于同一个网络,两个客户端节点直接建立连接并发送消息,如果发送失败则进入步骤S53,否则,结束;
S53、将消息发往服务器节点并转步骤S3。
步骤S52中,判定两个客户端节点的IP地址属于同一个网络分为了两种情况:
1)、源URL和目标URL中的公网IP相同且本地IP的网段相同,可认为它们处于同一个网络,例如:
节点1:NetIP=183.14.227.144LocalIP=192.168.2.101
节点2:NetIP=183.14.227.144LocalIP=192.168.2.6
2)、节点的本地IP和自身的公网IP相同,可认为该节点处于公网环境下,如果两个节点都处于公网环境下,则认为它们处于同一个网络。例如:
节点1:NetIP=183.14.227.144LocalIP=183.14.227.144
节点2:NetIP=183.14.55.165LocalIP=183.14.55.165
另外,本发明还对***服务方面做了一些改进,具体包括:状态管理步骤、线程管理步骤、配置管理步骤、进程管理步骤、软件更新步骤。
状态管理步骤:
上述提到的心跳信息主要是上报节点的URL和支持的消息类型,进一步的,还可以基于心跳信息进行状态管理,具体为:客户端节点通过心跳信息检测当前与服务器的连接是否可用以及上报自身的运行状态,如果心跳消息发送失败,则客户端重新建立一条连接至服务器,所述运行状态包括客户端当前的最大线程数、空闲线程数、已完成的任务数、失败任务数、未处理任务数、任务处理器状态、软件版本,服务器端根据运行状态计算消息分发量。
由于客户端节点在启动后会主动连接到服务器,其通过心跳消息确保连接一直保持,所以不管客户端是否在局域网内,服务器都可以随时发送消息给客户端。服务器端根据这些状态计算消息分发量;另外,运行状态也给后台管理页面提供数据,供运维人员实时查看每个节点的运行状态。
线程管理步骤:
各节点的线程池由工作中线程、空闲线程、临时线程组成,其中,工作中线程与空闲线程的线程数之和在最大线程数之内,临时线程的线程数在最大并发数之内;线程管理步骤主要包括:当节点接收到的消息为优先级字段被设置为有效的消息时,若工作中线程达到最大线程数且临时线程未达到最大并发数,则创建临时线程,否则将消息置于本地的优先队列;其中,临时线程的任务完成后,若预设时间内没有其他待处理任务则停止该临时线程。
配置管理步骤:
作为分布式***,配置项的集中式管理必不可少,本发明的分布式节点支持远程配置以及运行时动态配置。配置管理步骤具体包括:客户端节点启动后把自身所需要的配置项上报至服务器节点,服务器节点从配置数据库加载相应的配置项并下发回客户端节点,客户端节点针对已有本地配置参数的配置项采用本地配置参数,针对没有本地配置参数的配置项采用服务器节点返回的配置项的参数。即,配置项采用层叠式管理,分为两层:服务器节点下发的全局配置->客户端节点本地的私有配置,私有配置优先于全局配置。一旦全局配置改动,服务器将会向所有客户端广播,客户端无需重启即可生效配置项。
进程管理步骤:
分布式***通常都是工作在无人值守的环境下,往往是由于各种客观的原因,计算程序总会存在一些bug,所以在长时间运行后因为累积的错误而导致程序崩溃。为了能够达到24小时无人值守运行,除了在测试环节严格把关外,还可以在运行时忙羊补牢,为此本发明引入了守护进程,如图3所示。进程管理步骤具体包括:启动守护进程以维护计算进程的运行状态以及初始化计算节点的程序文件,守护进程与计算进程之间通过标准输入输出保持一个心跳信号,若守护进程未能检测到计算进程的心跳信号时,则强行终止计算进程并重新启动计算进程;若计算进程未能检测到守护进程的心跳信号,则主动结束自身进程;
软件更新步骤:
对于一个分布式计算***,软件通常处于一个快速更新的状态,应用程序在运行时是无法修改自身的程序文件,而守护进程没有通信功能,不能够从服务器获得更新信息,所以本发明采用计算进程与守护进程协作完成的方式进行软件更新。为此,软件更新步骤具体包括:服务器节点向客户端节点的计算进程发送版本信息,版本信息包含版本号以及所有文件的数字摘要信息(MD5)列表,客户端节点接收到版本信息后比较本地程序文件的数字摘要信息,找到需要更新的文件;客户端节点从服务器节点下载所有需要更新的文件,保存到一个临时的目录;客户端节点的计算进程发送消息给守护进程通知更新完毕;守护进程收到更新完毕的消息后,结束所有的计算进程,把临时目录中的程序文件合并到原有计算程序目录,合并完毕后启动原有的计算进程。
随着分布式***中需要处理的数据越来越庞大,需要投入的计算机也越来越多,这些计算机之间互相协作越来越困难,基于本发明的方法,可以实现一套灵活性和扩展性很高的分布式计算***,以软件包的方式嵌入到各种类型的应用程序,从而达到应用程序之间数据互通,协同工作目的,原有的应用不需要改变原来的框架,只需要引入相关的软件包,即可轻松接入本发明的分布式计算***。
综上所述,实施本发明的分布式计算控制方法以及分布式计算***,具有以下有益效果:本发明采用自定义的消息格式发送消息,消息头包括源URL、目标URL、消息类型,而URL包括IP地址、节点进程ID和节点名称,对于IP地址属于同一个网络的两个客户端节点可以直接建立连接,其他情况可以通过服务器转发消息,服务器根据节点进程ID、节点名称、或者消息类型确定要建立连接的客户端节点进而发送消息,因此,跨局域网的节点也可以相互通信;进一步地,对于请求-响应类型的消息,节点通过接收的消息中的源URL记录与其建立连接的节点的URL,并基于记录的URL确定要发送的消息的目标URL,提高消息传输的性能;消息头还包括消息持久化字段,基于Mongodb实现消息持久化,它能够使***处理很高的吞吐量,达到高并发,低延时的目的,而且在程序意外终止或者计算机断电重启后,可以从硬盘上恢复消息,防止消息丢失;消息头还包括优先级字段,优先消息排列于优先队列中可以优先发送。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (9)

1.一种分布式计算控制方法,其特征在于,方法包括:
S1、定义节点之间通信的消息格式:消息包括消息头和消息体,消息头包括以下字段:源URL、目标URL、消息类型,其中URL包括以下属性:IP地址、唯一标识该节点的节点进程ID和静态配置的用于标识节点类型的节点名称;
S2、各节点基于消息中的目标URL或消息类型寻址:若服务器节点将消息发往客户端节点,则执行步骤S3,若客户端节点将消息发往服务器节点,则执行步骤S4,若客户端节点将消息发往客户端节点,则执行步骤S5;
S3、服务器节点根据消息中的目标URL的节点进程ID或者目标URL的节点名称或者消息类型,找到相应连接并将消息发往客户端节点;
S4、客户端节点将消息中的目标URL置空后,直接发送消息至服务器节点;
S5、如果消息中具有完整的目标URL且两个客户端节点的IP地址属于同一个网络,则两个客户端节点直接建立连接并发送消息,否则将消息发往服务器节点并转步骤S3;
其中,步骤S3包括:
S31、如果目标URL完整,则执行步骤S32,如果目标URL仅写入有节点名称,则执行步骤S33,如果目标URL为空,则执行步骤S34;
S32、根据URL中的节点进程ID从连接池中找到相应连接并发送消息,结束;
S33、从路由表中查询节点名称与消息中的目标URL中的节点名称相同的所有URL,进入步骤S35;
S34、根据消息中的消息类型,从路由表中查询支持该消息类型的所有URL,进入步骤S35;
S35、根据URL中的节点进程ID从连接池中找到相应的所有连接,随机选择其中的一个连接发送消息,如果发送失败,则选择下一个连接直至消息发送成功或者所有连接都尝试完毕。
2.根据权利要求1所述的分布式计算控制方法,其特征在于,所述IP地址包括本地IP和公网IP;
所述步骤S5具体包括:
S51、如果消息中具有完整的目标URL,则执行步骤S52,否则执行步骤S53;
S52、如果源URL和目标URL中的公网IP相同且本地IP的网段相同,或者两个客户端节点的本地IP均分别和自身的公网IP相同,则判定两个客户端节点的IP地址属于同一个网络,两个客户端节点直接建立连接并发送消息,如果发送失败则进入步骤S53,否则,结束;
S53、将消息发往服务器节点并转步骤S3。
3.根据权利要求1所述的分布式计算控制方法,其特征在于,所述步骤S2之前还包括S12:客户端节点在启动后与服务器节点建立连接后,通过心跳消息把该客户端节点的URL和支持的消息类型发往服务器节点。
4.根据权利要求3所述的分布式计算控制方法,其特征在于,本方法还包括以下状态管理步骤:客户端节点通过心跳信息检测当前与服务器的连接是否可用以及上报自身的运行状态,如果心跳消息发送失败,则客户端重新建立一条连接至服务器,所述运行状态包括客户端当前的最大线程数、空闲线程数、已完成的任务数、失败任务数、未处理任务数、任务处理器状态、软件版本,服务器端用于根据运行状态计算消息分发量。
5.根据权利要求1所述的分布式计算控制方法,其特征在于,所述消息头还包括优先级字段,优先级字段被设置为有效的消息排列于优先队列中,优先级字段被设置为无效的消息排列于普通队列中,各节点的队列消息按照先进先出的顺序发送,且优先队列发送完毕后再发送普通队列。
6.根据权利要求5所述的分布式计算控制方法,其特征在于,各节点的线程池由工作中线程、空闲线程、临时线程组成,其中,工作中线程与空闲线程的线程数之和在最大线程数之内,临时线程的线程数在最大并发数之内;
本方法还包括以下线程管理步骤:当节点接收到的消息为优先级字段被设置为有效的消息时,若工作中线程达到最大线程数且临时线程未达到最大并发数,则创建临时线程,否则将消息置于本地的优先队列;其中,临时线程的任务完成后,若预设时间内没有其他待处理任务则停止该临时线程。
7.根据权利要求1所述的分布式计算控制方法,其特征在于,消息头还包括作为每个消息的唯一性标识的消息序列号字段、消息生存期字段和消息持久化字段,其中,对于请求-响应类型的消息,响应消息使用请求消息的消息序列号,消息转发一次消息生存期递减一,当消息生存期变为0时丢弃该消息;当节点接收到消息持久化字段被设置为有效的消息时,基于分布式文件存储的数据库mongodb将消息保存到硬盘,当程序意外终止或者计算机断电重启后,从硬盘上恢复该消息。
8.根据权利要求1所述的分布式计算控制方法,其特征在于,所述方法还包括:
配置管理步骤:客户端节点启动后把自身所需要的配置项上报至服务器节点,服务器节点从配置数据库加载相应的配置项并下发回客户端节点,客户端节点针对已有本地配置参数的配置项采用本地配置参数,针对没有本地配置参数的配置项采用服务器节点返回的配置项的参数;
进程管理步骤:启动守护进程以维护计算进程的运行状态以及初始化计算节点的程序文件,守护进程与计算进程之间通过标准输入输出保持一个心跳信号,若守护进程未能检测到计算进程的心跳信号时,则终止计算进程并重新启动计算进程;若计算进程未能检测到守护进程的心跳信号,则主动结束自身进程;
软件更新步骤:服务器节点向客户端节点的计算进程发送版本信息,版本信息包含版本号以及所有文件的数字摘要信息列表,客户端节点接收到版本信息后比较本地程序文件的数字摘要信息,找到需要更新的文件;客户端节点从服务器节点下载所有需要更新的文件,并保存到一个临时的目录;客户端节点的计算进程发送消息给守护进程通知更新完毕;守护进程收到更新完毕的消息后,结束所有的计算进程,把临时目录中的程序文件合并到原有计算程序目录,合并完毕后启动原有的计算进程。
9.一种分布式计算***,其特征在于,包括用于执行权利要求1-8任一项所述的分布式计算控制方法的服务器节点和若干的客户端节点。
CN201610959237.1A 2016-11-03 2016-11-03 一种分布式计算控制方法以及分布式计算*** Active CN106506490B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610959237.1A CN106506490B (zh) 2016-11-03 2016-11-03 一种分布式计算控制方法以及分布式计算***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610959237.1A CN106506490B (zh) 2016-11-03 2016-11-03 一种分布式计算控制方法以及分布式计算***

Publications (2)

Publication Number Publication Date
CN106506490A CN106506490A (zh) 2017-03-15
CN106506490B true CN106506490B (zh) 2019-07-09

Family

ID=58322484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610959237.1A Active CN106506490B (zh) 2016-11-03 2016-11-03 一种分布式计算控制方法以及分布式计算***

Country Status (1)

Country Link
CN (1) CN106506490B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402806B (zh) * 2017-04-20 2020-08-18 阿里巴巴集团控股有限公司 分布式文件架构的任务处理方法和装置
CN109426574B (zh) * 2017-08-31 2022-04-05 华为技术有限公司 分布式计算***,分布式计算***中数据传输方法和装置
CN107832165A (zh) * 2017-11-23 2018-03-23 国云科技股份有限公司 一种提升分布式***处理请求稳定性的方法
CN108768715A (zh) * 2018-05-22 2018-11-06 烽火通信科技股份有限公司 接入网管的业务配置适配方法及***
CN109274641A (zh) * 2018-08-09 2019-01-25 广东神马搜索科技有限公司 客户端与服务节点之间的连接方法和装置、计算设备和存储介质
CN110365754A (zh) * 2019-06-28 2019-10-22 苏州浪潮智能科技有限公司 一种分布式文件传输存储方法、设备以及存储介质
CN111372143A (zh) * 2019-12-26 2020-07-03 视联动力信息技术股份有限公司 信令交互方法、装置及可读存储介质
CN111562990B (zh) * 2020-07-15 2020-10-27 北京东方通软件有限公司 一种基于消息的轻量级无服务器计算方法
CN114205889B (zh) * 2021-12-09 2023-10-20 中山大学 一种基于Zenoh的跨局域网分布式***内通讯方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001050754A1 (de) * 1999-12-30 2001-07-12 Swisscom Mobile Ag Verfahren für die übermittlung von bilddaten
CN101771632A (zh) * 2008-12-29 2010-07-07 厦门雅迅网络股份有限公司 一种跨局域网***间通信的方法
CN102947824A (zh) * 2010-06-11 2013-02-27 迪内希·阿南德·尼丁 使用关键字标识符对信息进行寻址和访问的***和方法
CN103002001A (zh) * 2011-09-08 2013-03-27 宏伍工作室公司 用于分布对等式通信的***、方法和媒体
CN104052723A (zh) * 2013-03-15 2014-09-17 联想(北京)有限公司 信息处理方法和服务器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001050754A1 (de) * 1999-12-30 2001-07-12 Swisscom Mobile Ag Verfahren für die übermittlung von bilddaten
CN101771632A (zh) * 2008-12-29 2010-07-07 厦门雅迅网络股份有限公司 一种跨局域网***间通信的方法
CN102947824A (zh) * 2010-06-11 2013-02-27 迪内希·阿南德·尼丁 使用关键字标识符对信息进行寻址和访问的***和方法
CN103002001A (zh) * 2011-09-08 2013-03-27 宏伍工作室公司 用于分布对等式通信的***、方法和媒体
CN104052723A (zh) * 2013-03-15 2014-09-17 联想(北京)有限公司 信息处理方法和服务器

Also Published As

Publication number Publication date
CN106506490A (zh) 2017-03-15

Similar Documents

Publication Publication Date Title
CN106506490B (zh) 一种分布式计算控制方法以及分布式计算***
US7870230B2 (en) Policy-based cluster quorum determination
US20060184672A1 (en) Communication channels in a storage network
JP4794143B2 (ja) 通知ボンドを使用してキャッシュオブジェクトを管理するためのシステムおよび方法
US9367261B2 (en) Computer system, data management method and data management program
JP2007503628A (ja) クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知
CN103312624B (zh) 一种消息队列服务***和方法
US20100057867A1 (en) Method and System for message processing
CN112328421B (zh) 一种***故障处理方法、装置、计算机设备和存储介质
US20110208796A1 (en) Using distributed queues in an overlay network
CN109714239B (zh) 一种管理消息的下发方法、vnfm设备和服务器
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
CN101771723A (zh) 数据同步方法
CN108880885B (zh) 一种报文处理方法及装置
US8223756B2 (en) Network device and computer product
KR101920630B1 (ko) 단말을 서버에 할당하고 단말로의 효율적인 메시징을 위한 시스템 및 방법
US8117181B2 (en) System for notification of group membership changes in directory service
JP2002108817A (ja) 共用データベースによるアベイラビリティ・モニタリング方法
EP3570169A1 (en) Method and system for processing device failure
KR101301447B1 (ko) 독립적인 메시지 저장소 및 메시지 전송 에이전트
US9852031B2 (en) Computer system and method of identifying a failure
WO2019178839A1 (zh) 为分布式应用创建一致性快照的方法、装置和分布式***
JP2004302564A (ja) ネームサービス提供方法及びその実施装置並びにその処理プログラム
US20050240609A1 (en) Method and apparatus for setting storage groups
US10691359B1 (en) Messaging delivery system with last message queue

Legal Events

Date Code Title Description
C06 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
CP01 Change in the name or title of a patent holder

Address after: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Patentee after: Zhigaogao Intellectual Property Group Co.,Ltd.

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Patentee before: SHENZHEN ZHIGAODIAN INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230105

Address after: 518064 109, Building 15, Block B, Building 5, No. 54, Xingnan Road, Nanyou Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Province

Patentee after: Guozhi Digital Economy (Shenzhen) Co.,Ltd.

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Patentee before: Zhigaogao Intellectual Property Group Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230428

Address after: Room D504-507, Zhejiang University Science and Technology Park, No. 698 Jingdong Avenue, Nanchang High tech Industrial Development Zone, Nanchang City, Jiangxi Province, 330096

Patentee after: Jiangxi Zhichan Big Data Co.,Ltd.

Address before: 518064 109, Building 15, Block B, Building 5, No. 54, Xingnan Road, Nanyou Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Province

Patentee before: Guozhi Digital Economy (Shenzhen) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231227

Address after: 518000 Room 109, Building 15, Nanyou District B, Building 5, No. 54, Xingnan Road, Nanyou Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong

Patentee after: Guozhi Digital Economy (Shenzhen) Co.,Ltd.

Address before: Room D504-507, Zhejiang University Science and Technology Park, No. 698 Jingdong Avenue, Nanchang High tech Industrial Development Zone, Nanchang City, Jiangxi Province, 330096

Patentee before: Jiangxi Zhichan Big Data Co.,Ltd.