CN106230625B - 一种在SolrCloud集群中动态创建域的方法及装置 - Google Patents

一种在SolrCloud集群中动态创建域的方法及装置 Download PDF

Info

Publication number
CN106230625B
CN106230625B CN201610597618.XA CN201610597618A CN106230625B CN 106230625 B CN106230625 B CN 106230625B CN 201610597618 A CN201610597618 A CN 201610597618A CN 106230625 B CN106230625 B CN 106230625B
Authority
CN
China
Prior art keywords
domain
node
list
creation
request
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
CN201610597618.XA
Other languages
English (en)
Other versions
CN106230625A (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.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
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 Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN201610597618.XA priority Critical patent/CN106230625B/zh
Publication of CN106230625A publication Critical patent/CN106230625A/zh
Application granted granted Critical
Publication of CN106230625B publication Critical patent/CN106230625B/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
    • 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/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种在SolrCloud集群中动态创建域的方法及装置,该方法包括:从zookeeper集群中获取全部可用的SolrServer节点标识,组成第一列表;从第一列表中选取一节点标识;向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用第一可用节点提供的第一REST接口创建一新的域;获取第一可用节点返回的创建状态;当创建状态表明成功创建域时,则显示创建成功消息;当创建状态表明未成功创建域、且未成功创建域的原因是第一可用节点导致的,则从第一列表中选取一个未被选取过的节点标识,继续执行向当前选取的节点标识对应的第一可用节点发送第一请求的步骤。用户在创建域时,无需知晓SolrCloud集群的内部结构,且可以自动对创建失败结果进行容错处理。

Description

一种在SolrCloud集群中动态创建域的方法及装置
技术领域
本发明涉及集群技术领域,尤其涉及一种在SolrCloud集群中动态创建域的方法及装置。
背景技术
参见图1所示的SolrCloud集群架构示意图。
一个SolrCloud集群由多个Solr服务器(SolrServer)组成,每个SolrServer都可以提供服务,SolrCloud使用zookeeper集群存储并共享配置信息,即各SolrServer节点共享zookeeper的配置信息,且SolrCloud集群的所有状态信息都放在Zookeeper集群中统一维护。
SolrCloud数据模型包含集合(Collection)、文档(Doucument)、域(Field)以及约束文档与域的规则的模式(Schema)。集合是最顶层容器,支持分片、多副本;文档汇集在一起构成集合,一篇文档可理解为一条记录;每一篇文档都包含若干域,一个域可理解为一篇文档的一个属性,域是由域名、类型和域值构成的元组。
通常,一个域必须在集合中完成定义,才能够被文档所使用,域通常是在SolrCloud创建集合时的配置文件中定义的。由于域通常是在集合创建之前预先在配置文件中定义好的,如果应用系统无法预先定义其需使用哪些域,则需要在SolrCloud运行时定义新的域,如果用户想要在集群运行时创建新的域,需要使集合置为Schemaless运行模式,调用SolrCloud提供的SolrServer节点级的REST API定义新的域。但此种方式存在以下局限:
1.需要由用户指定访问集群中的哪个节点(ip地址和端口),用户需要知晓集群内部结构。此外,因SolrCloud集群结构会动态变化,即SolrServer节点可能增加、减少、下线、上线,用户需要获取集群结构的变化以确保访问到可用的节点。
2.返回结果在不同情况下结果差别很大,需要完全交由用户处理,用户需要知晓不同情况下所有可能的结果,并根据每个结果进行对应的处理办法。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种在SolrCloud集群中动态创建域的方法及装置,用户在创建域时,无需知晓SolrCloud集群的内部结构,且可以自动对创建失败结果进行容错处理。
本发明实施例提供了一种在SolrCloud集群中动态创建域的方法,包括:
从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;
从所述第一列表中选取一节点标识;
向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用所述第一可用节点提供的第一REST接口,以通过所述第一REST接口创建一新的域;
获取所述第一可用节点返回的创建状态;
当所述创建状态表明成功创建域时,则显示用于表示创建成功的消息;
当所述创建状态表明未成功创建域、且未成功创建域的原因是所述第一可用节点导致的,则从所述第一列表中选取一个未被选取过的节点标识,继续执行所述向当前选取的节点标识对应的第一可用节点发送第一请求的步骤。
可选的,所述获取所述第一可用节点返回的创建状态之后,还包括:
判断是否成功获取所述第一可用节点返回的所述创建状态;
如果是,则判断所述创建状态是否表明成功创建域;
如果否,则执行所述从所述第一列表中选取一个未被选取过的节点标识的步骤。
可选的,所述方法还包括:
当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表;
从所述第二列表中选取一节点标识;
向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表;
判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息。
可选的,所述通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表之后,还包括:
判断是否成功获取到所述域列表;
如果是,则执行所述判断所述新的域是否包含在所述域列表中的步骤;
如果否,则从所述第二列表中选取一个未被选取过的节点标识,继续执行所述向当前选取的节点标识对应的第二可用节点发送第二请求的步骤。
可选的,所述方法还包括:
如果所述新的域不包含在所述域列表中,则显示用于表示域创建失败的消息。
本发明实施例还提供了一种在SolrCloud集群中动态创建域的装置,包括:
第一列表形成单元,用于从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;
第一标识选取单元,用于从所述第一列表中选取一节点标识;
新域创建请求单元,用于向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用所述第一可用节点提供的第一REST接口,以通过所述第一REST接口创建一新的域;
创建状态获取单元,用于获取所述第一可用节点返回的创建状态;
创建成功显示单元,用于当所述创建状态表明成功创建域时,则显示用于表示创建成功的消息;
服务节点切点单元,用于当所述创建状态表明未成功创建域、且未成功创建域的原因是所述第一可用节点导致的,则从所述第一列表中选取一个未被选取过的节点标识,继续运行所述新域创建请求单元中的功能。
可选的,所述装置还包括:
状态结果判断单元,用于判断是否成功获取所述第一可用节点返回的所述创建状态;如果是,则判断所述创建状态是否表明成功创建域;如果否,则利用所述服务节点切点单元实现所述从所述第一列表中选取一个未被选取过的节点标识的功能。
可选的,所述装置还包括:
第二列表形成单元,用于当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表;
第二标识选取单元,用于从所述第二列表中选取一节点标识;
域列表请求单元,用于向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表;
已创建显示单元,用于判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息。
可选的,所述装置还包括:
列表结果判断单元,用于在所述域列表请求单元通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表之后,判断是否成功获取到所述域列表;如果是,则执行所述判断所述新的域是否包含在所述域列表中的步骤;如果否,则从所述第二列表中选取一个未被选取过的节点标识,继续运行所述域列表请求单元中的功能。
可选的,所述装置还包括:
创建失败显示单元,用于如果所述新的域不包含在所述域列表中,则显示用于表示域创建失败的消息。
本发明实施例提供的在SolrCloud集群中动态创建域的方法及装置,用户在使用时,只需知道zookeeper服务地址即可,而且这个地址在集群中是稳定不变的,以便根据zookeeper服务地址从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;再从第一列表中选择一个SolrServer节点发送请求,请求调用节点提供的REST接口,以通过该REST接口创建一新的域;然后获取该节点返回的创建状态,当创建状态表明成功创建域时,则显示创建成功;当创建状态表明未成功创建域、且未成功创建域的原因是该节点导致的,则从第一列表中选取一个未被选取过的SolrServer节点,并采用其它节点创建域。可见,用户在创建域时,无需知晓SolrCloud集群的内部结构,且可以根据创建状态结果自动进行容错处理,即能够进行故障节点的自动切换。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例SolrCloud集群架构示意图;
图2为本发明实施例在SolrCloud集群中动态创建域的方法的流程示意图;
图3为本发明实施例创建结果的判定流程示意图之一;
图4为本发明实施例创建结果的判定流程示意图之二;
图5为本发明实施例在SolrCloud集群中动态创建域的装置的组成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在介绍本发明实施例前,首先对本发明涉及的术语进行介绍:
Solr:是一个独立的企业级搜索应用服务器;
SolrCloud:Solr云;
SolrServer:Solr服务器;
REST:即表述性状态传递(Representational State Transfer,简称REST);
API:即应用程序编程接口(Application Programming Interface,简称API);
ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件;
HTTP:即超文本传输协议(HyperText Transfer Protocol,简称HTTP);
HTTP Client:是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议;
JSON:JavaScript Object Notation,是一种轻量级的数据交换格式。
应用系统在使用SolrCloud集群时,可能由于无法预先确定需要定义和使用哪些域以进行索引与检索,故需要在SolrCloud集群运行时根据需求在SolrCloud集群中创建域。为了克服现有创建域(SolrCloud集群运行时)方法的缺陷,本发明实施例实现了SolrCloud集群级别的、透明的、容错的动态创建域方法,其基本解决方案是:从zookeeper集群获取最新可用的SolrServer节点列表信息,取出一个可用节点构造HTTP POST请求并设置相关参数,调用该节点的创建域REST接口,根据是否返回结果以及详细结果信息进行判断后,或返回成功或失败结果,或获取域列表信息进一步判断,或选取另一个可用节点重试上述操作。
下面具体介绍本发明实施例。
参见图2,为本发明实施例提供的在SolrCloud集群中动态创建域的方法的流程示意图,该方法包括以下步骤:
步骤201:从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表。
由于SolrCloud集群的所有状态信息都放在Zookeeper集群中统一维护,所以,从Zookeeper集群中可以获取到当前最新可用的各个SolrServer节点对应的节点标识,每个SolrServer节点唯一对应一节点标识,这些节点标识以列表的形式组成一第一列表。其中,这些可用的SolrServer节点中不包括出现故障或其它原因导致不可用的SolrServer节点。
步骤202:从所述第一列表中选取一节点标识。
在第一次选取节点标识时,如果所述第一列表不为空,则随机或按照列表顺序,从所述第一列表中选取一个节点标识,以便向该节点标识对应的SolrServer节点发送创建域请求;如果所述第一列表为空,则向用户显示用于表示创建失败的消息并结束。
步骤203:向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用所述第一可用节点提供的第一REST接口,以通过所述第一REST接口创建一新的域。
在本实施例中,将所述第一列表中涉及到的每个节点标识对应的SolrServer节点,均定义为第一可用节点。
在构造创建域请求即构造所述第一请求时,使用SolrCloud集群提供的HTTPClient库,构造所述第一请求,即构造调用Solr REST API所需要的HTTP POST请求对象并设置该请求对象的相关参数。
向当前所选取的节点标识对应的SolrServer节点发送所述第一请求即HTTP请求,调用该SolrServer节点提供的可以用于创建一个新的域(Create new schema fields)的REST API,即所述第一REST接口。
例如,假设使用curl工具,通过该REST API,向SolrCloud集群中的该SolrServer节点发送用于创建域的请求为:
curl http://10.233.85.237:8983/solr/TEST/schema/fields-X POST-H′Content-type:application/json′--data-binary′[{"name":"F0000003","type":"tint","stored":true,"indexed":true}]′
其中,此请求命令表示向ip为10.233.85.237,端口为8983的SolrServer发送创建域请求,在该请求命令中,具体是请求在名称为TEST的集合(Collection)中创建域,欲创建的域的名称为F0000003,tint类型,存储F0000003,并使F0000003作为该域的索引。
步骤204:获取所述第一可用节点返回的创建状态。
当通过所述第一可用节点提供的第一REST接口创建一新的域时,所述第一可用节点会返回一个创建状态。在本实施例中,将所述第一列表中每个节点标识对应的第一可用节点返回的创建状态,均定义为创建状态。
例如,基于上述举例中的请求命令,所述创建状态可以是以下三类返回结果中的任何一个结果:
(1)、JSON返回结果
ⅰ、状态码为0,表明已成功创建域。
返回状态码0的可能原因是:
假设ip为10.233.85.237、端口为8983的SolrServer为发送创建域请求的可用节点A1(即当前选取的节点标识对应的第一可用节点),基于此,用户请求在该可用节点A1内创建域、且成功创建域′F0000003′,或者,用户请求在其它节点B内创建域、且可用节点A1通过与节点B通信成功创建域′F0000003′。
ⅱ、状态码为400,并提示Field′F0000003′already exists,即表示名称为F0000003的域已经存在。
返回状态码400及相关提示信息的可能原因是:
假设ip为10.233.85.237、端口为8983的SolrServer为发送创建域请求的可用节点A1(即当前选取的节点标识对应的第一可用节点),基于此,如果出现多个用户并发同时请求在该可用节点A1内创建域′F0000003′、或域′F0000003′之前已经在该可用节点A1内被其它用户创建等情况,则当前用户请求在该可用节点A1内创建域′F0000003′时,该可用节点A1会检测到域′F0000003′已经被创建。
(2)、HTML返回结果
ⅰ、HTML文本中包含HTTP状态码404以及The requested resource is notavailable(即所请求的资源不可用)等信息。
返回状态码404及相关提示信息的可能原因是:
假设ip为10.233.85.237、端口为8983的SolrServer为发送创建域请求的可用节点A1(即当前选取的节点标识对应的第一可用节点),基于此,用户请求在其它节点B内创建域、且可用节点A1无法与节点B成功通信,从而无法成功创建域′F0000003′。
ⅱ、HTML文本中包含HTTP状态码500以及Internal Error等信息,没有明确的提示信息,经过测试实际为索引域已经存在,且集合对应的所有节点中不包含此节点。
返回状态码500及相关提示信息的可能原因是:
假设ip为10.233.85.237、端口为8983的SolrServer为发送创建域请求的可用节点A1(即当前选取的节点标识对应的第一可用节点),基于此,用户请求在其它节点B内创建域、且可用节点A1可以与节点B成功通信,但域′F0000003′在节点B内已经存在。
(3)、通信故障
假设ip为10.233.85.237、端口为8983的SolrServer为发送创建域请求的可用节点A1(即当前选取的节点标识对应的第一可用节点),但因通信故障,用户无法通过用户设备调用可用节点A1提供的REST服务创建域′F0000003′。
在本实施例中,步骤204之后,还包括步骤A1:
A1:判断是否成功获取所述第一可用节点返回的所述创建状态;如果是,则执行步骤205;如果否,则执行步骤207。
在步骤A1中,用户通过用户设备在SolrCloud集群内创建域时,可能会因用户设备与当前选取的SolrServer节点(即第一可用节点)之间的通信故障,使得用户设备无法正常向该SolrServer节点发送所述第一请求并正常获取该SolrServer节点返回的创建状态,如果出现这种请求,可以通过重新从所述第一列表中选取一个节点标识,并通过执行步骤203,改换向新选取节点标识对应的SolrServer节点发送创建域请求。
步骤205:判断所述创建状态是否表明成功创建域,如果是,则向用户显示用于表示创建成功的消息并结束,如果否,则执行步骤206。
步骤206:当未成功创建域的原因是所述第一可用节点导致的,则判断所述第一列表中是否有未被选取过的节点标识,如果是,则执行步骤207,如果否,则向用户显示用于表示创建失败的消息并结束。
步骤207:从所述第一列表中选取一个未被选取过的节点标识,继续执行步骤203。
基于上述举例,当获取到上述可用节点A1返回的创建状态后,则可以判断所述创建状态是否以JSON对象的形式返回的,如果是JSON对象,则解析JSON对象,获得其中的状态码status,判断状态码是否表示成功创建域′F0000003′,当状态码为0则表示成功创建域,此时显示表示创建成功的消息并结束;如果不是JSON对象,则所述创建状态可能是以HTML对象的形式返回的或者所述创建状态表示通信故障,这些未成功创建域的原因在一定程度上是可以通过更换可用节点解决的,此时,可以从所述第一列表中重新选取一个未被选取过的节点标识,此节点标识对应一个可用节点A2(即当前选取的节点标识对应的第一可用节点),重新执行步骤203,即重新进行域′F0000003′的创建。
在本次选取节点标识之前,需要通过步骤206进行判断,如果所述第一列表中还有未被选取过的节点标识,则随机或按照列表顺序,从所述第一列表中选取一个未被选取过的节点标识,以便改换向该节点标识对应的SolrServer节点发送创建域请求;如果所述第一列表中没有未被选取过的节点标识,此时显示表示创建失败的消息并结束。
进一步地,如果未成功创建域的原因不是当前选取的第一可用节点的本身性质(比如上述HTML返回结果中的ⅱ)或通信原因(比如上述HTML返回结果中的ⅰ或上述用户无法调用第一可用节点提供的REST服务创建域)等造成的,是无法通过切换到其他SolrServer节点重试来改变域的创建结果的,此时不必改换其它第一可用节点进行重试来创建域。但是,可以进一步对创建失败的原因进行分析,参见图3所示的创建结果的判定流程示意图之一,在上述图2所示步骤的基础上,本实施例还包括:
步骤301:当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表。
由于SolrCloud集群的所有状态信息都放在Zookeeper集群中统一维护,所以,从Zookeeper集群中可以获取到当前最新可用的各个SolrServer节点对应的节点标识,每个SolrServer节点唯一对应一节点标识,这些节点标识以列表的形式组成一第二列表。其中,这些可用的SolrServer节点中不包括出现故障或其它原因导致不可用的SolrServer节点。
需要说明的是,因为所述第二列表与所述第一列表的获取时间不同,所以,所述第二列表与所述第一列表中的节点标识或全部相同或部分相同或完全不同。
步骤302:从所述第二列表中选取一节点标识。
在第一次选取节点标识时,如果所述第二列表不为空,则随机或按照列表顺序,从所述第二列表中选取一个节点标识,以便向该节点标识对应的SolrServer节点发送域列表的获取请求;如果所述第二列表为空,则向用户显示用于表示获取失败的消息并结束。
步骤303:向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表。
在本实施例中,将所述第二列表中涉及到的每个节点标识对应的SolrServer节点,均定义为第二可用节点。
在构造域列表的获取请求即构造所述第二请求时,使用SolrCloud集群提供的HTTP Client库,构造所述第二请求,即构造调用Solr REST API所需要的HTTP GET请求对象并设置该请求对象的相关参数,相关参数包括获取内容即域列表。
向当前所选取的节点标识对应的SolrServer节点发送所述第二请求即HTTP请求,调用该SolrServer节点提供的可以用于获取域列表(List Fields)的REST API,即所述第二REST接口,其中,该域列表中包含该SolrServer节点中存储的每个域的域名。
步骤304:判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息。
基于上述举例,如果所述创建状态是以JSON对象的形式返回的,可能是域′F0000003′已经被创建(即上述JSON返回结果中的ⅱ),此时,域名′F0000003′已经在该域列表中。
参见图4所示的创建结果的判定流程示意图之二,与上述图3所示实施例相同之处,请参见上述相关内容的介绍,包括:
步骤401:当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表。
步骤402:从所述第二列表中选取一节点标识。
步骤403:向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表。
步骤404:判断是否成功获取到所述域列表,如果是,则执行步骤406,如果否,则执行步骤405。
步骤405:从所述第二列表中选取一个未被选取过的节点标识,继续执行步骤403。
用户通过用户设备获取当前选取的SolrServer节点(所述第二可用节点)中所有域的域名组成的域列表时,可能会因用户设备与该SolrServer节点之间的通信故障,使得用户设备无法正常向该SolrServer节点发送所述第二请求并正常获取该SolrServer节点返回的域列表,如果出现这种请求,可以通过重新从所述第二列表中选取一个节点标识,并通过执行步骤303,改换向新选取节点标识对应的SolrServer节点发送域列表的获取请求。
步骤406:判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息,如果否,则显示用于表示域创建失败的消息。
本发明实施例提供的在SolrCloud集群中动态创建域的方法,用户在使用时,只需知道zookeeper服务地址即可,而且这个地址在集群中是稳定不变的,以便根据zookeeper服务地址从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;再从第一列表中选择一个SolrServer节点发送请求,请求调用节点提供的REST接口,以通过该REST接口创建一新的域;然后获取该节点返回的创建状态,当创建状态表明成功创建域时,则显示创建成功;当创建状态表明未成功创建域、且未成功创建域的原因是该节点导致的,则从第一列表中选取一个未被选取过的SolrServer节点,并采用其它节点创建域。可见,用户在创建域时,无需知晓SolrCloud集群的内部结构,且可以根据创建状态结果自动进行容错处理,即能够进行故障节点的自动切换。
参见图5,为本发明实施例提供的在SolrCloud集群中动态创建域的装置的组成示意图,包括:
第一列表形成单元501,用于从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;
第一标识选取单元502,用于从所述第一列表中选取一节点标识;
新域创建请求单元503,用于向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用所述第一可用节点提供的第一REST接口,以通过所述第一REST接口创建一新的域;
创建状态获取单元504,用于获取所述第一可用节点返回的创建状态;
创建成功显示单元505,用于当所述创建状态表明成功创建域时,则显示用于表示创建成功的消息;
服务节点切点单元506,用于当所述创建状态表明未成功创建域、且未成功创建域的原因是所述第一可用节点导致的,则从所述第一列表中选取一个未被选取过的节点标识,继续运行所述新域创建请求单元503中的功能。
在本发明实施例中,所述装置还包括:
状态结果判断单元,用于判断是否成功获取所述第一可用节点返回的所述创建状态;如果是,则判断所述创建状态是否表明成功创建域;如果否,则利用所述服务节点切点单元实现所述从所述第一列表中选取一个未被选取过的节点标识的功能。
在本发明实施例中,所述装置还包括:
第二列表形成单元,用于当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表;
第二标识选取单元,用于从所述第二列表中选取一节点标识;
域列表请求单元,用于向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表;
已创建显示单元,用于判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息。
在本发明实施例中,所述装置还包括:
列表结果判断单元,用于在所述域列表请求单元通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表之后,判断是否成功获取到所述域列表;如果是,则执行所述判断所述新的域是否包含在所述域列表中的步骤;如果否,则从所述第二列表中选取一个未被选取过的节点标识,继续运行所述域列表请求单元中的功能。
在本发明实施例中,所述装置还包括:
创建失败显示单元,用于如果所述新的域不包含在所述域列表中,则显示用于表示域创建失败的消息。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种在SolrCloud集群中动态创建域的方法,其特征在于,包括:
从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;
从所述第一列表中选取一节点标识;
向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用所述第一可用节点提供的第一REST接口,以通过所述第一REST接口创建一新的域;
获取所述第一可用节点返回的创建状态;
判断是否成功获取所述第一可用节点返回的所述创建状态;
如果是,则判断所述创建状态是否表明成功创建域;当所述创建状态表明成功创建域时,则显示用于表示创建成功的消息;当所述创建状态表明未成功创建域、且未成功创建域的原因是所述第一可用节点导致的,则从所述第一列表中选取一个未被选取过的节点标识,继续执行所述向当前选取的节点标识对应的第一可用节点发送第一请求的步骤;
如果否,则执行所述从所述第一列表中选取一个未被选取过的节点标识的步骤。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表;
从所述第二列表中选取一节点标识;
向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表;
判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息。
3.根据权利要求2所述的方法,其特征在于,所述通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表之后,还包括:
判断是否成功获取到所述域列表;
如果是,则执行所述判断所述新的域是否包含在所述域列表中的步骤;
如果否,则从所述第二列表中选取一个未被选取过的节点标识,继续执行所述向当前选取的节点标识对应的第二可用节点发送第二请求的步骤。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述新的域不包含在所述域列表中,则显示用于表示域创建失败的消息。
5.一种在SolrCloud集群中动态创建域的装置,其特征在于,包括:
第一列表形成单元,用于从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第一列表;
第一标识选取单元,用于从所述第一列表中选取一节点标识;
新域创建请求单元,用于向当前选取的节点标识对应的第一可用节点发送第一请求,请求调用所述第一可用节点提供的第一REST接口,以通过所述第一REST接口创建一新的域;
创建状态获取单元,用于获取所述第一可用节点返回的创建状态;
状态结果判断单元,用于判断是否成功获取所述第一可用节点返回的所述创建状态;如果是,则判断所述创建状态是否表明成功创建域;如果否,则利用服务节点切点单元从所述第一列表中选取一个未被选取过的节点标识,继续运行所述新域创建请求单元中的功能;
创建成功显示单元,用于当所述创建状态表明成功创建域时,则显示用于表示创建成功的消息;
服务节点切点单元,用于当所述创建状态表明未成功创建域、且未成功创建域的原因是所述第一可用节点导致的,则从所述第一列表中选取一个未被选取过的节点标识,继续运行所述新域创建请求单元中的功能。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二列表形成单元,用于当所述创建状态表明未成功创建域、且未成功创建域的原因不是所述第一可用节点导致的,则从zookeeper集群中获取SolrCloud集群中当前全部可用的SolrServer节点的标识,组成第二列表;
第二标识选取单元,用于从所述第二列表中选取一节点标识;
域列表请求单元,用于向当前选取的节点标识对应的第二可用节点发送第二请求,请求调用所述第二可用节点提供的第二REST接口,以通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表;
已创建显示单元,用于判断所述新的域是否包含在所述域列表中,如果是,则显示用于表示域已被创建的消息。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
列表结果判断单元,用于在所述域列表请求单元通过所述第二REST接口获取所述第二可用节点中的已被创建域的域列表之后,判断是否成功获取到所述域列表;如果是,则执行所述判断所述新的域是否包含在所述域列表中的步骤;如果否,则从所述第二列表中选取一个未被选取过的节点标识,继续运行所述域列表请求单元中的功能。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
创建失败显示单元,用于如果所述新的域不包含在所述域列表中,则显示用于表示域创建失败的消息。
CN201610597618.XA 2016-07-26 2016-07-26 一种在SolrCloud集群中动态创建域的方法及装置 Active CN106230625B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610597618.XA CN106230625B (zh) 2016-07-26 2016-07-26 一种在SolrCloud集群中动态创建域的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610597618.XA CN106230625B (zh) 2016-07-26 2016-07-26 一种在SolrCloud集群中动态创建域的方法及装置

Publications (2)

Publication Number Publication Date
CN106230625A CN106230625A (zh) 2016-12-14
CN106230625B true CN106230625B (zh) 2019-05-31

Family

ID=57534370

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610597618.XA Active CN106230625B (zh) 2016-07-26 2016-07-26 一种在SolrCloud集群中动态创建域的方法及装置

Country Status (1)

Country Link
CN (1) CN106230625B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109677465A (zh) * 2018-12-29 2019-04-26 卡斯柯信号有限公司 用于轨道交通综合监控系统的分布式实时系统架构
CN111352699A (zh) * 2020-02-28 2020-06-30 联想(北京)有限公司 一种容器调度方法、调度器及计算节点

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591934A (zh) * 2011-12-23 2012-07-18 国网电力科学研究院 一种基于Zookeeper实现多个Solr Shards自动扩展与切换的方法
CN103701633A (zh) * 2013-12-09 2014-04-02 国家电网公司 对分布式搜索SolrCloud进行可视化集群应用搭建和维护的系统
CN105760548A (zh) * 2016-03-21 2016-07-13 武汉烽火众智数字技术有限责任公司 一种基于大数据跨域比对的车辆首次出现分析方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150081243A1 (en) * 2013-03-20 2015-03-19 Nec Laboratories America, Inc. Setsudo: Pertubation-based Testing Framework for Scalable Distributed Systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102591934A (zh) * 2011-12-23 2012-07-18 国网电力科学研究院 一种基于Zookeeper实现多个Solr Shards自动扩展与切换的方法
CN103701633A (zh) * 2013-12-09 2014-04-02 国家电网公司 对分布式搜索SolrCloud进行可视化集群应用搭建和维护的系统
CN105760548A (zh) * 2016-03-21 2016-07-13 武汉烽火众智数字技术有限责任公司 一种基于大数据跨域比对的车辆首次出现分析方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Solr的分布式全文检索系统的研究与实现;李戴维等;《计算机与现代化》;20121130;第171-176页

Also Published As

Publication number Publication date
CN106230625A (zh) 2016-12-14

Similar Documents

Publication Publication Date Title
US10742498B2 (en) Application migration system
US11178517B2 (en) Method for changing group type and group creation method and device
US10212031B2 (en) Intelligent configuration discovery techniques
US7412626B2 (en) Method and system for intelligent and adaptive exception handling
US9608958B2 (en) Lightweight directory access protocol (LDAP) join search mechanism
CN109409043A (zh) 应用系统的登录方法、终端设备及介质
CN105989523B (zh) 用于分析的基于策略的数据收集处理及协商的方法与系统
CN111092933A (zh) 用于微服务架构的业务流程管理方法、系统、介质及电子设备
US9438665B1 (en) Scheduling and tracking control plane operations for distributed storage systems
US8938495B2 (en) Remote management system with adaptive session management mechanism
US20080183753A1 (en) Distributed Device Information Management System As A Distributed Information Repository System
CN103038788A (zh) 提供多个网络资源
WO2015149505A1 (zh) Sdn应用集成管理和控制的方法、系统及设备
US20120023409A1 (en) Obtaining and displaying network topology information
CN114791846B (zh) 一种针对云原生混沌工程实验实现可观测性的方法
CN110032451A (zh) 分布式多语言消息实现方法、装置及服务器
TW201724825A (zh) 全域資訊獲取、處理及更新、方法、裝置和系統
CN106411639A (zh) 访问数据的监控方法及系统
TW201724001A (zh) 全域資訊獲取、處理及更新方法、裝置和系統
US11221943B2 (en) Creating an intelligent testing queue for improved quality assurance testing of microservices
CN104869048A (zh) 微博数据的分组处理方法、装置及系统
CN106230625B (zh) 一种在SolrCloud集群中动态创建域的方法及装置
US20200186432A1 (en) System and method for automating the discovery process
CN109992531A (zh) 数据存储方法及装置
CN109614271A (zh) 多个集群数据一致性的控制方法、装置、设备及存储介质

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