CN108491277A - 一种中小学生学习资源实时热点协同过滤及推荐的方法 - Google Patents
一种中小学生学习资源实时热点协同过滤及推荐的方法 Download PDFInfo
- Publication number
- CN108491277A CN108491277A CN201711459240.8A CN201711459240A CN108491277A CN 108491277 A CN108491277 A CN 108491277A CN 201711459240 A CN201711459240 A CN 201711459240A CN 108491277 A CN108491277 A CN 108491277A
- Authority
- CN
- China
- Prior art keywords
- real
- kafka message
- data
- students
- recommendation
- 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
Classifications
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种中小学生学习资源实时热点协同过滤及推荐的方法,包括如下的步骤:步骤1)首先启动zookeeper程序和kafka消息队列集群,在zookeeper程序里面配置好kafka消息队列集群;步骤2)客户端提交用户读写请求给服务器端,其将读写请求之后首先将用户的读写请求写入到kafka消息队列集群;步骤3)服务器端内的服务模块取出需要处理的读写请求消息;步骤4)服务模块通过去噪模块进行噪化处理;步骤5)将用户请求和去噪之后的数据提交给Spark Streaming框架进行实时处理;步骤6)将排名结果写入到redis模块,步骤7)客户端接收到消息之后就进行结果的显示。
Description
技术领域
本发明涉及一种协同过滤方法,尤其是一种基于Spark框架的中小学生学习资源实时热点协同过滤及推荐的方法。
背景技术
在中小学生学习资源系统之中,除了有通过题库进行学习资源的搜索,基于用户的行为数据进行的学习资源推荐等技术之外,学生知道对于现在这一刻来说哪些学习资源有着最高的热度,有最高分的评价也是非常重要的功能。学生除了知道自己的学习资源推荐之外,若能够知道现在大家最关心,最多人参与讨论,以及是通过最多人评分来得出的最精辟的学习资源,那么学生就能够去一起参与到这些学习资源的讨论,交流,评分当中,于是,学习资源的排名系统也就应运而生。
现有技术主要存在以下缺点:
1.缺乏了有效的数据备份及容灾策略。现有技术之中,都设计了怎么样去完成目标,使功能达到预期,但是,这放在实践之中还不可行,原因就是现有技术之中缺乏了数据的备份以及是数据的融在策略,这样在平时不出问题,一切都按照预期来的时候还不会出问题,但是当遇到了突发情况或者紧急情况时,整个系统就会不堪一击,脆弱无比。
2.缺乏可靠的消息处理机制。现有技术之中,也有使用Spark框架进行处理以及是利用HBase的强一致性和实时性进行实时监测,但是并没有在该种技术发明之中提到任何关于可靠性处理的方法。可靠性是系统实现之中一个重中之重的部分,没有消息传递的可靠性保证,就极容易在消息传递的过程之中出现丢失或发送错误,又或者是不知道消息的处理结果而做出错误的执行。这些种种行为都会导致系统处理出现混乱,甚至是整个系统不可用,严重损害了用户的利益。
3.在实时处理方面不够优化。现有技术之中,虽基于spark进行实时计算,以HBase的实时性作为数据持久化的方式,但是这种实现方式是可以有很大的改进和提升空间的。虽然HBase以实时性作为它的一大优势,但是它只要数据超过一个阈值,终究还是会存储到硬盘上面,于是在读写的时候就是会比读写缓存慢,这样,就会影响了实时处理的速度,使得实时处理达不到实时的要求。
发明内容
有鉴于此,本发明的主要目的是提供一种中小学生学习资源实时热点协同过滤及推荐的方法,本发明着眼于消息可靠以及是数据的备份及容灾。消息可靠是每一个实时技术都应该具备的基本要求,倘若不能保证消息可靠,不但用户的数据,隐私都会出现严重的安全问题,而且后台系统的运行也会出现混乱最终崩溃。而数据备份则是为了达到容灾的目的,在一些节点宕机的时候依然能够迅速恢复出该节点上面的数据,不影响系统的正常运行以及是用户作业的及时处理。
其采用的技术方案是:
一种中小学生学习资源实时热点协同过滤及推荐的方法,包括如下的步骤:
步骤1)首先启动zookeeper程序和kafka消息队列集群,在zookeeper程序里面配置好kafka消息队列集群;当有读写请求到来时,kafka消息队列集群就会先将请求提交给leader,等到leader成功执行之后follower再跟随leader执行;
步骤2)客户端提交用户读写请求给服务器端,服务器端接收到客户端的读写请求之后首先将用户的读写请求写入到kafka消息队列集群;
步骤3)服务器端内的服务模块从kafka消息队列里面取出需要处理的读写请求消息;
步骤4)服务模块视自己的实现逻辑通过去噪模块进行噪化处理;
步骤5)将用户请求和去噪之后的数据提交给Spark Streaming框架进行实时处理;
步骤6)将排名结果写入到redis模块,当redis模块的数据超过设定的阈值时,就持久化到hbase数据库,并且将处理结果写入到kafka消息队列集群,kafka消息队列集群就将消息返回给客户端;
步骤7)客户端接收到消息之后就进行结果的显示。
在步骤1)中,启动kafka消息队列集群之后,zookeeper程序就能够通过zab协议选举出kafka消息队列集群里面的leader,然后集群里面选不到leader的就成为follower。
在步骤3)中,在kafka消息队列内设置有发布订阅模块,每一个服务模块都对一种类型的消息进行订阅,当有这种类型的消息到来时,kafka消息队列就会将该消息发布给对应的服务模块。
在步骤4)中,在去噪化过程中,去除用户恶意评价,而对于当前热度,讨论度排名则是不需要进行去噪化处理。
在步骤4)中,Spark Streaming框架将每一个数据片的数据转换为分布式弹性数据集,然后对分布式弹性数据集进行迭代计算和转换,最后得出排名结果。
所述Spark Streaming框架对于热度的实时排名处理,则是对结果进行累加,统计出实时结果,并且在内存之中进行top n排序,对于实时评分排名,则是计算相应项目的平均评分,然后也在内存之中进行top n排序。
在步骤7)中,当数据超过一定限度的时候,就会将redis模块的数据缓存到hbase数据库。
本发明的有益效果如下:
可靠性:数据容灾方面的保证以及是实时性方面的性能提升。通过zookeeper程序和kafka消息队列集群保障了消息存储的可靠性,保证了消息在传递的时候只会发送给订阅了该消息的消费者,不会让订阅了该消息的消费者收不到以及是没有订阅该消息的消费者收到了该消息。
容错性:kafka消息队列集群有可靠的副本策略,使得就算出现了消息丢失的情况也能够从副本之中迅速恢复。
数据的备份及容灾:依靠于redis模块的主从策略来实现。在redis模块的集群之中,选举出Master节点和Slave节点。当Slave节点初始化并向Master节点发出复制请求时,Master节点就能够对当前数据进行快照并将快照文件发送给Slave,Slave就会马上加载快照文件,然后Master节点就会将写命令写入到缓冲区记录之中,Slave节点就会不断读取Master节点的缓冲区文件并且执行上面的命令,这样就保证了Master或者Slave宕机时数据的不丢失,系统的正常运作。
实时性:使用了缓存策略,将缓存写入到redis模块,只要是读命中或者是写命中,就可以从内存之中直接读写数据,而不用再直接访问hbase数据库从硬盘上面读写数据,大大提高了读写速度和数据处理速度。
附图说明
图1为本发明的框架原理图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
参照图1,本发明公开了一种基于中小学生学习资源推荐系统的协同过滤方法,具体的步骤如下:
步骤1)首先启动zookeeper程序和kafka消息队列集群,在zookeeper程序里面配置好kafka消息队列集群。启动kafka消息队列集群之后,zookeeper程序就能够通过zab协议选举出kafka消息队列集群里面的leader,然后集群里面选不到leader的就成为follower,当有读写请求到来时,kafka消息队列集群就会先将请求提交给leader,等到leader成功执行之后follower再跟随leader执行。
步骤2)客户端提交用户请求给服务器端。服务器端接收到客户端的请求之后首先将用户的请求写入到kafka消息队列集群。
步骤3)服务模块从kafka消息队列里面取出需要它处理的消息。这里面利用的就是kafka消息队列集群的发布订阅模块,每一个服务模块都对一种类型的消息进行订阅,当有这种类型的消息到来时,kafka消息队列集群就会将该消息发布给对应的服务模块。
步骤4)服务模块视自己的实现逻辑需要进行去噪化处理。在中小学生学习资源系统之中,用户的评分以及评价的处理是首先需要进行去噪处理的防止一些恶意评价,而对于当前热度,讨论度排名则是不需要进行去噪化处理。
步骤5)将用户请求和去噪之后的数据提交给Spark Streaming框架进行实时处理。Spark Streaming框架将每一个数据片的数据转换为分布式弹性数据集(RDDs),然后对RDDs进行迭代计算和转换,最后得出排名结果。
步骤6)将排名结果写入到redis模块,当redis模块的数据超过一个阈值时,就持久化到hbase数据库,并且将处理结果写入到kafka消息队列集群,kafka消息队列集群就将消息返回给客户端。
步骤7)客户端接收到消息之后就进行结果的显示。
本发明在接受客户端传过来的消息请求时采用的是kafka消息队列集群。kafka消息队列集群具有实时和高可靠性的特点,采用订阅发布模型,保证了消息的准确投递和实时投递。另外,采用zookeeper程序来解决kafka消息队列集群的单点问题以及在kafka消息队列集群在初始化以及出现故障时迅速选举和恢复。
在redis模块的集群之中,选举出Master节点和Slave节点。当Slave节点初始化并向Master节点发出复制请求时,Master节点就能够对当前数据进行快照并将快照文件发送给Slave节点,Slave节点就会马上加载快照文件,然后Master节点就会将写命令写入到缓冲区记录之中,Slave节点就会不断读取Master节点的缓冲区文件并且执行上面的命令,这样就保证了Master节点或者Slave节点宕机时数据的不丢失,系统的正常运作。
以上对本发明实施例所公开的技术方案进行了详细介绍,本文中应用了具体实施例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只适用于帮助理解本发明实施例的原理;同时,对于本领域的一般技术人员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (7)
1.一种中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,包括如下的步骤:
步骤1)首先启动zookeeper程序和kafka消息队列集群,在zookeeper程序里面配置好kafka消息队列集群;当有读写请求到来时,kafka消息队列集群就会先将请求提交给leader,等到leader成功执行之后follower再跟随leader执行;
步骤2)客户端提交用户读写请求给服务器端,服务器端接收到客户端的读写请求之后首先将用户的读写请求写入到kafka消息队列集群;
步骤3)服务器端内的服务模块从kafka消息队列里面取出需要处理的读写请求消息;
步骤4)服务模块视自己的实现逻辑通过去噪模块进行噪化处理;
步骤5)将用户请求和去噪之后的数据提交给Spark Streaming框架进行实时处理;
步骤6)将排名结果写入到redis模块,当redis模块的数据超过设定的阈值时,就持久化到hbase数据库,并且将处理结果写入到kafka消息队列集群,kafka消息队列集群就将消息返回给客户端;
步骤7)客户端接收到消息之后就进行结果的显示。
2.根据权利要求1所述的中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,在步骤1)中,启动kafka消息队列集群之后,zookeeper程序就能够通过zab协议选举出kafka消息队列集群里面的leader,然后集群里面选不到leader的就成为follower。
3.根据权利要求1所述的中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,在步骤3)中,在kafka消息队列内设置有发布订阅模块,每一个服务模块都对一种类型的消息进行订阅,当有这种类型的消息到来时,kafka消息队列就会将该消息发布给对应的服务模块。
4.根据权利要求1所述的中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,在步骤4)中,在去噪化过程中,去除用户恶意评价,而对于当前热度,讨论度排名则是不需要进行去噪化处理。
5.根据权利要求1所述的中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,在步骤4)中,Spark Streaming框架将每一个数据片的数据转换为分布式弹性数据集,然后对分布式弹性数据集进行迭代计算和转换,最后得出排名结果。
6.根据权利要求1所述的中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,所述Spark Streaming框架对于热度的实时排名处理,则是对结果进行累加,统计出实时结果,并且在内存之中进行top n排序,对于实时评分排名,则是计算相应项目的平均评分,然后也在内存之中进行top n排序。
7.根据权利要求1所述的中小学生学习资源实时热点协同过滤及推荐的方法,其特征在于,在步骤7)中,当数据超过一定限度的时候,就会将redis模块的数据缓存到hbase数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711459240.8A CN108491277A (zh) | 2017-12-28 | 2017-12-28 | 一种中小学生学习资源实时热点协同过滤及推荐的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711459240.8A CN108491277A (zh) | 2017-12-28 | 2017-12-28 | 一种中小学生学习资源实时热点协同过滤及推荐的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108491277A true CN108491277A (zh) | 2018-09-04 |
Family
ID=63344142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711459240.8A Pending CN108491277A (zh) | 2017-12-28 | 2017-12-28 | 一种中小学生学习资源实时热点协同过滤及推荐的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491277A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271365A (zh) * | 2018-09-19 | 2019-01-25 | 浪潮软件股份有限公司 | 一种基于Spark内存技术对HBase数据库加速读写的方法 |
CN109857739A (zh) * | 2019-01-28 | 2019-06-07 | 中国石油大学(华东) | 一种基于RK(Redis and Kafka)的实时高效缓存机制 |
CN110569406A (zh) * | 2019-07-25 | 2019-12-13 | 北京明朝万达科技股份有限公司 | 一种可配置化的热点数据自动分析方法、装置、系统及介质 |
CN110968578A (zh) * | 2018-09-28 | 2020-04-07 | 中建水务环保有限公司 | 污水处理工艺推荐方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704566A (zh) * | 2016-04-25 | 2016-06-22 | 浪潮软件集团有限公司 | 一种基于电视机顶盒的视频推荐系统 |
CN107193909A (zh) * | 2017-05-08 | 2017-09-22 | 杭州东方通信软件技术有限公司 | 数据处理方法及系统 |
CN107229639A (zh) * | 2016-03-24 | 2017-10-03 | 上海宝信软件股份有限公司 | 分布式实时数据库的存储系统 |
-
2017
- 2017-12-28 CN CN201711459240.8A patent/CN108491277A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229639A (zh) * | 2016-03-24 | 2017-10-03 | 上海宝信软件股份有限公司 | 分布式实时数据库的存储系统 |
CN105704566A (zh) * | 2016-04-25 | 2016-06-22 | 浪潮软件集团有限公司 | 一种基于电视机顶盒的视频推荐系统 |
CN107193909A (zh) * | 2017-05-08 | 2017-09-22 | 杭州东方通信软件技术有限公司 | 数据处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
广州市图书馆学会 等: "《图书馆合作创新与发展•2016年卷》", 30 November 2016 * |
沈杰: "大数据环境下基于协同过滤的推荐系统研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271365A (zh) * | 2018-09-19 | 2019-01-25 | 浪潮软件股份有限公司 | 一种基于Spark内存技术对HBase数据库加速读写的方法 |
CN110968578A (zh) * | 2018-09-28 | 2020-04-07 | 中建水务环保有限公司 | 污水处理工艺推荐方法及装置 |
CN109857739A (zh) * | 2019-01-28 | 2019-06-07 | 中国石油大学(华东) | 一种基于RK(Redis and Kafka)的实时高效缓存机制 |
CN110569406A (zh) * | 2019-07-25 | 2019-12-13 | 北京明朝万达科技股份有限公司 | 一种可配置化的热点数据自动分析方法、装置、系统及介质 |
CN110569406B (zh) * | 2019-07-25 | 2022-04-19 | 北京明朝万达科技股份有限公司 | 可配置化的热点数据自动分析方法、装置、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406758B (zh) | 一种基于分布式存储系统的数据处理方法及存储设备 | |
CN108491277A (zh) | 一种中小学生学习资源实时热点协同过滤及推荐的方法 | |
US11599557B2 (en) | System and method for persistence and replication of changes to a data store | |
US10713275B2 (en) | System and method for augmenting consensus election in a distributed database | |
JP3790589B2 (ja) | 分散データベーストランザクションのコミットメント方法 | |
CN108073656A (zh) | 一种数据同步方法及相关设备 | |
US10366106B2 (en) | Quorum-based replication of data records | |
US8103840B2 (en) | Snapshot mechanism and method thereof | |
CN101061467B (zh) | 远程存储数据副本 | |
US9785514B1 (en) | Techniques for file system recovery | |
CN107209704A (zh) | 检测丢失的写入 | |
US9037905B2 (en) | Data processing failure recovery method, system and program | |
CN107832138A (zh) | 一种扁平化的高可用namenode模型的实现方法 | |
CN104794119B (zh) | 用于中间件消息的存储与传输方法及系统 | |
CN103607448B (zh) | 一种atc系统动态数据存储的方法 | |
CN109918349A (zh) | 日志处理方法、装置、存储介质和电子装置 | |
DE112005002481T5 (de) | Rekonfigurierung einer redundanten Datenspeicherung | |
DE112012004216T5 (de) | Nachrichtenabgleich während einer Wiederherstellung nach einem Systemausfall | |
CN103207894A (zh) | 一种多路实时视频数据存储系统及其进行缓存控制的方法 | |
CN105824846B (zh) | 数据迁移方法及装置 | |
US10235145B1 (en) | Distributed scale-out replication | |
CN107769943A (zh) | 一种主备集群切换的方法和设备 | |
CN113590574B (zh) | 一种分布式图数据库数据处理方法、介质和电子设备 | |
CN107977167A (zh) | 一种基于纠删码的分布式存储系统的退化读优化方法 | |
US20090320049A1 (en) | Third tier transactional commit for asynchronous replication |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180904 |
|
RJ01 | Rejection of invention patent application after publication |