CN102999571A - 一种集群中单机多节点的实现方法 - Google Patents
一种集群中单机多节点的实现方法 Download PDFInfo
- Publication number
- CN102999571A CN102999571A CN2012104476446A CN201210447644A CN102999571A CN 102999571 A CN102999571 A CN 102999571A CN 2012104476446 A CN2012104476446 A CN 2012104476446A CN 201210447644 A CN201210447644 A CN 201210447644A CN 102999571 A CN102999571 A CN 102999571A
- Authority
- CN
- China
- Prior art keywords
- nodes
- cluster
- node
- server
- token
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库配置领域,提供了一种集群中单机多节点的实现方法,包括在集群中服务器上部署多个节点后,为每个节点增加一个节点信息类;将节点信息类加入节点信息列表,将节点信息类加入到消息的消息头,并更新网络连接模块中的节点信息列表,通知到集群中所有节点; 将服务器磁盘进行编号,并列出服务器磁盘的二维列表;按照节点数目计算出把一致性哈希环等分的令牌Token列表;按照深度优先策略遍历二维表,将磁盘编号和Token一一对应起来;挑选两个以上节点做种子节点,将种子节点与token信息写入到程序的配置文件,部署到节点对应的磁盘文件系统,启动种子节点,再依次启动其它节点,以完成集群搭建。
Description
技术领域
本发明涉及数据库配置领域,特别涉及一种集群中单机多节点的实现方法。
背景技术
Cassandra 是目前在分布式大数据存储领域,应用比较广泛的一种非关系数据库。分布式数据库可以称为为集群,一般分布式数据库有两个核心模块,存储引擎模块和分布式模块。Cassandra的存储引擎模块类似于Google的BigTable模型,而分布式模块来自于Amazon的Dynamo模型。两种模块的完美结合,成为存储和处理大规模非结构化及半结构化数据最理想的解决方案。与领域内其它分布式非关系数据库相比,其突出优势在于:
1、无单点故障:Cassandra 集群中没有中心节点,任何一台服务器发生故障都不会影响整个集群的对外服务质量,这意味着其可以提供不间断的稳定服务。
2、便利的故障恢复及水平扩展能力:通过简单的替换故障服务器实现故障恢复,通过添加新服务器来实现水平扩展, 支持迅速扩张的数据规模;恢复和扩展期间,不需改动或重启现有节点。
3、写入速度快,性能高:在Cassandra中,写操作被均匀的分散到集群的各个节点上,且数据首先被保存在内存中,达到一定量再批量持久化到磁盘;所以,其写入性能极佳。
Cassandra 集群的部署策略,基于Dynamo模型来实现。Cassandra集群由若干个节点组成,每个节点都保存集群内所有其它节点的信息列表, 每个节点的信息和其所在服务器的IP地址一一对应。节点之间的通讯,通过Gossip协议相互发送各种状态和事件消息进行通讯,进行集群内的状态同步和事件通知。消息体中包含发送者的IP地址,以表明来源;这种机制,使得一台服务器上只能部署一个Cassandra节点。如图1所示,为Cassandra 集群的拓扑结构图,其中,9个节点组成一个集群,共使用了9台服务器。
按照BigTable 模型, Cassandra集群中,每个节点的数据文件到了一定数目,将按一定规则进行合并成更大的文件。合并机制的存在,使得一个节点不能很好的利用多块磁盘,如果合并后的大文件超出了一块磁盘的容量,将无法存放。
Cassandra 使用的Dynamo模型,要求集群中节点和服务器必须一一对应,同时Cassandra所采用的BigTable 存储引擎,也限制了一个节点只能使用一块磁盘,大大限制了对多磁盘服务器的硬件利用率。
发明内容
本发明解决的技术问题在于提供了一种集群中单机多节点的实现方法,以克服Cassandra只能在一台服务器上部署一个节点,无法充分利用多块磁盘的局限。
为解决上述问题,本发明提供的一种集群中单机多节点的实现方法包括,
在集群中服务器上部署多个节点后,为每个节点增加一个节点信息类;将节点信息类加入节点信息列表,将节点信息类加入到消息的消息头,并更新网络连接模块中的节点信息列表,通知到集群中所有节点;
将服务器磁盘进行编号,并列出服务器磁盘的二维列表;
按照节点数目计算出把一致性哈希环等分的令牌Token列表;
按照深度优先策略遍历二维表,将磁盘编号和Token一一对应起来;
挑选两个以上节点做种子节点,所述种子节点不能在同一台服务器上,将种子节点与token信息写入到程序的配置文件, 部署到节点对应的磁盘文件系统,然后启动种子节点,再依次启动其它节点,以完成集群搭建。
上述的方法,其中,所述节点信息类封装所在服务器的IP地址,以及节点间通讯端口;以IP地址以及内部通讯端口作为一个节点的唯一标识。
上述的方法,其中,所述通知到集群中所有节点具体通过Gossip协议通知其他节点;Gossip协议的实现过程:当一个节点信息发生改变,随机选择2-3个节点,根据IP地址和端口号告知信息的变化,随机选择的2-3个节点又会随机的选择其他节点告知,依次类推,所有的节点都会接收到集群中任一节点信息的改变。
上述的方法,其中,把哈希环等分是使集群中各节点所分配的数据是等量的。
上述的方法,其中,所述启动种子节点,再依次启动其它节点,以完成集群搭建具体包括,
种子节点先启动,其他节点启动之后即刻将自身的信息发给种子节点,然后种子节点再将收到的信息转发集群中所有节点,如此循环往复,实现集群中所有节点信息的共享,完成集群搭建。
采用本发明的技术方案,提供了一种更灵活高效的部署方式,进而解决现有技术硬件利用率低的问题; 同时,设计了一种灵活的节点部署方式,避免了在一台服务器上存储一个数据的多个拷贝;该技术方案充分利用磁盘性能(数据库的主要瓶颈在于磁盘的随机寻道性能),有效利用多块磁盘, 单台服务器能保存更多数据;对比原来的部署方法, 综合硬件成本大幅降低。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是 Cassandra 集群的拓扑结构图;
图2是本发明实施例流程图;
图3是利用3台服务器搭建集群示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图2所示,是本发明实施例流程图,提供了一种集群中单机多节点的实现方法,在一台服务器上部署多个节点, 每个节点部署在一块独立的磁盘上,从而充分利用多块磁盘的性能和容量。具体包括,
步骤S201,在一台服务器上部署多个节点后,为每个节点增加一个节点信息类,将节点信息类加入节点信息列表,将节点信息类加入到消息的消息头,并更新网络连接模块中的节点信息列表,通知到集群中所有节点;
所述节点信息类,封装所在服务器的IP地址,以及节点间通讯端口;以IP地址以及内部通讯端口作为一个节点的唯一标识;这样的话,如果一台服务器上部署了多个节点,尽管其所在服务器的IP地址相同,但端口不同,故不会引起冲突。
所述节点信息列表即集群中所有节点信息的集合。
通知到集群中所有节点具体通过Gossip协议通知其他节点;Gossip协议的实现过程:当一个节点信息发生改变,它会随机选择2-3个节点(根据他们的IP地址和端口号)告知信息的变化,随机选择的2-3个节点又会随机的选择其他节点告知,依次类推,所有的节点都会接收到集群中任一节点信息的改变。
消息模块即Cassandra中专门负责消息管理的模块。节点之间发送的每条消息都是由消息头和消息体组成,消息头即包含消息的类型和来源的信息。
当两个节点之间通讯时,需知道接收方的端口号,在旧的网络连接模块中,集群中所有节点拥有相同的端口号,这样就导致一台机器只能部署一个节点,而新的网络连接模块中,节点信息列表(包含集群中所有节点的端口号)的存在解决了这一弊端,由于每个节点都拥有集群中所有节点的节点信息列表,从而使节点之间的通讯变得透明且便捷。
修改之后, 服务器和节点之前一对一的关系解除, 变为一对多的关系。 一台服务器上部署几个节点,可以根据其磁盘数目灵活配置。
如图3所示,是利用3台服务器搭建集群示意图,假设现在有3台服务器, 每台服务器上有3块可供使用的磁盘,用来搭建一9个节点的集群。
步骤S202,将服务器磁盘进行编号,并列出服务器磁盘的二维列表;
如服务器A, B, C, A1、A2、A3是服务器A上的磁盘编号,B1、B2、B3是服务器B上的磁盘编号,C1、C2、C3是服务器C上的磁盘编号,对应的二维列表如下:
A1 | A2 | A3 |
B1 | B2 | B3 |
C1 | C2 | C3 |
步骤S203,按照节点数目计算出把一致性哈希环等分的Token(令牌)列表;
把哈希环等分是为使集群中各节点所分配的数据是等量的,具体来说,由于是9个节点,因此需要计算出把一致性哈希环9等分的Token(令牌)列表,如下表所示。
Token编号 | Token值 |
Token1 | 18904575940052136000000000000000000000 |
Token2 | 37809151880104270000000000000000000000 |
Token3 | 56713727820156410000000000000000000000 |
Token4 | 75618303760208540000000000000000000000 |
Token5 | 94522879700260690000000000000000000000 |
Token6 | 113427455640312810000000000000000000000 |
Token7 | 132332031580364940000000000000000000000 |
Token8 | 151236607520417090000000000000000000000 |
Token9 | 170141183460469230000000000000000000000 |
步骤S204,按照深度优先策略遍历二维表,将磁盘编号和Token一一对应起来;
Token负责集群中各节点数据的分配。
例如:A1 对应token1, B1 对应token2,C1对应token3,A2对应token4 等,这样可以避免在一台服务器上存储一个数据的多个拷贝, 确保在某台服务器损坏时,数据不会丢失。
步骤S205,挑选两个以上节点做种子节点(种子节点不能在同一台服务器上), 将种子节点与token信息写入到程序的配置文件, 部署到9个节点对应的磁盘文件系统,然后启动种子节点,再依次启动其它节点,以完成集群搭建。
具体地,将种子节点与token信息写入到所有节点的配置文件中;种子节点先启动,其他节点启动之后即刻将自身的信息发给种子节点,然后种子节点再将收到的信息转发集群中所有节点,如此循环往复,就能实现集群中所有节点信息的共享。
以节点所在的服务器IP,以及其使用的端口号,作为节点的唯一标识。具体实施中,最好是采用一台配置多块磁盘的服务器(比如,SAS300GB*4),每块磁盘对应一个Cassandra 服务进程,分别作为集群中的一个节点。 从而达到,即充分利用所有磁盘空间,又充分利用每块磁盘性能的目的。
采用上述技术方案,充分利用磁盘性能(数据库的主要瓶颈在于磁盘的随机寻道性能),有效利用多块磁盘, 单台服务器能保存更多数据;对比原来的部署方法, 综合硬件成本大幅降低。
上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (5)
1.一种集群中单机多节点的实现方法,其特征在于,包括,
在集群中服务器上部署多个节点后,为每个节点增加一个节点信息类;将节点信息类加入节点信息列表,将节点信息类加入到消息的消息头,并更新网络连接模块中的节点信息列表,通知到集群中所有节点;
将服务器磁盘进行编号,并列出服务器磁盘的二维列表;
按照节点数目计算出把一致性哈希环等分的令牌Token列表;
按照深度优先策略遍历二维表,将磁盘编号和Token一一对应起来;
挑选两个以上节点做种子节点,所述种子节点不能在同一台服务器上,将种子节点与token信息写入到程序的配置文件, 部署到节点对应的磁盘文件系统,然后启动种子节点,再依次启动其它节点,以完成集群搭建。
2.根据权利要求1所述的方法,其特征在于,所述节点信息类封装所在服务器的IP地址,以及节点间通讯端口;以IP地址以及内部通讯端口作为一个节点的唯一标识。
3.根据权利要求2所述的方法,其特征在于,所述通知到集群中所有节点具体通过Gossip协议通知其他节点;Gossip协议的实现过程:当一个节点信息发生改变,随机选择2-3个节点,根据IP地址和端口号告知信息的变化,随机选择的2-3个节点又会随机的选择其他节点告知,依次类推,所有的节点都会接收到集群中任一节点信息的改变。
4.根据权利要求3所述的方法,其特征在于,把哈希环等分是使集群中各节点所分配的数据是等量的。
5.根据权利要求4所述的方法,其特征在于,所述启动种子节点,再依次启动其它节点,以完成集群搭建具体包括,
种子节点先启动,其他节点启动之后即刻将自身的信息发给种子节点,然后种子节点再将收到的信息转发集群中所有节点,如此循环往复,实现集群中所有节点信息的共享,完成集群搭建。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210447644.6A CN102999571B (zh) | 2012-11-09 | 2012-11-09 | 一种集群中单机多节点的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210447644.6A CN102999571B (zh) | 2012-11-09 | 2012-11-09 | 一种集群中单机多节点的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999571A true CN102999571A (zh) | 2013-03-27 |
CN102999571B CN102999571B (zh) | 2015-09-30 |
Family
ID=47928139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210447644.6A Active CN102999571B (zh) | 2012-11-09 | 2012-11-09 | 一种集群中单机多节点的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102999571B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储系统的数据分片方法 |
CN105653629A (zh) * | 2015-12-28 | 2016-06-08 | 湖南蚁坊软件有限公司 | 一种基于哈希环的分布式数据过滤方法 |
CN106131102A (zh) * | 2016-06-01 | 2016-11-16 | 乐视控股(北京)有限公司 | 一种分配服务器的方法及装置 |
CN106528488A (zh) * | 2016-10-09 | 2017-03-22 | 广州艾美网络科技有限公司 | 一种单机内计算集群系统和控制方法 |
CN106844562A (zh) * | 2016-12-30 | 2017-06-13 | 北京航天泰坦科技股份有限公司 | 基于fuse的地理影像透明缓存机制 |
CN107079045A (zh) * | 2014-10-14 | 2017-08-18 | 微软技术许可有限责任公司 | 使用集群的节点识别 |
CN107111662A (zh) * | 2015-02-15 | 2017-08-29 | 华为技术有限公司 | 用于处理数据的系统、装置和方法 |
CN111309397A (zh) * | 2020-02-17 | 2020-06-19 | 北京达佳互联信息技术有限公司 | 数据分配方法、装置、服务器及存储介质 |
CN113703866A (zh) * | 2021-08-25 | 2021-11-26 | 上海哔哩哔哩科技有限公司 | 配置中心信息同步方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0254115A1 (de) * | 1986-07-23 | 1988-01-27 | Siemens Aktiengesellschaft | Modular strukturiertes ISDN-Kommunikationssystem mit Bildung und Anzeige von Fehlertexten |
CN101605301A (zh) * | 2009-07-08 | 2009-12-16 | 中兴通讯股份有限公司 | 一种进行多节点事务处理的集群系统及请求消息分发方法 |
CN101998144A (zh) * | 2010-11-17 | 2011-03-30 | 中兴通讯股份有限公司 | 内容管理方法及系统 |
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
-
2012
- 2012-11-09 CN CN201210447644.6A patent/CN102999571B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0254115A1 (de) * | 1986-07-23 | 1988-01-27 | Siemens Aktiengesellschaft | Modular strukturiertes ISDN-Kommunikationssystem mit Bildung und Anzeige von Fehlertexten |
CN101605301A (zh) * | 2009-07-08 | 2009-12-16 | 中兴通讯股份有限公司 | 一种进行多节点事务处理的集群系统及请求消息分发方法 |
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件系统访问控制方法及集群节点 |
CN101998144A (zh) * | 2010-11-17 | 2011-03-30 | 中兴通讯股份有限公司 | 内容管理方法及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储系统的数据分片方法 |
CN107079045A (zh) * | 2014-10-14 | 2017-08-18 | 微软技术许可有限责任公司 | 使用集群的节点识别 |
CN107111662B (zh) * | 2015-02-15 | 2020-06-26 | 华为技术有限公司 | 用于处理数据的系统、装置和方法 |
CN107111662A (zh) * | 2015-02-15 | 2017-08-29 | 华为技术有限公司 | 用于处理数据的系统、装置和方法 |
CN105653629B (zh) * | 2015-12-28 | 2020-03-13 | 湖南蚁坊软件股份有限公司 | 一种基于哈希环的分布式数据过滤方法 |
CN105653629A (zh) * | 2015-12-28 | 2016-06-08 | 湖南蚁坊软件有限公司 | 一种基于哈希环的分布式数据过滤方法 |
CN106131102A (zh) * | 2016-06-01 | 2016-11-16 | 乐视控股(北京)有限公司 | 一种分配服务器的方法及装置 |
CN106528488A (zh) * | 2016-10-09 | 2017-03-22 | 广州艾美网络科技有限公司 | 一种单机内计算集群系统和控制方法 |
CN106528488B (zh) * | 2016-10-09 | 2019-07-16 | 广州艾美网络科技有限公司 | 一种单机内计算集群系统和控制方法 |
CN106844562A (zh) * | 2016-12-30 | 2017-06-13 | 北京航天泰坦科技股份有限公司 | 基于fuse的地理影像透明缓存机制 |
CN111309397A (zh) * | 2020-02-17 | 2020-06-19 | 北京达佳互联信息技术有限公司 | 数据分配方法、装置、服务器及存储介质 |
CN111309397B (zh) * | 2020-02-17 | 2024-01-09 | 北京达佳互联信息技术有限公司 | 数据分配方法、装置、服务器及存储介质 |
CN113703866A (zh) * | 2021-08-25 | 2021-11-26 | 上海哔哩哔哩科技有限公司 | 配置中心信息同步方法及系统 |
CN113703866B (zh) * | 2021-08-25 | 2024-04-26 | 上海哔哩哔哩科技有限公司 | 配置中心信息同步方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102999571B (zh) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999571A (zh) | 一种集群中单机多节点的实现方法 | |
US20180329968A1 (en) | Creation of modular applications with corresponding twins in the cloud | |
CN102355369B (zh) | 虚拟化集群系统及其处理方法和设备 | |
CN102333029B (zh) | 一种服务器集群系统中的路由方法 | |
US8930501B2 (en) | Distributed data storage system and method | |
US9917884B2 (en) | File transmission method, apparatus, and distributed cluster file system | |
CN102096557B (zh) | 一种独立磁盘冗余阵列的扩容方法、装置及系统 | |
CN110362381A (zh) | Hdfs集群高可用部署方法、系统、设备及存储介质 | |
CN111031096A (zh) | 一种基于拟态防御的分布式存储系统构建方法 | |
CN108287660A (zh) | 数据存储方法和设备 | |
CN103929500A (zh) | 一种分布式存储系统的数据分片方法 | |
CN109376197B (zh) | 一种数据同步方法、服务器及计算机存储介质 | |
EP3100184A1 (en) | Prioritizing data reconstruction in distributed storage systems | |
CN103268318A (zh) | 一种强一致性的分布式键值数据库系统及其读写方法 | |
CN109690494B (zh) | 系统存储装置中的分层容错 | |
CN104410531B (zh) | 冗余的系统架构方法 | |
CN102194009A (zh) | 一种数据库托管方法和一种数据库托管平台系统 | |
US20160352559A1 (en) | Method and Apparatus For Configuring a Communication System | |
CN102387179A (zh) | 分布式文件系统及其结点、存储方法和存储控制方法 | |
CN105404565B (zh) | 一种双活数据保护方法和装置 | |
WO2016070341A1 (zh) | 数据处理方法和装置 | |
CN105187502A (zh) | 一种基于分布式弹性块存储的方法和系统 | |
CN105159925A (zh) | 一种数据库集群数据分配方法及系统 | |
CN106993022B (zh) | 用于集群的标识管理方法、标识服务器及相应的系统 | |
US9106676B1 (en) | Grid-based server messaging infrastructure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 518057 C Building 5, Nanshan District software industry base, Shenzhen, Guangdong 403-409, China Patentee after: Shenzhen easou world Polytron Technologies Inc Address before: 518026 Guangdong city of Shenzhen province Futian District Binhe Road and CaiTian Road Interchange Union Square Tower A, A5501-A Patentee before: Shenzhen Yisou Science & Technology Development Co., Ltd. |