CN102045389A - 一种基于osgi的分布式数据存储方法 - Google Patents
一种基于osgi的分布式数据存储方法 Download PDFInfo
- Publication number
- CN102045389A CN102045389A CN2010105652713A CN201010565271A CN102045389A CN 102045389 A CN102045389 A CN 102045389A CN 2010105652713 A CN2010105652713 A CN 2010105652713A CN 201010565271 A CN201010565271 A CN 201010565271A CN 102045389 A CN102045389 A CN 102045389A
- Authority
- CN
- China
- Prior art keywords
- data
- service end
- osgi
- node
- distributed
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013500 data storage Methods 0.000 title abstract description 6
- 230000006399 behavior Effects 0.000 abstract description 6
- 238000007726 management method Methods 0.000 abstract description 3
- 238000010276 construction Methods 0.000 abstract 1
- 230000006872 improvement Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于OSGI的分布式数据存储方法,包括如下步骤:客户端数据生成;通过Socket将数据发送到服务端;服务端生成序列数据唯一ID;服务端将数据存储到磁盘并将数据同步发送到节点服务端;客户端读取时并发从各节点服务端读取数据。本发明由于采用OSGI框架,且数据存储采用一个主服务端和多个节点服务端方式存储,因此,使用OSGI分布式数据存储的方法使程序具有统一的模块化构建和管理、可插拔、可积累以及可动态改变和扩展行为的特征,具备动态地安装、卸载、启动和停止程序,同时该分布式存储方法有效提高数据安全性、完整性、读取快速,解决海量数据读写时磁盘频繁读写导致数据读取缓慢的瓶劲。
Description
技术领域
本发明涉及一种基于OSGI的分布式数据存储方法,尤指以JAVA中OSGI为技术手段实现海量数据分布式存储的方法。
背景技术
随着技术的不断发展,数据存储需求增大,系统不但要求能快速读写数据,同时要求系统不但能保证数据安全、数据完整,同时要保证系统能在数年内不间断运行,这样必须要求系统有很高的动态性,能够在运行状态完成系统模块安装、卸载、更新操作。传统的开发模式很难胜任动态的修改和改变系统的行为,同时传统的数据读写方式,由于磁盘IO瓶劲,在海量数据的情况下很难保证数据安全、数据完整及快速读取。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述不能动态安装、卸载、启动和停止程序,海量数据读取效率低,同时难以保证数据安全及完整,提供一种程序高动态性,海量数据读取效率高、数据安全、完整的数据分布式存储的方法。
为实现上述目的,本发明的技术方案是:一种基于OSGI的分布式数据存储方法,其特征在于,包括二大步骤:
步骤一:
A)客户端生成数据;
B)Socket发送数据;
C)服务端序列化数据唯一ID;
D)服务端将数据存储到本地磁盘;
E)服务端将数据通过SOCKET发送到节点服务端数据存储节点;
F)节点服务端存储数据到节点磁盘;
步骤二:
G)客户端读取数据;
H)Socket发送读取请求;
I)服务端根据数据ID数量及当前运行节点服务端数量生成数据读取方案;
J)服务端根据方案从本地磁盘和节点磁盘并发读取数据;
K)服务端收集所有数据将数据列表返回给客户端。
作为具体化,所述服务端和节点服务端部署在OSGI容器中;并且所述方法的代码开发遵循OSGI规范。
作为具体化,在所述步骤一A)中:客户端生成的数据为普通JAVA对象;并且客户端生成数据时同时生成数据唯一ID。
作为具体化,在所述步骤一B)中:客户端通过Socket将数据唯一ID和数据对象发送到主服务端。
作为具体化,在所述步骤一C)中:服务端使用长整型数据类型自增长出全局数据唯一ID。
作为改进,所述步骤一D)还包括如下步骤:
D1)服务端将数据ID和数据对象存储到本地磁盘中;
D2)服务端存储数据时会生成索引文件和数据文件,索引文件存储数据ID、数据在数据文件对应的位置、全局数据唯一ID。
作为改进,在所述步骤一E)中,由1个主服务端和N个节点服务端完成,其中N≥1;并且步骤一E)分为:
E1)节点服务端启动后主动发送登陆信息到主服务端;
E2)主服务端将数据分发到各节点服务端。
作为改进,所述步骤一F)还包括如下步骤:
F1)节点服务端将数据ID和数据对象存储到磁盘中;
F2)节点服务端存储数据时会生成索引文件和数据文件,索引文件存储数据ID、数据在数据文件对应的位置、全局数据唯一ID。
作为具体化,在所述步骤二G)中:客户端读取数据根据所述步骤一A)中生成的数据唯一ID进行读取。
作为改进,所述步骤二I)还包括如下步骤:
I1)客户端请求大量数据时服务端生成数据读取方案从其它节点服务端并发读取数据。
作为改进,所述服务端和所述节点服务端运行在OSGI容器下,服务端和节点服务端都在不重启的情况时动态更新,重启后服务端和各节点服务端数据保持一致。
作为改进,所述节点服务端根据硬件服务器或数据量自由增加。
作为改进,节点服务端启动后根据全局数据唯一ID从主服务端或其它节点服务端同步数据,保持所有服务端数据一致。
由于采用OSGI框架开发及部署,使用OSGI规范编写程序,使用OSGI容器运行程序,并在OSGI环境下可动态地安装、卸载、启动和停止程序各节点;此外,服务端和节点服务端分布存储数据,节点服务端可动态增加,节点服务端重启后从其它服务端同步数据;而服务端和节点服务端可并发读取数据,并发读取数据时服务端自动根据读取数量动态分配到其它节点服务端并发读取。因此,该基于OSGI的分布式数据存储方法使程序能够动态地安装、卸载、启动和停止,同时数据安全性和完整性很高,数据读取快速。
附图说明
图1是基于OSGI的分布式存储系统结构示意图;
图2是数据存储流程图;
图3是数据读取流程图;
图4是数据同步流程图。
具体实施方式
下面将结合附图对本发明实施例作进一步说明。
如图1示出了本实施例中基于OSGI分布式存储系统结构示意图,该OSGI为JAVA模块化规范,该分布式存储包括客户端、服务端及节点服务端。
服务端及节点服务端都部署在OSGI容器中,使服务端及节点服务端都能够动态安装、卸载、启动和停止。
客户端通过SOCKET将需存储的数据或读取数据请求发送到服务端。
服务端通过SOCKET将需存储的数据或读取数据请求发送到各节点服务端。
节点服务端可通过增加服务器任意增加。
图2示出了数据存储流程图,在本实施例中,客户端生成JAVA对象数据,同时生成该数据对应的ID,该数据ID在该对象类型数据中标识数据唯一性,不同对象类型数据ID重复不引起冲突。
客户端将上述生成的数据通过SOCKET发送到服务端。
客户端发送数据时会将该生成的数据封装在数据存储对象中,以标识该数据为需要存储的数据。
服务端收到数据后解析,判断该数据为需要存储的数据,生成全局数据唯一ID。
服务端将数据ID、全局数据唯一ID、数据对象存储到磁盘中。
服务端存储数据时会生成索引文件和数据文件,索引文件存储数据ID、数据类型、数据在数据文件对应的位置、全局数据唯一ID。
服务端获取当前运行中的节点服务端,该数据是节点服务端启动连接服务端时,服务端将该节点服务端信息存储在内存当中。
服务端通过SOCKET将数据发送到各节点服务端。此时相当于节点服务端来说,服务端可理解为客户端,因此发送过程与客户端一致。
节点服务端收到数据后并存储。存储方式与服务端一致。
图3示出了数据读取流程图,在本实施例中,客户端生成数据请求对象类型,输入参数为数据对象类型,数据ID或数据ID范围。
客户端将上述生成的请求对象类型通过SOCKET发送到服务端。
服务端收到数据后解析,判断该数据为需要读取数据。
服务端生成数据读取方案,该方案根据数据ID范围计算出数据行数,结合当前运行节点服务端数量生成。
服务端按照数据读取方案同时从本地和节点服务端读取数据。
服务端和节点服务端读取数据方式一致,根据数据ID和数据类型从索引文件找到数据在数据文件中对应的位置,并从数据文件中将数据读取出来。
服务端通过SOCKET将数据请求发送到各节点服务端。此时相当于节点服务端来说,服务端可理解为客户端,因此发送过程与客户端一致。
服务端收集所有节点服务端返回的数据,将读取到的数据打包后返回给客户端。
图4示出了数据同步流程图,在本实施例中,节点服务端可以随时增加和重启,并不影响系统运行。
节点服务端初次运行时,由于数据为空,因此在启动后直接从服务端或节点服务端将数据文件及索引文件拷贝到本地。达到与其它服务端同步的目的。
节点服务端重启后,由于关闭过程中可能数据产生变化,需要从其它服务端进行数据同步。
节点服务端判断本机最大全局数据ID。
节点服务端将上述最大全局数据ID发送到其它服务端请求数据同步。
服务端判断最新全局数据ID和需同步节点服务端全局数据ID,判断出中间缺少全局数据ID。
服务端根据缺少全局数据ID生成数据读取列表。
服务端从索引文件中找到全局数据ID,同时找到该全局数据ID对应的数据位置,并读取该数据。
服务端将读取到的数据发送到节点服务端以达到数据同步的目的。
综上所述,本实施例基于OSGI构建分布式数据存储,OSGI是基于JAVA语言的模块化规范,从需求实现方面,OSGI为动态扩充、修改系统功能和改变系统行为提供了支撑,而在传统的开发方式下,要实现系统的动态扩充、修改以及改变是一件很麻烦的事。从技术角度方面,OSGI带来了规范化的模块组织以及统一的开发方式,这为传统的模块的组织、模块开发以及模块积累提供了一种全新的指导以及支撑。
使用OSGI构建分布式数据存储系统,主要有以下优点:
可插拔的系统
可以在系统运行的状况下给系统动态的增加新的功能或者卸载不需要的功能,
可动态改变行为的系统
OSGI有一整套完整的机制去实现动态改变系统行为。
可插拔、可动态改变行为从根本上保证了系统在运行期足够的灵活性和扩展性。
稳定、高效的系统
基于OSGI的系统采用的是微核机制,微核机制保证了系统的稳定性,微核机制的系统只要微核是稳定运行的,那么系统就不会崩溃,也就是说基于OSGI的系统不会受到运行在其中的Bundle的影响,不会因为Bundle的崩溃而导致整个系统的崩溃。
OSGI的动态性原则保证了系统的高效,只有在请求发生时OSGI才去完全加载、启动相应的Bundle、Service。
规范的、可积累的模块
规范的模块开发方式就意味着规范的人员技能培养体系以及规范的人员技能要求。而OSGI为这个问题提供了解决方案,基于OSGI的系统采用规范的模块开发、部署方式构建系统。
模块的积累是软件公司发展的基础,只有公司独特的竞争力的项目经验模块被积累下来了,公司的发展才能一直的持续和高速,而在形成了规范的模块开发、部署方式后,模块的积累自然水到渠成。
因此基于OSGI搭建的系统应具备统一的模块化构建和管理、可插拔、可积累以及可动态改变和扩展行为的特征。
总之,在本实施例中,采用OSGI构建分布式存储系统,使用服务端及节点服务端分布式存储及读取数据。此种方式系统能够动态地安装、卸载、启动和停止,具备统一的模块化构建和管理、可插拔、可积累以及可动态改变和扩展行为的特征,同时数据分布存储使数据安全性和完整性很高,而且数据读取快速。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (13)
1.一种基于OSGI的分布式数据存储方法,其特征在于,包括二大步骤:
步骤一:
A)客户端生成数据;
B)Socket发送数据;
C)服务端序列化数据唯一ID;
D)服务端将数据存储到本地磁盘;
E)服务端将数据通过SOCKET发送到节点服务端数据存储节点;
F)节点服务端存储数据到节点磁盘;
步骤二:
G)客户端读取数据;
H)Socket发送读取请求;
I)服务端根据数据ID数量及当前运行节点服务端数量生成数据读取方案;
J)服务端根据方案从本地磁盘和节点磁盘并发读取数据;
K)服务端收集所有数据将数据列表返回给客户端。
2.根据权利要求1所述的基于OSGI的分布式数据存储方法,其特征在于:所述服务端和节点服务端部署在OSGI容器中;并且所述方法的代码开发遵循OSGI规范。
3.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,在所述步骤一A)中:客户端生成的数据为普通JAVA对象;并且客户端生成数据时同时生成数据唯一ID。
4.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,在所述步骤一B)中:客户端通过Socket将数据唯一ID和数据对象发送到主服务端。
5.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,在所述步骤一C)中:服务端使用长整型数据类型自增长出全局数据唯一ID。
6.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,所述步骤一D)还包括如下步骤:
D1)服务端将数据ID和数据对象存储到本地磁盘中;
D2)服务端存储数据时会生成索引文件和数据文件,索引文件存储数据ID、数据在数据文件对应的位置、全局数据唯一ID。
7.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,在所述步骤一E)中,由1个主服务端和N个节点服务端完成,其中N≥1;并且步骤一E)分为:
E1)节点服务端启动后主动发送登陆信息到主服务端;
E2)主服务端将数据分发到各节点服务端。
8.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,所述步骤一F)还包括如下步骤:
F1)节点服务端将数据ID和数据对象存储到磁盘中;
F2)节点服务端存储数据时会生成索引文件和数据文件,索引文件存储数据ID、数据在数据文件对应的位置、全局数据唯一ID。
9.根据权利要求3所述的基于OSGI分布式数据储存的方法,其特征在于,在所述步骤二G)中:客户端读取数据根据所述步骤一A)中生成的数据唯一ID进行读取。
10.根据权利要求1所述的基于OSGI分布式数据储存的方法,其特征在于,所述步骤二I)还包括如下步骤:
I1)客户端请求大量数据时服务端生成数据读取方案从其它节点服务端并发读取数据。
11.根据权利要求2所述的基于OSGI分布式数据储存的方法,其特征在于:所述服务端和所述节点服务端运行在OSGI容器下,服务端和节点服务端都在不重启的情况时动态更新,重启后服务端和各节点服务端数据保持一致。
12.根据权利要求7所述的基于OSGI分布式数据储存的方法,其特征在于,所述节点服务端根据硬件服务器或数据量自由增加。
13.根据权利要求12所述的基于OSGI分布式数据储存的方法,其特征在于,节点服务端启动后根据全局数据唯一ID从主服务端或其它节点服务端同步数据,保持所有服务端数据一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105652713A CN102045389A (zh) | 2010-11-25 | 2010-11-25 | 一种基于osgi的分布式数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105652713A CN102045389A (zh) | 2010-11-25 | 2010-11-25 | 一种基于osgi的分布式数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102045389A true CN102045389A (zh) | 2011-05-04 |
Family
ID=43911150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105652713A Pending CN102045389A (zh) | 2010-11-25 | 2010-11-25 | 一种基于osgi的分布式数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102045389A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023992A (zh) * | 2012-11-28 | 2013-04-03 | 江苏乐买到网络科技有限公司 | 海量数据的分布式存储方法 |
CN104468569A (zh) * | 2014-12-04 | 2015-03-25 | 北京国双科技有限公司 | 分布式数据的完整性检测方法和装置 |
CN105511974A (zh) * | 2015-11-24 | 2016-04-20 | 武汉大学 | 分布式环境下面向服务质量评价的OSGi容错策略 |
CN109241034A (zh) * | 2018-08-23 | 2019-01-18 | 深圳市科陆电子科技股份有限公司 | 一种配置储能电站管理系统的方法、装置及储能电站 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179037A1 (en) * | 2005-02-07 | 2006-08-10 | Turner Bryan C | Arrangement for a distributed file system having data objects mapped independent of any data object attribute |
CN101271458A (zh) * | 2007-03-22 | 2008-09-24 | 阿里巴巴公司 | 一种分布式计算文件管理方法、系统及其装置 |
-
2010
- 2010-11-25 CN CN2010105652713A patent/CN102045389A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060179037A1 (en) * | 2005-02-07 | 2006-08-10 | Turner Bryan C | Arrangement for a distributed file system having data objects mapped independent of any data object attribute |
CN101271458A (zh) * | 2007-03-22 | 2008-09-24 | 阿里巴巴公司 | 一种分布式计算文件管理方法、系统及其装置 |
Non-Patent Citations (2)
Title |
---|
刘芳等: "LDFS:一种大规模数据集的分布式存储体系结构", 《2008全国软件与应用学术会议》 * |
陈志伟等: "一种基于OSGI的动态演化方法", 《计算机工程与科学》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103023992A (zh) * | 2012-11-28 | 2013-04-03 | 江苏乐买到网络科技有限公司 | 海量数据的分布式存储方法 |
CN104468569A (zh) * | 2014-12-04 | 2015-03-25 | 北京国双科技有限公司 | 分布式数据的完整性检测方法和装置 |
CN104468569B (zh) * | 2014-12-04 | 2017-12-22 | 北京国双科技有限公司 | 分布式数据的完整性检测方法和装置 |
CN105511974A (zh) * | 2015-11-24 | 2016-04-20 | 武汉大学 | 分布式环境下面向服务质量评价的OSGi容错策略 |
CN105511974B (zh) * | 2015-11-24 | 2018-05-11 | 武汉大学 | 分布式环境下面向服务质量评价的OSGi容错方法 |
CN109241034A (zh) * | 2018-08-23 | 2019-01-18 | 深圳市科陆电子科技股份有限公司 | 一种配置储能电站管理系统的方法、装置及储能电站 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389832B (zh) | ZooKeeper容器集群部署方法、系统、设备及存储介质 | |
CN108897527B (zh) | 一种云计算中遥感图像处理的Docker镜像自动化动态构建方法 | |
CN105404652A (zh) | 一种基于hdfs的海量小文件处理方法 | |
CN106339387B (zh) | 一种数据库集群中新增服务器的数据同步方法及装置 | |
CN103064717A (zh) | 一种集群系统并行安装软件的装置和方法 | |
CN103164239A (zh) | 基于微网可视化平台的插件实现方法 | |
CN110389766B (zh) | HBase容器集群部署方法、系统、设备及计算机可读存储介质 | |
CN102045389A (zh) | 一种基于osgi的分布式数据存储方法 | |
CN104657158A (zh) | 一种业务系统中业务处理的方法和装置 | |
CN103268226A (zh) | 一种测试脚本文件生成方法及装置 | |
CN105718319B (zh) | 一种内存池版图解析方法和内存池装置 | |
CN102612023A (zh) | 一种移动终端更新应用的方法、服务器以及移动终端 | |
CN101359293A (zh) | 制作部分更新包的方法和装置 | |
CN102541595A (zh) | 智能设备的升级方法、装置及智能设备 | |
CN105893545A (zh) | 一种高效的Hadoop集群部署方法 | |
CN110765203A (zh) | 一种容器MySQL主从同步及性能采集实现方法及系统 | |
CN102238017B (zh) | 实现本地软件更新提醒的方法及系统 | |
CN101877655A (zh) | 网络管理系统、网管服务器和方法 | |
CN112799777B (zh) | 一种流水线中预热调度的方法 | |
CN102567419B (zh) | 基于树结构的海量数据存储装置及方法 | |
CN102231136A (zh) | 一种闪存存储设备的数据存储方法和装置 | |
CN116991758A (zh) | 一种空间布局的更新方法、装置、设备及介质 | |
CN112379934B (zh) | 一种云计算平台的部署方法及装置、存储介质 | |
CN101355592A (zh) | 一种传感器节点功能自维护方法 | |
CN101674337B (zh) | 虚拟专用网互联网协议地址分配方法和网管系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110504 |