论文部分内容阅读
随着互联网的普及和计算机科技的迅速发展,造成了大量网络数据的堆积,这些海量数据信息包括结构化数据和非结构化数据,对这些异构海量数据的存储和管理已经成为一个不可忽视的问题。目前,内容管理系统厂商可以通过Java内容仓库标准规范接口以中立的方式访问各自的内容仓库;然而目前Java内容仓库标准规范的底层存储介质还不支持MongoDB等NoSQL数据库。在这样的环境背景下,本文研究并分析了Apache Jackrabbit的内部组件,其能支持的底层存储介质,对底层存储的封装过程,以及如何使用MongoDB构建高可用的分布式集群。在Jackrabbit封装MongoDB的设计中,Jackrabbit中节点及其属性的信息和小的二进制文件存放在PersistenceManager里,大的二进制文件存放在DataStore中。所以对于PersistenceManager的封装采用直接存储在MongoDB BSON文档中,而对于大的二进制文件的存取采用MongoDB中GridFS存储机制解决封装Datastore的问题。通过测试来确定大小二进制文件的分界点,以便于系统能够获得最佳的存储性能。封装MongoDB后的Jackrabbit系统架构改善了使用Java内容仓库规范接口对海量数据高效存储的性能。MongoDB采用Sharding和Replica Set技术的结合构建了高可用分布式集群。分布式集群使系统具有高可用性,扩展性以及灵活性。分布式集群中设置了三个mongos路由服务器,三个配置服务器,三个shard分片,每个shard分片中都是一个Replica Set副本集。在每个副本集中配置了一个主节点,一个副节点和一个仲裁节点。副本集中如果主节点挂掉,则由仲裁节点根据Bully算法选举出一个副节点作为主节点继续提供服务。并且数据的写操作只作用在主节点上,而副节点也可以提供数据读操作,这样就实现了数据的并发读写。如此搭建的分布式集群可以通过增加分片的个数来提高系统的存储能力,增加副节点来提高系统的可靠性。文章主要内容包括Jackrabbit封装MongoDB的具体设计与实现以及封装MongoDB后的Jackrabbit底层存储架构在高校网站内容管理系统中的应用。第一章主要概述了本文研究内容的来源和研究的科技发展背景。第二章主要对本文内容研究中用到的核心技术作了简单介绍。第三章主要说明了系统架构的需求分析。第四、五章是本论文的重点章节,详细描述了Jackrabbit对MongoDB的封装过程,和封装中使用到的核心接口,还有封装后的系统架构在高校内容管理系统中的应用。第六章是对本文的总结和下一步工作的展望。