CN104765621B - 一种在集群节点中部署程序的方法和*** - Google Patents
一种在集群节点中部署程序的方法和*** Download PDFInfo
- Publication number
- CN104765621B CN104765621B CN201410001336.XA CN201410001336A CN104765621B CN 104765621 B CN104765621 B CN 104765621B CN 201410001336 A CN201410001336 A CN 201410001336A CN 104765621 B CN104765621 B CN 104765621B
- Authority
- CN
- China
- Prior art keywords
- program
- node
- message
- subscription
- disposed
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000004044 response Effects 0.000 claims abstract description 31
- 230000006854 communication Effects 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 12
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 238000009434 installation Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种在集群节点中部署程序的方法和***,方法包括:获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;获得订阅/发布服务器的IP地址和连接信息;连接订阅/发布服务器;向订阅/发布服务器订阅该程序依赖的其它程序的消息;以及响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序。该方法和***可以在集群中快速并且容易地部署程序,节省程序开发人员的劳动。
Description
技术领域
本发明涉及程序的部署,更具体地涉及一种在集群节点中部署程序的方法和***。
背景技术
程序部署包含程序的安装、参数配置以及启动的过程。在分布式***中,安装有不同程序的节点扮演着不同的角色。不同节点安装的程序可能有依赖关系,需要以某种特定的顺序安装、配置以及启动。例如,在节点X上部署程序A之前需要首先在节点Y上部署程序B。因为在不同节点上不同程序的部署是分布式的,或者说是自治的,因此在不同节点上的不同程序以协作的方式共同部署是非常困难的。
目前常用的解决方案是:在集群拓扑结构中安装和升级程序时,为了保证较好的扩展性,将完成相同功能的多个节点聚集成集群,各个节点之间具有预先定义的或者是随机的依赖关系,然后使用人工根据依赖关系部署各个节点。这种方法既费时又容易出错。
发明内容
根据本发明的一个方面,提供了一种在集群节点中部署程序的方法,包括:
获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;
获得订阅/发布服务器的IP地址和连接信息;
连接订阅/发布服务器;
向订阅/发布服务器订阅该程序依赖的其它程序的消息;
响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序。
根据本发明的另一个方面,提供了一种在集群节点中协调程序部署的方法,包括:
响应于与多个节点建立连接,接收各节点上要安装的全部程序以及订阅信息;
响应于第一节点的订阅信息中指出其要部署的第一程序依赖于第二程序,根据接收的各节点上要安装的全部程序获得第二程序所在的第二节点;
向第二节点发送发布第二程序的消息的请求;
响应于从结点2接收到第二程序的消息,根据订阅信息,将第二程序的消息发送给第一节点。
根据本发明的又一个方面;提供了一种在集群节点中部署程序的***,包括:
依赖关系获得装置,被配置为获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;
IP地址和连接信息获得装置,被配置为获得订阅/发布服务器的IP地址和连接信息;
连接装置,被配置为连接订阅/发布服务器;
订阅装置,被配置为向订阅/发布服务器订阅依赖的其它程序的消息;
部署装置,被配置为响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序。
根据本发明的再一个方面,提供了一种在集群节点中协调程序部署的***,包括:
连接装置,被配置为响应于与多个节点建立连接,接收各节点上要安装的全部程序以及订阅信息;
订阅节点寻找装置,被配置为响应于第一节点的订阅信息中指出其要部署的第一程序依赖于第二程序,根据接收的各节点上要安装的全部程序获得第二程序所在的第二节点;
订阅消息请求装置,被配置为向第二节点发送发布第二程序的消息的请求;
订阅消息转达装置,被配置为响应于从第二节点接收到第二程序的消息,根据订阅信息,将第二程序的消息发送给第一节点。
利用根据本发明上述方面的方法和***,可以在集群中快速并且容易地部署程序,节省程序开发人员的劳动。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器的框图;
图2示意性示出了根据本发明的一种实施方式的一种在集群节点中部署程序的方法的流程图;
图3描述了集群环境下三个节点之间部署有相互依赖关系程序的情况的一个例子;
图4示出了图3的节点1在部署“IBM Content Collector”时与订阅/发布服务器之间的通信流程;
图5示出了一种在集群节点中协调程序部署的方法的工作流程;
图6示出了一种在集群节点中部署程序的***600的结构框图;以及
图7示出了一种在集群节点中协调程序部署的***700的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种虚拟机,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图。图1显示的计算机***/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可迁移的和不可迁移的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可迁移/不可迁移的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可迁移的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可迁移非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可迁移非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
本发明公开了一种在集群节点中部署程序的方法和***,图2示意性示出了根据本发明的一种实施方式的一种在集群节点中部署程序的方法的流程图。根据图2,在步骤S201,获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;在步骤S202,获得订阅/发布服务器的IP地址和连接信息;在步骤S203,连接订阅/发布服务器;在步骤S204,并向订阅/发布服务器订阅依赖的其它程序的消息;在步骤S205,响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序。在一种优选的实施方式中,该方法还包括步骤S206(图2未示出),响应于该程序部署完毕,并且订阅/发布服务器要求该节点发布该程序的消息,向订阅/发布服务器发布该程序的消息。但是,由于并不是所有的程序都要发布消息,因此,该步骤是优选的。另外,在上述方法中,连接信息包括用户名、密码等与连接订阅/发布服务器连接所需要的信息;发布的该程序的消息中包含该程序的执行状态和依赖数据,以便依赖该程序的其他程序执行所使用。
集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系可以来自于集群中各节点上要部署的程序之间的依赖关系。在一种实施方式中,本领域技术人员可以采用编辑器编辑的方式来描述集群中各节点上要部署的程序之间的依赖关系,然后使用文本或者脚本语言纪录。在一种具体的实施方式中,可以为用户提供图形用户界面,然后用户采用拖拽的方式来表达要集群中各节点上要部署的程序之间的依赖关系,再将用户通过图形用户界面给出的集群中各节点上要部署的程序之间的依赖关系使用图形概述文件表达,或者转换成文本或者脚本语言或者规定的其他形式。也可以使用数据库记录集群中各节点上要部署的程序之间的依赖关系,或者采用本领域技术人员所知的任何其他形式描述,可以制定不同的描述规则,以便进行传递。
集群中各节点上要部署的程序之间的依赖关系可以使用集群中的节点存储,在一种实施方式中,存储集群中各节点上要部署的程序之间的依赖关系的节点不是需要安装程序的节点。
由于集群中各节点上要部署的程序之间的依赖关系有多种描述方式,因此获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系也有多种实施方式。在集群中各节点上要部署的程序之间的依赖关系使用数据库描述的情况下,获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系可以直接采用数据库查询的方式,例如对于使用关系型数据库,可以使用DB query获得与该节点要安装的程序之间有以依赖关系的的程序;在集群中各节点上要部署的程序之间的依赖关系使用文本或者脚本描述的情况下,可以通过解析该文本或者脚本来获得;在集群中各节点上要部署的程序之间的依赖关系使用图形概述文件描述的情况下,可以通过开发应用程序接口来获得。
图3描述了集群环境下三个节点之间部署有相互依赖关系程序的情况的一个例子。在图3中,节点1需要安装和部署“IBM WebSphere”,“IBM Domino运行时环境”和“IBMContent Collector”;节点2需要安装和部署“IBM DB2”,“IBM WebSphere”和“IBM FileNet P8”;节点3需要安装和部署“IBM Domino”和“IBM eDiscovery Manager”。程序间的依赖关系包括节点内部署的程序间的依赖关系,以及对集群内其他节点上部署的程序的依赖关系。例如节点1中的“IBM Content Collector”依赖节点2的“IBM FileNet P8”和节点3的“IBM Domino”以及节点1内部的“IBM WebSphere”,“IBM Domino运行时环境”。节点3中的“IBM eDiscovery Manager”依赖节点2的“IBM FileNet P8”。依赖关系不但要求所依赖的程序完成部署,同时还需要提供相应的依赖参数,使得被依赖程序能够开放给依赖者。例如节点2中的“IBM FileNet P8”,需要开放的依赖参数包括“连接类型”,“主机名称”,“端口”,“访问路径”,“管理员名称”,“管理员密码”。节点3中的“IBM Domino”需要开放的依赖参数包括“NotesID文件路径”,“Notes用户密码”,“Domino主机名”和“连接协议”。以节点1的IBMContent Collector程序为例,相应的依赖关系可以通过如下XML文件表示。
由上述XML文件描述的依赖关系可知,节点1中的“IBM Content Collector”依赖“IBM FileNet P8”、“IBM Domino”、“IBM WebSphere”,以及“IBM Domino运行时环境”。但此时,节点1并不知道上述依赖程序将在哪个节点安装(location的域为空),他们是否已近安装完毕(Availability的域为空),并且需要得到哪些参数(DependentParameters的域为空)。
一种实施方式中,每个节点中都存储该集群中各节点上要部署的程序之间的依赖关系,然后该节点从上述集群中各节点上要部署的程序之间的依赖关系拆分出自己要部署的程序与集群中要部署的其它程序之间的依赖关系;在另一种实施方式中,可以在节点外将上述集群中各节点上要部署的程序之间的依赖关系进行拆分,只将集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系存储到该节点中。例如,上例中对于节点1,可以只保留描述“IBM WebSphere”,“IBM Domino运行时环境”和“IBM ContentCollector”这三个程序的依赖关系XML片段。
集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系也可以直接由***管理员在该节点上使用与上述集群中各节点上要部署的程序之间的依赖关系相同的方式输入到该节点中,例如直接编辑文本或者脚本文件,或者使用命令行输入,使用特定的数据结构存储等等。然后将获得的集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系直接存储在该节点中。
在步骤S203和S204中,实际上是节点中准备一个订阅/发布(pub/sub)***。该订阅/发布***向订阅/发布服务器进行订阅和发布依赖信息。在一种实施方式中,订阅/发布服务器IP地址和连接方式,可以是由***管理员在配置时输入的,也可以是通过程序接口获得的。甚至,可以在描述依赖关系的文件中给出订阅/发布服务器IP地址和连接方式。对应于不同的订阅/发布服务器IP地址和连接方式的输入方式,可以使用不同的获得方式,例如可以通过程序接口获得,可以通过读文件获得,可以通过命令行解析获得,等等。
图4示出了图3的节点1在部署“IBM Content Collector”时与订阅/发布服务器之间的通信流程。
步骤1:节点1从依赖关系库中获得集群中该节点上要部署的程序,即“IBMContent Collector”,与集群中要部署的其它程序之间的依赖关系,对于节点1来说,可以获得“IBM Content Collector”对“IBM WebSphere”,“IBM Domino运行时环境”和“IBMContent Collector”的依赖关系,例如就是上述的XML文件。
步骤2:节点1获得订阅/发布服务器的IP地址和连接信息,可以由***管理员配置,或者存贮在存储设备中,通过访问该设备获取;或者存储在网络中,通过接口获取,等等。
步骤3:节点1利用上述订阅/发布服务器的IP地址和连接信息连接订阅/发布服务器,并向订阅/发布服务器订阅依赖的其它程序的信息。连接订阅/发布服务器中,该节点还要向订阅/发布服务器报告该节点上要安装的全部程序。
连接订阅/发布服务器并向订阅/发布服务器订阅依赖的其它程序的消息的一种实施方式中,可以区分内部依赖和外部依赖。例如,对于节点1来说,“IBM FileNet P8”和“IBM Domino”是外部依赖;“IBM WebSphere”和“IBM Domino运行时环境”是内部依赖。则该步骤进一步包括:响应于所述集群中要部署的其它程序包括该节点内部要部署的程序和集群中其它节点要部署的程序,连接订阅/发布服务器并只向订阅/发布服务器订阅依赖的集群中其它节点要部署的程序的消息。而该节点内部要部署的程序的相关信息,则通过内部通信获得。即该方法还包括步骤:进一步地,响应于所述集群中要部署的其它程序包括该节点内部要部署的程序,通过节点内部的通信获得该节点内部要部署的程序的消息。在另一种实施方式中,不区分内部依赖和外部依赖,将所有的依赖都认为是外部依赖,即使是该节点内部要部署的程序,也认为是集群中其它节点要部署的程序,需要通过订阅/发布服务器订阅。同样,对于发布来说也分为内部发布和外部发布。外部发布就是通常的发布。在解析节点内部的各程序的依赖关系时,如果发现内部依赖关系,即响应于所述依赖关系中指出该节点上要部署的其它程序依赖于该程序,通过节点内部的通信发布该程序的消息。当然,也可以将所有的依赖都认为是外部依赖,全部向订阅/发布服务器发布该节点要部署的程序的消息,而不存在节点内部的发布过程。
步骤4:节点1接收到订阅/发布服务器的订阅成功信息。
例如,订阅/发布服务器收到节点1需要安装和部署“IBM WebSphere”,“IBMDomino运行时环境”和“IBM Content Collector”;并且收到“IBM Content Collector”订阅“IBM FileNet P8”和“IBM Domino”的订阅消息后,发送订阅成功信息。
步骤5:节点1从订阅/发布服务器接收到订阅消息。
订阅后,订阅/发布服务器发现节点2需要安装和部署“IBM DB2”,“IBMWebSphere”和“IBM FileNet P8”并且节点3需要安装和部署“IBMDomino”和“IBMeDiscovery Manager”,则订阅/发布服务器响应于收到节点2发布的访问“IBM FileNetP8”消息后(即节点2完成“IBM FileNet P8”的部署),将该消息根据订阅消息发送给节点1,并且响应于收到节点3发布的访问“IBM Domino”消息后(即节点3完成“IBM Domino”的部署),将该消息根据订阅消息发送给节点1,并且节点1还通过内部程序获得“IBMWebSphere”,“IBM Domino运行时环境”的安装部署及参数。其中节点2和节点3发布的消息中,除了包括程序完成部署,还包括相应的依赖参数,使得该程序能够开放给依赖者。例如节点2中的“IBM FileNet P8”,需要开放的依赖参数包括“连接类型”,“主机名称”,“端口”,“访问路径”,“管理员名称”,“管理员密码”。节点3中的“IBM Domino”需要开放的依赖参数包括“Notes ID文件路径”,“Notes用户密码”,“Domino主机名”和连接协议。
另一种实施方式中,节点1不区分外部和内部依赖的订阅信息,将内部依赖的订阅信息和外部的订阅信息作相同的处理,也可以达到和上述实施例相同的效果。对于订阅/发布服务器,是没有外部和内部依赖的订阅信息的区分的。
节点1从订阅/发布服务器得到订阅消息后,其依赖关系的XML文件更新为:
步骤6:节点1安装和部署“IBM Content Collector”。由于节点1中的“IBMWebSphere”,“IBM Domino运行时环境”对其他程序没有依赖关系,因此很快被部署。并且通过内部程序或者订阅/发布服务器将其相关访问信息通知到“IBM Content Collector”。在使用内部程序通知的过程中,可以使用多种方式,例如程序接口,消息方式等等。在安装“IBMContent Collector”的过程中,利用上述更新的依赖关系,连接到节点2和节点3,就可以直接部署。
步骤7:接收到订阅/发布服务器要求该节点发布访问该程序的消息;
步骤8:响应于该程序部署完毕,向订阅/发布服务器发布该程序的消息,其中,发布的该程序的消息中包含该程序的执行状态和依赖数据,以便依赖该程序的其他程序执行所使用。
由于在本例中,集群中不存在依赖“IBM Content Collector”的程序,因此,订阅/发布服务器不会要求该节点发布访问该程序的消息,实际上,对本例来说,步骤7和步骤8并不存在。也就是说,步骤S205可以分解为步骤7和步骤8。
图4还从另一个侧面描述了订阅/发布服务器的工作流程。图5示出了一种在集群节点中协调程序部署的方法的工作流程,也就是订阅/发布服务器的工作流程。一种实施方式中,订阅/发布服务器只收到外部依赖的订阅/发布信息,或者不区分外部依赖和内部依赖,统一处理。根据图5,在步骤S501,响应于与多个节点建立连接,接收各节点上要安装的全部程序以及订阅信息;在步骤S502,响应于第一节点的订阅信息中指出其要部署的第一程序依赖于第二程序,根据接收的各节点上要部署的全部程序获得第二程序所在的第二节点;在步骤S503,向第二节点发送发布第二程序的消息的请求;在步骤S504,响应于从第二节点接收到第二程序的消息,根据订阅信息,将第二程序的消息发送给第一节点。在一种实施方式中,响应于向第一节点发送发布的第二程序的消息时,第一节点出现连接故障,保存第二程序的消息直至将该消息发送给第一节点。这样可以保证订阅的消息不会丢失,并且总会得到结果。
前面已经参考附图描述了实现本发明的方法的各个实施例。本领域技术人员可以理解的是,上述方法既可以以软件方式实现,也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发明构思的一在集群节点中部署程序的***以及一种在集群节点中协调程序部署的***。即使该***在硬件结构上与通用处理设备相同,由于其中所包含的软件的作用,使得该***表现出区别于通用处理设备的特性,从而形成本发明的各个实施例的装置。本发明中所述装置包括若干单元或模块,所述单元或模块被配置为执行相应步骤。本领域的所述技术人员通过阅读本说明书可以理解如何编写程序实现所述单元或模块执行的动作。由于所述***与方法基于相同的发明构思,因此其中相同或相应的实现细节同样适用于与上述方法对应的装置,由于其在上文中已经进行了详细和完整的描述,因此在下文中可能不再进行赘述。
在同一个发明构思下,本发明的实施方式还公开了在集群节点中部署程序的***,图6示出了一种在集群节点中部署程序的***600的结构框图,根据图6,该***包括:依赖关系获得装置601,被配置为获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;IP地址和连接信息获得装置602,被配置为获得订阅/发布服务器的IP地址和连接信息;连接装置603,被配置为连接订阅/发布服务器;订阅装置604,被配置为向订阅/发布服务器订阅依赖的其它程序的消息;以及部署装置605,被配置为响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序。
在一种实施方式中,图6所示的***还包括(图6未示出):发布装置,被配置为响应于该程序部署完毕,并且订阅/发布服务器要求该节点发布该程序的消息,向订阅/发布服务器发布该程序的消息。
在另一种实施方式中,订阅装置还包括:报告装置,被配置为向订阅/发布服务器报告该节点上要安装的全部程序。
在一种实施方式中,订阅装置被进一步配置为:响应于所述集群中要部署的其它程序包括该节点内部要部署的程序和集群中其它节点要部署的程序,只向订阅/发布服务器订阅依赖的集群中其它节点要部署的程序的消息。
在一种实施方式中,图6所示的***还包括(图6未示出):节点内部通信装置,被配置为响应于所述集群中要部署的其它程序包括该节点内部要部署的程序,通过节点内部的通信获得该节点内部要部署的程序的消息。在另一种实施方式中,节点内部通信装置被进一步配置为:响应于所述依赖关系中指出该节点上要部署的其它程序依赖于该程序,通过节点内部的通信发布该程序的消息。
在同一个发明构思下,本发明的实施例还公开了一种在集群节点中协调程序部署的***,图7示出了一种在集群节点中协调程序部署的***700的结构框图,根据图7,该***包括:包括:连接装置701,被配置为响应于与多个节点建立连接,接收各节点上要安装的全部程序以及订阅信息;订阅节点寻找装置702,被配置为响应于第一节点的订阅信息中指出其要部署的第一程序依赖于第二程序,根据接收的各节点上要安装的全部程序获得第二程序所在的第二节点;订阅消息请求装置703,被配置为向第二节点发送发布第二程序的消息的请求;以及订阅消息转达装置704,被配置为响应于从结点2接收到第二程序的消息,根据订阅信息,将第二程序的消息发送给第一节点。
在一种实施方式中,订阅消息转达装置包括:故障处理装置,被配置为响应于向第一节点发送发布的第二程序的消息时,第一节点出现连接故障,保存第二程序的消息直至将该消息发送给第一节点。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
1.一种在集群节点中部署程序的方法,包括:
获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;
获得订阅/发布服务器的IP地址和连接信息;
连接订阅/发布服务器;
向订阅/发布服务器订阅该程序依赖的其它程序的消息;
响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序,
所述方法进一步包括:
响应于与多个节点建立连接,接收各节点上要安装的全部程序以及订阅信息;
响应于第一节点的订阅信息中指出其要部署的第一程序依赖于第二程序,根据接收的各节点上要安装的全部程序获得第二程序所在的第二节点;
向第二节点发送发布第二程序的消息的请求;
响应于从第二节点接收到第二程序的消息,根据订阅信息,将第二程序的消息发送给第一节点。
2.根据权利要求1所述的方法,该方法还包括:
响应于该程序部署完毕,并且订阅/发布服务器要求该节点发布该程序的消息,向订阅/发布服务器发布该程序的消息。
3.根据权利要求1所述的方法,其中所述连接订阅/发布服务器包括:
向订阅/发布服务器报告该节点上要安装的全部程序。
4.根据权利要求1所述的方法,其中向订阅/发布服务器订阅依赖的其它程序的消息包括:
响应于所述集群中要部署的其它程序包括该节点内部要部署的程序和集群中其它节点要部署的程序,只向订阅/发布服务器订阅依赖的集群中其它节点要部署的程序的消息。
5.根据权利要求4所述的方法,进一步包括:
响应于所述集群中要部署的其它程序包括该节点内部要部署的程序,通过节点内部的通信获得该节点内部要部署的程序的消息。
6.根据权利要求5所述的方法,进一步包括:
响应于所述依赖关系中指出该节点上要部署的其它程序依赖于该程序,通过节点内部的通信发布该程序的消息。
7.根据权利要求1所述的方法,其中根据订阅信息,将第二程序的消息发送给第一节点包括:
响应于向第一节点发送发布的第二程序的消息时,第一节点出现连接故障,保存第二程序的消息直至将该消息发送给第一节点。
8.一种在集群节点中部署程序的***,包括:
依赖关系获得装置,被配置为获得集群中该节点上要部署的程序与集群中要部署的其它程序之间的依赖关系;
IP地址和连接信息获得装置,被配置为获得订阅/发布服务器的IP地址和连接信息;
连接装置,被配置为连接订阅/发布服务器;
订阅装置,被配置向订阅/发布服务器订阅依赖的其它程序的消息;
部署装置,被配置为响应于从订阅/发布服务器得到订阅的其它程序的消息,部署该程序,
所述***进一步包括:
连接装置,被配置为响应于与多个节点建立连接,接收各节点上要安装的全部程序以及订阅信息;
订阅节点寻找装置,被配置为响应于第一节点的订阅信息中指出其要部署的第一程序依赖于第二程序,根据接收的各节点上要安装的全部程序获得第二程序所在的第二节点;
订阅消息请求装置,被配置为向第二节点发送发布第二程序的消息的请求;
订阅消息转达装置,被配置为响应于从第二节点接收到第二程序的消息,根据订阅信息,将第二程序的消息发送给第一节点。
9.根据权利要求8所述的***,该***还包括:
发布装置,被配置为响应于该程序部署完毕,并且订阅/发布服务器要求该节点发布该程序的消息,向订阅/发布服务器发布该程序的消息。
10.根据权利要求8所述的***,其中所述订阅装置还包括:
报告装置,被配置为向订阅/发布服务器报告该节点上要安装的全部程序。
11.根据权利要求8所述的***,其中所述订阅装置被进一步配置为:
响应于所述集群中要部署的其它程序包括该节点内部要部署的程序和集群中其它节点要部署的程序,只向订阅/发布服务器订阅依赖的集群中其它节点要部署的程序的消息。
12.根据权利要求11所述的***,进一步包括:
节点内部通信装置,被配置为响应于所述集群中要部署的其它程序包括该节点内部要部署的程序,通过节点内部的通信获得该节点内部要部署的程序的消息。
13.根据权利要求12所述的***,其中所述节点内部通信装置被进一步配置为:
响应于所述依赖关系中指出该节点上要部署的其它程序依赖于该程序,通过节点内部的通信发布该程序的消息。
14.根据权利要求8所述的***,其中所述订阅消息转达装置包括:
故障处理装置,被配置为响应于向第一节点发送发布的第二程序的消息时,第一节点出现连接故障,保存第二程序的消息直至将该消息发送给第一节点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410001336.XA CN104765621B (zh) | 2014-01-02 | 2014-01-02 | 一种在集群节点中部署程序的方法和*** |
US14/560,347 US9633127B2 (en) | 2014-01-02 | 2014-12-04 | Deploying programs in a cluster node |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410001336.XA CN104765621B (zh) | 2014-01-02 | 2014-01-02 | 一种在集群节点中部署程序的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104765621A CN104765621A (zh) | 2015-07-08 |
CN104765621B true CN104765621B (zh) | 2018-05-01 |
Family
ID=53483278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410001336.XA Expired - Fee Related CN104765621B (zh) | 2014-01-02 | 2014-01-02 | 一种在集群节点中部署程序的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US9633127B2 (zh) |
CN (1) | CN104765621B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106548331B (zh) * | 2015-09-21 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 一种确定发布顺序的方法及装置 |
WO2017083140A1 (en) * | 2015-11-10 | 2017-05-18 | Avanan Inc. | Cloud services discovery and monitoring |
CN109471616A (zh) * | 2018-10-26 | 2019-03-15 | 数贸科技(北京)有限公司 | 基于应用Jar包文件的应用编排方法及装置 |
CN110275731B (zh) * | 2019-06-26 | 2022-12-16 | 中汇信息技术(上海)有限公司 | 信息处理方法、装置、存储介质和电子设备 |
CN112214543A (zh) * | 2019-07-11 | 2021-01-12 | 深圳市优必选科技股份有限公司 | 一种数据同步方法、装置及终端设备 |
CN112241269B (zh) * | 2019-07-16 | 2024-05-10 | 深圳兆日科技股份有限公司 | Zookeeper集群控制***、设备及存储介质 |
CN110795109A (zh) * | 2019-10-25 | 2020-02-14 | 北京达佳互联信息技术有限公司 | 一种功能扩展方法、装置及电子设备 |
CN113127006B (zh) * | 2019-12-30 | 2024-03-29 | 北京懿医云科技有限公司 | 服务部署方法、装置、设备及存储介质 |
CN115134231B (zh) * | 2021-03-17 | 2024-03-08 | 北京搜狗科技发展有限公司 | 一种通信方法、装置和用于通信的装置 |
CN113238763A (zh) * | 2021-05-17 | 2021-08-10 | 京东数字科技控股股份有限公司 | 应用部署的方法、设备、存储介质及程序产品 |
CN115174551B (zh) * | 2022-05-31 | 2024-07-19 | 青岛海尔科技有限公司 | 程序部署方法及装置、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360308A (zh) * | 2011-09-29 | 2012-02-22 | 用友软件股份有限公司 | 组件的分布式部署***和方法 |
CN102404381A (zh) * | 2011-09-02 | 2012-04-04 | 西安交通大学 | 一种云计算环境下基于工作流的软件部署***及部署方法 |
US8402083B2 (en) * | 2006-06-13 | 2013-03-19 | Advanced Cluster Systems, Inc. | Automatic cluster node discovery and configuration |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2272311A (en) | 1992-11-10 | 1994-05-11 | Ibm | Call management in a collaborative working network. |
US6606744B1 (en) | 1999-11-22 | 2003-08-12 | Accenture, Llp | Providing collaborative installation management in a network-based supply chain environment |
US8135843B2 (en) * | 2002-03-22 | 2012-03-13 | Citrix Systems, Inc. | Methods and systems for providing access to an application |
US7240325B2 (en) * | 2002-09-11 | 2007-07-03 | International Business Machines Corporation | Methods and apparatus for topology discovery and representation of distributed applications and services |
US6847970B2 (en) * | 2002-09-11 | 2005-01-25 | International Business Machines Corporation | Methods and apparatus for managing dependencies in distributed systems |
US7478385B2 (en) | 2003-01-17 | 2009-01-13 | National Instruments Corporation | Installing software using programmatic component dependency analysis |
US20050050021A1 (en) | 2003-08-25 | 2005-03-03 | Sybase, Inc. | Information Messaging and Collaboration System |
US20050172282A1 (en) * | 2004-01-30 | 2005-08-04 | Michael Shenfield | System and method for publishing and accessing application APIs on a generic terminal |
US8156489B2 (en) | 2004-05-21 | 2012-04-10 | Computer Associates Think, Inc. | Distributed installation configuration system and method |
US20050289539A1 (en) | 2004-06-29 | 2005-12-29 | Sudhir Krishna S | Central installation, deployment, and configuration of remote systems |
DE102004062434A1 (de) | 2004-12-20 | 2006-06-22 | Abb Research Ltd. | System und Verfahren zum automatischen Aktualisieren von Funktionalitäten in einem verteilten Netzwerk |
US7950010B2 (en) | 2005-01-21 | 2011-05-24 | Sap Ag | Software deployment system |
US8140624B2 (en) | 2005-12-01 | 2012-03-20 | Computer Associates Think, Inc. | Automated deployment and configuration of applications in an autonomically controlled distributed computing system |
US8122144B2 (en) * | 2006-06-27 | 2012-02-21 | International Business Machines Corporation | Reliable messaging using redundant message streams in a high speed, low latency data communications environment |
US20080141275A1 (en) * | 2006-12-12 | 2008-06-12 | Borgendale Kenneth W | Filtering Application Messages In A High Speed, Low Latency Data Communications Environment |
US20090006559A1 (en) * | 2007-06-27 | 2009-01-01 | Bhogal Kulvir S | Application Message Subscription Tracking In A High Speed, Low Latency Data Communications Environment |
US8799893B2 (en) * | 2008-10-15 | 2014-08-05 | International Business Machines Corporation | Method, system and computer program product for solution replication |
US8776044B1 (en) * | 2011-10-26 | 2014-07-08 | Symantec Corporation | Systems and methods for providing computer cluster policies for implementation in computer cluster environments |
US9172608B2 (en) | 2012-02-07 | 2015-10-27 | Cloudera, Inc. | Centralized configuration and monitoring of a distributed computing cluster |
-
2014
- 2014-01-02 CN CN201410001336.XA patent/CN104765621B/zh not_active Expired - Fee Related
- 2014-12-04 US US14/560,347 patent/US9633127B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8402083B2 (en) * | 2006-06-13 | 2013-03-19 | Advanced Cluster Systems, Inc. | Automatic cluster node discovery and configuration |
CN102404381A (zh) * | 2011-09-02 | 2012-04-04 | 西安交通大学 | 一种云计算环境下基于工作流的软件部署***及部署方法 |
CN102360308A (zh) * | 2011-09-29 | 2012-02-22 | 用友软件股份有限公司 | 组件的分布式部署***和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20150188995A1 (en) | 2015-07-02 |
CN104765621A (zh) | 2015-07-08 |
US9633127B2 (en) | 2017-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765621B (zh) | 一种在集群节点中部署程序的方法和*** | |
US10769187B2 (en) | Crowdsourced training of textual natural language understanding systems | |
US11409425B2 (en) | Transactional conversation-based computing system | |
US20180101371A1 (en) | Deployment manager | |
US9043445B2 (en) | Linking instances within a cloud computing environment | |
US10044561B2 (en) | Application provisioning system for requesting configuration updates for application objects across data centers | |
US20170024396A1 (en) | Determining application deployment recommendations | |
US10019293B2 (en) | Enhanced command selection in a networked computing environment | |
US11194686B2 (en) | Data agnostic monitoring service | |
US10095790B2 (en) | Control center system for searching and managing objects across data centers | |
US9225662B2 (en) | Command management in a networked computing environment | |
US20220391589A1 (en) | Systems and methods for training and evaluating machine learning models using generalized vocabulary tokens for document processing | |
CN109445841A (zh) | 接口文档管理方法、装置、服务器及存储介质 | |
US20200057684A1 (en) | Transforming plug-in application recipe variables | |
US20200302350A1 (en) | Natural language processing based business domain modeling | |
WO2023151397A1 (zh) | 应用程序部署方法、装置、设备及介质 | |
US10579575B2 (en) | Systems and methods of management console user interface pluggability | |
US11561667B2 (en) | Semi-virtualized portable command center | |
US11403577B2 (en) | Assisting and automating workflows using structured log events | |
US20190356725A1 (en) | Generating client applications from service model descriptions | |
CN109828781A (zh) | 用于问题排查的源码版本定位方法、装置、介质和设备 | |
CN109634827A (zh) | 用于生成信息的方法和装置 | |
CN117648386A (zh) | 检测方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180501 |
|
CF01 | Termination of patent right due to non-payment of annual fee |