CN107135242A - Mongodb集群访问方法、装置及*** - Google Patents
Mongodb集群访问方法、装置及*** Download PDFInfo
- Publication number
- CN107135242A CN107135242A CN201610112085.1A CN201610112085A CN107135242A CN 107135242 A CN107135242 A CN 107135242A CN 201610112085 A CN201610112085 A CN 201610112085A CN 107135242 A CN107135242 A CN 107135242A
- Authority
- CN
- China
- Prior art keywords
- address
- true
- clustered
- virtual address
- virtual
- 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.)
- Granted
Links
Classifications
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1021—Server selection for load balancing based on client or server locations
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种Mongodb集群访问方法、装置及***,所述方法包括:接收用户提供的种子地址;通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,状态信息中包括集群节点的真实地址,从而根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;或者状态信息中包括Mongodb内核根据真实地址与虚拟地址的映射关系,将其它集群节点的真实地址均映射的虚拟地址;从而基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。本申请实施例有效实现了对Mongodb集群的访问。
Description
技术领域
本申请属于数据处理技术领域,具体地说,涉及一种Mongodb集群访问方法、装置及***。
背景技术
Mongodb是一种基于分布式文件存储的数据库***,其***架构为分布式集群架构,数据分散存储在Mongodb集群的集群节点中。用户可以对Mongodb集群进行访问,以获取各个集群节点的状态信息或者实现对Mongodb的数据操作,包括数据的查找、删除、增加、修改等。
用户对Mongodb集群的访问是通过客户端,也即驱动程序(driver)实现的。由于Mongodb集群中包括多个集群节点,用户对Mongodb集群的访问,首先,通过客户端填写Mongodb集群暴露给用户的一个种子地址,发起与Mongodb集群的连接建立请求,其中,该种子地址可以是Mongodb集群中任意一个集群节点的地址。
客户端即可以根据该种子地址,获取与该种子地址对应的集群节点所在Mongodb集群中其他集群节点的状态信息,该状态信息中包括集群节点的地址。
从而基于Mongodb集群中各个集群节点的地址,即可以实现对Mongodb集群中各个集群节点的访问。
由上述描述可知,客户端是根据获取的集群节点的地址,实现对各个集群节点的访问,需要与集群节点建立连接。但是当客户端根据集群节点的地址与集群节点无法建立连接时,比如客户端的地址与集群节点的地址不位于同一个内网中时,则将无法有效实现对Mongodb集群的访问。
发明内容
有鉴于此,本申请所要解决的技术问题是提供了一种Mongodb集群访问方法、装置及***,有效实现了对Mongodb集群的访问。
为了解决上述技术问题,本申请公开了一种Mongodb集群访问方法,包括:
客户端接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括集群节点的真实地址;
根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
优选地,所述根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址包括:
获取预先配置的真实地址与虚拟地址的映射关系;
按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
优选地,所述根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址包括:
获取外部执行程序根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
优选地,所述通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息包括:
每间隔预设时间,通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。
一种Mongodb集群访问方法,包括:
客户端接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址;
基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
一种Mongodb集群访问方法,包括:
代理服务器接收客户端基于各个集群节点的虚拟地址发起的访问请求;所述访问请求为所述客户端根据用户提供的种子地址,获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,所述状态信息包括集群节点真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射为虚拟地址,基于各个集群节点的真实地址映射的虚拟地址而发起的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
一种Mongodb集群访问方法,包括:
接收客户端通过代理服务器发送的集群状态获取请求,所述集群状态获取请求为所述代理服务器,在客户端接收到用户提供的种子地址,通过所述种子地址对应的代理服务器请求获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息时发送的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
一种Mongodb集群访问装置,包括:
第一地址接收模块,用于接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第一地址获取模块,用于通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息;所述状态信息包括集群节点的真实地址;
第一地址映射模块,用于根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
第一访问请求模块,用于基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
优选地,所述第一地址映射模块包括:
关系获取单元,用于获取预先配置的真实地址与虚拟地址的映射关系;
地址映射单元,用于按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
优选地,所述第一地址映射模块具体用于:
获取外部执行程序根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
优选地,所述第一地址获取模块具体用于:
每间隔预设时间,通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。
一种Mongodb集群访问装置,包括:
第二地址接收模块,用于接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第二地址获取模块,用于通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址;
第二访问请求模块,用于基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
一种Mongodb集群访问装置,包括:
第一访问接收模块,用于接收客户端基于各个集群节点的虚拟地址发起的访问请求;所述访问请求为所述客户端根据用户提供的种子地址,获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,其中,所述状态信息包括集群节点真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射为虚拟地址,基于各个集群节点的真实地址映射的虚拟地址而发起的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第一访问转发模块,用于根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
一种Mongodb集群访问装置,包括:
请求接收模块,用于接收客户端通过代理服务器发送的集群状态获取请求,所述集群状态获取请求为所述代理服务器,在客户端接收到用户提供的种子地址,通过所述种子地址对应的代理服务器请求获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息时发送的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第三地址映射模块,用于根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
地址发送模块,用于通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
一种Mongodb集群访问***,包括客户端、Mongodb集群以及代理服务器;
所述客户端,用于接收用户提供的种子地址;通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息,其中,所述状态信息包括集群节点的真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;基于各个集群节点的虚拟地址发起访问请求;其中,所述种子地址为所述Mongodb集群中任一个集群节点映射的真实地址;所述虚拟地址为所述代理服务器的真实地址;
所述代理服务器,用于接收客户端基于虚拟地址发起的访问请求,根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
与现有技术相比,本申请可以获得包括以下技术效果:
客户端基于种子地址,通过代理服务器即可以获得所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。状态信息中包括集群节点的真实地址,根据真实地址与虚拟地址的映射关系,将其它集群节点的真实地址均映射为虚拟地址;或者状态信息中即包括Mongodb内核根据真实地址与虚拟地址的映射关系,将其它集群节点的真实地址均映射的虚拟地址;从而客户端即可以基于各个集群节点的真实地址映射的虚拟地址发起访问请求;代理服务器即会接收到该访问请求,根据所述真实地址与虚拟地址的映射关系,即可以将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点,实现对集群节点的访问,从而有效实现了对Mongodb集群的访问。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的一种Mongodb集群访问***一个实施例的结构示意图;
图2是本申请实施例的一种Mongodb集群访问方法一个实施例的流程图;
图3为本申请提供的一种Mongodb集群访问方法又一个实施例的流程图;
图4为本申请提供的一种Mongodb集群访问方法又一个实施例的流程图;
图5为本申请提供的一种Mongodb集群访问方法又一个实施例的流程图;
图6是本申请实施例的一种Mongodb集群访问装置一个实施例的结构示意图;
图7是本申请实施例的一种Mongodb集群访问装置又一个实施例的结构示意图;
图8是本申请实施例的一种Mongodb集群访问装置又一个实施例的结构示意图。
图9是本申请实施例的一种Mongodb集群访问装置又一个实施例的结构示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
Mongodb是一种基于分布式文件存储的数据库***,用户对Mongodb集群的访问是通过客户端,也即驱动程序(driver)实现的。正如背景技术中所述,如果客户端与Mongodb集群中的集群节点无法建立连接,比如位于不同网络中,客户端的地址与集群节点的地址不在同一内网中,客户端即无法实现对集群节点的访问,以获取集群节点的状态信息,对集群节点进行Mongodb操作,即进行数据查找、删除、增加、修改等。
为了实现客户端对Mongodb集群的访问,发明人在研究中发现,在客户端与集群节点无法连接的情况下,可以通过代理服务器进行请求转发,以实现对集群节点的访问,该代理服务器例如可以是路由服务器,或者可以是对Mongodb集群实现负载均衡的负载均衡器,或者可以实现请求转发的任意一种设备等。
特别是,Mongodb集群作为云服务提供存储服务时候,考虑对外多用户提供服务时,需要在现有网络基础上增加相应的负载均衡服务,因此可以直接利用负载均衡服务器实现请求转发。
如图1所示,本申请实施例提供的Mongodb集群访问***一个实施例的结构示意图,该Mongodb集群访问***包括客户端101、代理服务器102以及Mongodb集群103,其中Mongodb集群103中包括多个集群节点。
但是,通过代理服务器即便可以获得各个集群节点的地址,为了描述上的区分,该地址命名集群节点的真实地址(RIP,real ip),客户端仍然无法基于集群节点的真实地址实现对集群节点的访问。
因此,经过发明人进一步研究,客户端的真实地址与代理服务器的真实地址可以建立连接,代理服务器的真实地址,作为虚拟地址(VIP,virtual ip),可以将虚拟地址与集群节点的真实地址建立映射关系,Mongodb集群暴露给客户端的种子地址,也即是任一个集群节点的真实地址映射的虚拟地址,即代理服务器的真实地址。客户端基于种子地址,通过代理服务器即可以获得所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址,再将每一个集群节点的真实地址均映射为虚拟地址,从而客户端既可以基于各个集群节点的真实地址映射的虚拟地址发起访问请求;代理服务器即会接收到该访问请求,再根据所述真实地址与虚拟地址的映射关系,即可以将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点,实现对集群节点的访问,从而有效实现了对Mongodb集群的访问。
下面结合附图对本申请技术方案进行详细描述。
图2为本申请提供的一种Mongodb集群访问方法一个实施例的流程图,本申请所述技术方案主要应用于图1所述的网络架构中,对Mongodb集群访问是通过客户端,也即驱动程序实现,本实施例主要应用于客户端中。
该方法可以包括以下几个步骤:
201:接收用户提供的种子地址。
其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址。
Mongodb集群的搭建有多种实现方式,与现有技术相同,在此不再赘述,集群节点即是指Mongodb集群中的物理机。
其中,该种子地址对应的集群节点可以是Mongodb集群中的主节点。
该种子地址是Mongodb集群访问***暴露给用户的,也即用户已知该种子地址,与现有技术不同,该种子地址并不是任一个集群节点的真实地址,而是其真实地址映射的代理服务器对应的虚拟地址。
在对Mongodb集群进行访问时,用户向客户端提供该种子地址,触发客户端基于该种子地址发起与Mongodb集群的连接建立请求。
202:通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。
其中,所述状态信息包括集群节点的真实地址。
该种子地址为代理服务器的真实地址,因此通过代理服务器即可以获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,并转发至客户端。
其中,集群节点的状态信息包括集群节点的真实地址、节点状态、节点是否为主节点或备节点等信息。
因此客户端即可以获得Mongodb集群中各个集群节点的真实地址。
为了实现对各个集群节点的状态信息的监控,作为又一个实施例,可以每间隔预设时间通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息
203:根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
客户端获得其它集群节点的真实地址之后,根据真实地址与虚拟地址的映射关系,首先将真实地址映射为虚拟地址。
真实地址与虚拟地址的映射关系可以预先配置并缓存在客户端中,或者存储在数据库中。
204:基于各个集群节点的虚拟地址发起访问请求。
从而该访问请求即可以由所述虚拟地址对应的代理服务器,根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点,从而实现对集群节点的访问。
代理服务器中预先存储有真实地址与虚拟地址的映射关系。
代理服务器为负载均衡器时,在请求转发的过程中,根据不同的均衡策略可以提供相应负载的能力,如轮训转发,权重转发。
本申请实施例所述的虚拟地址或者集群节点的真实地址由IP(InternetProtocol,网络之间互联的协议)地址和Port(端口)构成。不同真实地址对应不同虚拟地址。
该访问请求可以用于实现对集群节点的数据操作,包括查找、删除、增加、修改等。
本实施例中,客户端基于种子地址,通过代理服务器即可以获得所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址。每一个集群节点的真实地址均映射为虚拟地址,从而客户端即可以基于各个集群节点的真实地址映射的虚拟地址发起访问请求;再由虚拟地址转发至真实地址,从而无论客户端与集群节点是否可以直接连接,均可以实现对集群节点的访问,从而有效实现了对Mongodb集群的访问。
其中,真实地址与虚拟地址的映射关系可以预先配置,缓存在客户端中,或者存储在数据库中。
因此,作为又一个实施例,客户端根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址可以是:
获取预先配置的真实地址与虚拟地址的映射关系;
按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
其中,获取预先配置的真实地址与虚拟地址的映射关系之前,可以先查找是否缓存真实地址与虚拟地址的映射关系,如果否,再从数据库中获取预先配置的真实地址与虚拟地址的映射关系,如果是,则可以直接按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
为了实现客户端能够具备按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址的功能,可以修改客户端的源代码,使得所述客户端能够具备按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址的功能。
作为又一个实施例,所述获取根据私网真实地址与虚拟地址的映射关系,将获取所述其它集群节点的真实地址映射的虚拟地址包括:
获取外部执行程序根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
具体的,外部执行程序在客户端运行时,可以注入客户端中获取集群节点状态信息的代码段,修改获取的状态信息,根据真实地址与虚拟地址的映射关系,将状态信息中的真实地址改写为映射的虚拟地址。
外部执行程序注入客户端的代码段,可以采用黑客(HACK)技术实现。
在该实施例中,客户端为运行与jvm(Java Virtual Machine,Java虚拟机)之上的客户端,从而可以利用jvm特性,实现外部执行程序的注入。
图3为本申请提供的一种Mongodb集群访问方法又一个实施例的流程图,对Mongodb集群访问是通过客户端,也即驱动程序实现,通过代理服务器进行请求转发,本实施例主要应用于客户端中,
该方法可以包括以下几个步骤:
301:接收用户提供的种子地址。
其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址。
302:通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。
所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
303:基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
本实施例中,是由Mongodb内核根据真实地址与虚拟地址映射关系,将其它集群节点的真实地址映射的虚拟地址。从而客户端通过代理服务器获取的其它集群节点的状态信息中,即包括的是其他集群节点对应的虚拟地址,而不是真实地址。因此客户端可以直接基于状态信息中的虚拟地址发起访问请求。
由Mongodb内核根据真实地址与虚拟地址映射关系,将其它集群节点的真实地址映射为虚拟地址,可以通过修改Mongodb内核的源代码,使得Mongodb内核具备该功能,在映射层面上返回映射后的虚拟地址。
图4为本申请提供的一种Mongodb集群访问方法又一个实施例的流程图,对Mongodb集群访问是通过客户端,也即驱动程序实现,通过代理服务器进行请求转发,本实施例主要应用于代理服务器中。
该方法可以包括以下几个步骤:
401:接收客户端基于各个集群节点的虚拟地址发起的访问请求。
其中,所述访问请求为所述客户端根据用户提供的种子地址,获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址;根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射为虚拟地址,基于各个集群节点的真实地址映射的虚拟地址而发起的。
其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址。
402:根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
该访问请求可以用于实现对集群节点的数据操作,包括查找、删除、增加、修改等。
本实施例中,客户端基于种子地址,通过代理服务器即可以获得所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址。每一个集群节点的真实地址均映射为虚拟地址,从而客户端即可以基于各个集群节点的真实地址映射的虚拟地址发起访问请求;再由虚拟地址转发至真实地址,从而无论客户端与集群节点是否可以直接连接,均可以实现对集群节点的访问,从而有效实现了对Mongodb集群的访问。
其中,所述真实地址与虚拟地址的映射关系可以预先配置,可以在客户端中进行缓存,或者存储在数据库中。
图5为本申请实施例提供的一种Mongodb集群访问方法又一个实施例的流程图,对Mongodb集群访问是通过客户端,也即驱动程序实现,通过代理服务器进行请求转发,本实施例主要应用于Mongodb集群中。
该方法可以包括以下几个步骤:
501:接收客户端通过代理服务器发送的集群状态获取请求。
所述集群状态获取请求为所述代理服务器,在客户端接收到用户提供的种子地址,通过所述种子地址对应的代理服务器请求获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息时发送的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
502:根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
503:通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
本实施例中,由Mongodb集群中的Mongodb内核根据真实地址与虚拟地址映射关系,将其它集群节点的真实地址映射的虚拟地址。从而客户端通过代理服务器获取的其它集群节点的状态信息中,即包括的是其他集群节点对应的虚拟地址,而不是真实地址。因此客户端可以直接基于状态信息中的虚拟地址发起访问请求。
由Mongodb内核根据真实地址与虚拟地址映射关系,将其它集群节点的真实地址映射为虚拟地址,可以通过修改Mongodb内核的源代码,使得Mongodb内核具备该功能,在映射层面上返回映射后的虚拟地址。
图6为本申请提供的一种Mongodb集群访问装置一个实施例的结构示意图,该装置可以配置在客户端中,该装置可以包括:
第一地址接收模块601,用于接收用户提供的种子地址。
其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址。
Mongodb集群的搭建有多种实现方式,与现有技术相同,在此不再赘述,集群节点即是指Mongodb集群中的物理机。
其中,该种子地址对应的集群节点可以是Mongodb集群中的主节点。
该种子地址是Mongodb集群访问***暴露给用户的,也即用户已知该种子地址,与现有技术不同,该种子地址并不是任一个集群节点的真实地址,而是其真实地址映射的代理服务器的虚拟地址。
在对Mongodb集群进行访问时,用户向客户端提供该种子地址,触发客户端基于该种子地址发起与Mongodb集群的连接建立请求。
第一地址获取模块602,用于通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息。
所述状态信息中包括集群节点的真实地址。
该种子地址为代理服务器的真实地址,因此通过代理服务器即可以获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,并转发至客户端。
其中,集群节点的状态信息包括真实地址、节点状态、节点是否为主节点或备节点等信息。
因此即可以获得Mongodb集群中各个集群节点的真实地址。
为了实现对各个集群节点的状态信息的监控,可以每间隔预设时间即通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息。
第一地址映射模块603,用于根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
真实地址与虚拟地址的映射关系可以预先配置,缓存在客户端中或者存储在数据库中。
代理服务器中也预先配置了真实地址与虚拟地址的映射关系。
第一访问请求模块604,用于基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器,根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
从而该访问请求即可以通过虚拟地址转发至映射的真实地址。
具体的,是由所述虚拟地址对应的代理服务器,根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点,从而实现对集群节点的访问。
代理服务器为负载均衡器时,在请求转发的过程中,根据不同的均衡策略可以提供相应负载的能力,如轮训转发,权重转发。
该访问请求可以用于实现对集群节点的数据操作,包括查找、删除、增加、修改等。
本实施例中,基于种子地址,通过代理服务器即可以获得所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址。每一个集群节点的真实地址均映射为虚拟地址,从而即可以基于各个集群节点的真实地址映射的虚拟地址发起访问请求;再由虚拟地址转发至真实地址,即可以实现了对集群节点的访问,从而有效实现了对Mongodb集群的访问。
其中,真实地址与虚拟地址的映射关系可以在客户端中预先配置,因此,作为又一个实施例,所述第一地址映射模块可以包括:
关系获取单元,用于从获取预先配置的真实地址与虚拟地址的映射关系;
地址映射单元,用于按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
其中,关系获取单元获取预先配置的真实地址与虚拟地址的映射关系之前,可以先查找是否缓存真实地址与虚拟地址的映射关系,如果否,再从数据库中获取预先配置的真实地址与虚拟地址的映射关系,如果是,则可以直接按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
作为又一个实施例,所述第一地址映射模块可以具体用于:
获取外部执行程序根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
具体的,外部执行程序在客户端运行时,可以注入客户端中获取集群节点状态信息的代码段,修改获取的状态信息,根据真实地址与虚拟地址的映射关系,将状态信息中的真实地址改写为映射的虚拟地址。
外部执行程序注入客户端的代码段,可以采用黑客技术实现。
在该实施例中,客户端为运行与jvm(Java Virtual Machine,Java虚拟机)之上的客户端,从而可以利用jvm特性,实现外部执行程序的注入。
图7为本申请提供的一种Mongodb集群访问装置又一个实施例的结构示意图,该装置可以配置在客户端中,该装置可以包括:
第二地址接收模块701,用于接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第二地址获取模块702,用于通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址;
第二访问请求模块703,用于基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
图8为本申请提供的一种Mongodb集群访问装置又一个实施例的结构示意图,该装置可以配置在代理服务器中,该装置可以包括:
第一访问接收模块801,用于接收客户端基于各个集群节点的虚拟地址发起的访问请求。
其中,所述访问请求为所述客户端根据用户提供的种子地址,获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址;根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射为虚拟地址,基于各个集群节点的真实地址映射的虚拟地址而发起的。
其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址。
第一访问转发模块802,用于根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
该访问请求可以用于实现对集群节点的数据操作,包括查找、删除、增加、修改等。
本实施例中,客户端基于种子地址,通过本实施例所述装置即可以获得所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的真实地址。每一个集群节点的真实地址均映射为虚拟地址,从而客户端即可以基于各个集群节点的真实地址映射的虚拟地址发起访问请求;再由虚拟地址转发至真实地址,从而无论客户端与集群节点是否可以直接连接,均可以实现对集群节点的访问,从而有效实现了对Mongodb集群的访问。
其中,所述真实地址与虚拟地址的映射关系可以是预先配置的,缓存在客户端中或者存储在数据库中。
图9为本申请提供的一种Mongodb集群访问装置又一个实施例的结构示意图,该装置可以配置在Mongodb集群的Mongodb内核,该装置可以包括:
请求接收模块901,用于接收客户端通过代理服务器发送的集群状态获取请求,所述集群状态获取请求为所述代理服务器,在客户端接收到用户提供的种子地址,通过所述种子地址对应的代理服务器请求获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息时发送的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第三地址映射模块902,用于根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
地址发送模块903,用于通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
本实施例中,由Mongodb集群中的Mongodb内核根据真实地址与虚拟地址映射关系,将其它集群节点的真实地址映射的虚拟地址。从而客户端通过代理服务器获取的其它集群节点的状态信息中,即包括的是其他集群节点对应的虚拟地址,而不是真实地址。因此客户端可以直接基于状态信息中的虚拟地址发起访问请求。
如图1所示,本申请还提供了一种Mongodb集群访问***,包括客户端101、代理服务器102以及Mongodb集群103。
作为一种可能的实现方式,
所述客户端101,用于接收用户提供的种子地址;通过代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息,其中,所述状态信息包括集群节点的真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;基于各个集群节点的虚拟地址发起访问请求;其中,所述种子地址为所述Mongodb集群中任一个集群节点映射的真实地址,所述虚拟地址为代理服务器的真实地址。
所述代理服务器102,用于接收客户端基于虚拟地址发起的访问请求,根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
其中,代理服务器102可以是负载均衡器。
本申请实施例在实际应用中,在代码层次上,对Mongodb集群访问具体可以按照如下方式实现:
1、用户填写种子地址(seed ip),触发客户端发起同mongodb集群的连接建立请求。
2、客户端在获得seed ip后,创建一个默认的defaultserver;defaulsever会创建一个ServerMonitor对象。
3、ServerMonitor在创建的时候会启用一个守护进程,即monitorThread,本守护进程默认情况下每隔10秒执行一个mongodb提供的命令集rs.status(),以获取其它集群节点的状态信息。
状态信息中包括集群节点的RIP,RIP存储在hostlist中
4、monitorThread获取到其它集群节点的状态信息之后,调用mappingservice。
5、mappingservice会通过mappingconfig读取VIP和RIP之间的映射关系。
6、mappingconfig先通过mappingcache查看缓存是否有数据,如果有直接返回,如果没有则调用Mappingdao从代理服务器中获取并存储在缓存中。
7、mappingservice获取到映射关系,将RIP映射为VIP,改写hostlist。
8、改写后的hostlist返回给clusterFactory,clusterFactory创建一个集群对象cluster给mongodbClient。
9、至此,用户获取到各个集群节点的VIP。
10、基于各个集群节点的VIP,monitorThread可以每间隔10s执行命令集rs.status(),以获取各个集群节点的状态信息,实现对集群节点的监控。
此外,基于各个集群节点的VIP还可以实现对集群节点中数据的操作。
在上述描述中,mongodbclient指driver的一个功能某块,作为用户使用driver的入口。
Cluster为集群的抽象,代表一个mongodb的集群对象,包含集群的相关属性。
Clusterfactory为cluster对象的生产者,集群对象的创建又此对象完成。
defaultserver,默认的实际获取集群状态的服务的对象,此对象会创建一个servermomitor,而servermomitor会启动一个守护进程即monitorthread,此守护进程用来获取mongodb集群的集群节点的状态信息。
在上述描述中,与现有技术不同之处在于,获取到其它集群节点的状态信息之后,会通过mappingservive、mappingconfig、mappingcache、mappingdao等功能,实现真实地址对虚拟地址的映射,使得客户端即便与集群节点无法直接连接,也可以基于虚拟地址实现对各个集群节点的访问,从而实现了对Mongodb集群的访问。
作为又一种可能的实现方式,所述客户端用于接收用户提供的种子地址,其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址;基于各个集群节点的虚拟地址发起访问请求;
所述代理服务器,用于接收客户端基于虚拟地址发起的访问请求;将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
所述Mongodb集群中的Mongodb内核,用于根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。
Claims (15)
1.一种Mongodb集群访问方法,其特征在于,包括:
客户端接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括集群节点的真实地址;
根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
2.根据权利要求1所述的方法,其特征在于,所述根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址包括:
获取预先配置的真实地址与虚拟地址的映射关系;
按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
3.根据权利要求1所述的方法,其特征在于,所述根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址包括:
获取外部执行程序根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
4.如权利要求1所述的方法,其特征在于,所述通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息包括:
每间隔预设时间,通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。
5.一种Mongodb集群访问方法,其特征在于,包括:
客户端接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址;
基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
6.一种Mongodb集群访问方法,其特征在于,包括:
代理服务器接收客户端基于各个集群节点的虚拟地址发起的访问请求;所述访问请求为所述客户端根据用户提供的种子地址,获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,所述状态信息包括集群节点真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射为虚拟地址,基于各个集群节点的真实地址映射的虚拟地址而发起的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
7.一种Mongodb集群访问方法,其特征在于,包括:
接收客户端通过代理服务器发送的集群状态获取请求,所述集群状态获取请求为所述代理服务器,在客户端接收到用户提供的种子地址,通过所述种子地址对应的代理服务器请求获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息时发送的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
8.一种Mongodb集群访问装置,其特征在于,包括:
第一地址接收模块,用于接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第一地址获取模块,用于通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息;所述状态信息包括集群节点的真实地址;
第一地址映射模块,用于根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
第一访问请求模块,用于基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
9.如权利要求8所述的装置,其特征在于,所述第一地址映射模块包括:
关系获取单元,用于获取预先配置的真实地址与虚拟地址的映射关系;
地址映射单元,用于按照所述真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址。
10.如权利要求8所述的装置,其特征在于,所述第一地址映射模块具体用于:
获取外部执行程序根据真实地址与虚拟地址的映射关系,将所述其它集群节点的真实地址映射的虚拟地址。
11.如权利要求8所述的装置,其特征在于,所述第一地址获取模块具体用于:
每间隔预设时间,通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息。
12.一种Mongodb集群访问装置,其特征在于,包括:
第二地址接收模块,用于接收用户提供的种子地址;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第二地址获取模块,用于通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息;所述状态信息包括Mongodb内核根据真实地址与虚拟地址映射关系,将所述其它集群节点的真实地址映射的虚拟地址;
第二访问请求模块,用于基于各个集群节点的虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
13.一种Mongodb集群访问装置,其特征在于,包括:
第一访问接收模块,用于接收客户端基于各个集群节点的虚拟地址发起的访问请求;所述访问请求为所述客户端根据用户提供的种子地址,获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息,其中,所述状态信息包括集群节点真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射为虚拟地址,基于各个集群节点的真实地址映射的虚拟地址而发起的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第一访问转发模块,用于根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
14.一种Mongodb集群访问装置,其特征在于,包括:
请求接收模块,用于接收客户端通过代理服务器发送的集群状态获取请求,所述集群状态获取请求为所述代理服务器,在客户端接收到用户提供的种子地址,通过所述种子地址对应的代理服务器请求获取所述种子地址对应的集群节点所在Mongodb集群中其它集群节点的状态信息时发送的;其中,所述种子地址为Mongodb集群中任一个集群节点的真实地址映射的虚拟地址;所述虚拟地址为代理服务器的真实地址;
第三地址映射模块,用于根据真实地址与虚拟地址映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;
地址发送模块,用于通过所述代理服务器将包括所述其它集群节点虚拟地址的状态信息,发送至所述客户端,以便于所述客户端基于各个集群节点虚拟地址发起访问请求;由所述代理服务器将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
15.一种Mongodb集群访问***,其特征在于,包括客户端、Mongodb集群以及代理服务器;
所述客户端,用于接收用户提供的种子地址;通过所述代理服务器获取所述种子地址对应的集群节点所在Mongodb集群中的其它集群节点的状态信息,其中,所述状态信息包括集群节点的真实地址;根据真实地址与虚拟地址的映射关系,获取所述其它集群节点的真实地址映射的虚拟地址;基于各个集群节点的虚拟地址发起访问请求;其中,所述种子地址为所述Mongodb集群中任一个集群节点映射的真实地址;所述虚拟地址为所述代理服务器的真实地址;
所述代理服务器,用于接收客户端基于虚拟地址发起的访问请求,根据所述真实地址与虚拟地址的映射关系,将所述访问请求转发至所述虚拟地址映射的真实地址对应的集群节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610112085.1A CN107135242B (zh) | 2016-02-29 | 2016-02-29 | Mongodb集群访问方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610112085.1A CN107135242B (zh) | 2016-02-29 | 2016-02-29 | Mongodb集群访问方法、装置及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107135242A true CN107135242A (zh) | 2017-09-05 |
CN107135242B CN107135242B (zh) | 2020-06-05 |
Family
ID=59721239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610112085.1A Active CN107135242B (zh) | 2016-02-29 | 2016-02-29 | Mongodb集群访问方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107135242B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106169963A (zh) * | 2016-09-20 | 2016-11-30 | 北京百度网讯科技有限公司 | 服务页面的访问方法及***、代理服务器 |
CN111131492A (zh) * | 2019-12-31 | 2020-05-08 | 中国联合网络通信集团有限公司 | 节点访问方法和*** |
CN111711710A (zh) * | 2020-05-27 | 2020-09-25 | 北京金山云网络技术有限公司 | 访问MongoDB复制集集群的方法、装置、设备及存储介质 |
CN111726399A (zh) * | 2020-06-08 | 2020-09-29 | 中国工商银行股份有限公司 | Docker容器安全访问方法及装置 |
CN114168221A (zh) * | 2021-11-30 | 2022-03-11 | 紫光云(南京)数字技术有限公司 | 一种云管理平台上重启mongodb集群的方法 |
CN114338597A (zh) * | 2021-11-30 | 2022-04-12 | 奇安信科技集团股份有限公司 | 一种网络访问方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1777869A (zh) * | 2003-03-21 | 2006-05-24 | 英特尔公司 | 将分布式对象管理为单一表示的***和方法 |
CN102281180A (zh) * | 2011-07-14 | 2011-12-14 | 冶金自动化研究设计院 | 应用于不同局域网的终端相互通讯的虚拟网卡通讯装置 |
CN102612014A (zh) * | 2011-01-24 | 2012-07-25 | 上海贝尔股份有限公司 | 使用hip对传感器网络进行移动性管理的方法和装置 |
CN102932461A (zh) * | 2012-11-06 | 2013-02-13 | 深信服网络科技(深圳)有限公司 | 网络加速传输方法及装置 |
US20130173806A1 (en) * | 2011-12-31 | 2013-07-04 | Level 3 Communications, Llc | Load-balancing cluster |
US20150089608A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Automatic creation and management of credentials in a distributed environment |
CN105242881A (zh) * | 2015-10-12 | 2016-01-13 | 创新科软件技术(深圳)有限公司 | 分布式存储***及其数据读写方法 |
-
2016
- 2016-02-29 CN CN201610112085.1A patent/CN107135242B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1777869A (zh) * | 2003-03-21 | 2006-05-24 | 英特尔公司 | 将分布式对象管理为单一表示的***和方法 |
CN102612014A (zh) * | 2011-01-24 | 2012-07-25 | 上海贝尔股份有限公司 | 使用hip对传感器网络进行移动性管理的方法和装置 |
CN102281180A (zh) * | 2011-07-14 | 2011-12-14 | 冶金自动化研究设计院 | 应用于不同局域网的终端相互通讯的虚拟网卡通讯装置 |
US20130173806A1 (en) * | 2011-12-31 | 2013-07-04 | Level 3 Communications, Llc | Load-balancing cluster |
CN102932461A (zh) * | 2012-11-06 | 2013-02-13 | 深信服网络科技(深圳)有限公司 | 网络加速传输方法及装置 |
US20150089608A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Automatic creation and management of credentials in a distributed environment |
CN105242881A (zh) * | 2015-10-12 | 2016-01-13 | 创新科软件技术(深圳)有限公司 | 分布式存储***及其数据读写方法 |
Non-Patent Citations (1)
Title |
---|
曾文英等: "基于Java的NAT软交换代理及存储集群***研究", 《计算机工程与设计》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106169963A (zh) * | 2016-09-20 | 2016-11-30 | 北京百度网讯科技有限公司 | 服务页面的访问方法及***、代理服务器 |
CN106169963B (zh) * | 2016-09-20 | 2019-07-23 | 北京百度网讯科技有限公司 | 服务页面的访问方法及***、代理服务器 |
CN111131492A (zh) * | 2019-12-31 | 2020-05-08 | 中国联合网络通信集团有限公司 | 节点访问方法和*** |
CN111711710A (zh) * | 2020-05-27 | 2020-09-25 | 北京金山云网络技术有限公司 | 访问MongoDB复制集集群的方法、装置、设备及存储介质 |
CN111726399A (zh) * | 2020-06-08 | 2020-09-29 | 中国工商银行股份有限公司 | Docker容器安全访问方法及装置 |
CN111726399B (zh) * | 2020-06-08 | 2022-10-18 | 中国工商银行股份有限公司 | Docker容器安全访问方法及装置 |
CN114168221A (zh) * | 2021-11-30 | 2022-03-11 | 紫光云(南京)数字技术有限公司 | 一种云管理平台上重启mongodb集群的方法 |
CN114338597A (zh) * | 2021-11-30 | 2022-04-12 | 奇安信科技集团股份有限公司 | 一种网络访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107135242B (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107135242A (zh) | Mongodb集群访问方法、装置及*** | |
US11354039B2 (en) | Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system | |
US10838916B2 (en) | Access control for unprotected data storage system endpoints | |
US20200314055A1 (en) | Delegating dns records to additional providers | |
CN103403707B (zh) | 用于数据库代理请求交换的***和方法 | |
US10795577B2 (en) | De-duplication of client-side data cache for virtual disks | |
CN108616490A (zh) | 一种网络访问控制方法、装置及*** | |
CN107317792A (zh) | 一种实现虚拟专有网络中访问控制的方法与设备 | |
CN104601666B (zh) | 日志服务方法及云平台 | |
CN106648838B (zh) | 一种资源池管理的配置方法及装置 | |
CN108243079A (zh) | 一种基于vpc进行网络访问的方法与设备 | |
CN108156274A (zh) | 一种vpn网络中使设备获得域名解析结果的方法及装置 | |
US8380806B2 (en) | System and method for absolute path discovery by a storage virtualization system | |
US11303606B1 (en) | Hashing name resolution requests according to an identified routing policy | |
CN104702707B (zh) | 一种数据处理方法及装置 | |
US10897483B2 (en) | Intrusion detection system for automated determination of IP addresses | |
CN110413846A (zh) | 用于网页镜像的数据处理方法、装置及计算机可读存储介质 | |
CN105610945A (zh) | 一种搜索流量入口本地化处理方法及装置 | |
CN115242882A (zh) | 一种基于传输层路由访问k8s容器环境的方法及装置 | |
CN109495525A (zh) | 网络组件、解析内容标识的方法和计算机可读存储介质 | |
US20230042738A1 (en) | Database System with Run-Time Query Mode Selection | |
US9378140B2 (en) | Least disruptive cache assignment | |
CN107306273A (zh) | 数据下载的请求方法 | |
US9652264B2 (en) | Methods, systems, and computer readable media for providing a unified framework to support diverse data generation engines | |
EP3170089A1 (en) | Brokering data access requests and responses |
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 |