一种基于RESTful风格的就业信息推荐系统的制作方法

文档序号:11808700阅读:249来源:国知局
一种基于RESTful风格的就业信息推荐系统的制作方法与工艺

本发明属于网络应用开发领域,尤其涉及一种基于RESTful风格的就业信息推荐系统。



背景技术:

就业信息推荐系统是一种计算机密集型的数据处理系统。现有就业信息推荐系统主要存在以下问题,推荐算法与系统平台之间具有复杂的耦合关系,推荐算法的改变将引起相应的系统的重新设计。在系统数据的存储上,由于数据量过大会造成不便,访问速度会受影响,当服务器重启时会对交互有影响。另外,系统的负载均衡性能不好,稳定性差,且可扩展性低。



技术实现要素:

本发明所要解决的技术问题之一是需要提供一种就业信息推荐系统以解决现有推荐系统推荐算法与系统平台之间耦合关系复杂、访问速度受限、系统稳定性差的问题。

为了解决上述技术问题,本申请的实施例提供了一种基于RESTful风格的就业信息推荐系统,包括:网站系统模块,系统与用户的接口模块,接收用户的输入数据和服务请求及向用户反馈查询与推荐的结果;所述网站系统模块进一步包括学生模块与企业模块,所述学生模块用于完成学生用户的注册、登陆、个人引导以及对简历、职位、企业的建立、获取、更新和删除操作;所述企业模块用于完成企业用户的注册、登陆、企业引导以及对简历、职位、招聘会的建立、获取、更新和删除操作;其中,与学生/企业用户相关的信息均以URI资源的形式存储,通过对所述URI资源的建立、获取、更新和删除操作获取服务;个性化推荐模块,基于与学生/企业用户相关的信息进行就业信息的个性化推荐。

优选地,所述系统基于浏览器/服务器和客户端/服务器混合架构搭建,其中,客户端包括个人计算机浏览器和移动设备客户端,能够接收学生/企业用户基于系统的URI资源的动态请求和静态请求,将所述请求发送至服务器端以及接收服务器端的响应结果;服务器端的Web服务器采用APACHE与TOMCAT集群的方式搭建,学生/企业用户的静态请求被直接存储于服务器的静态资源目录中,动态请求经由CXF控制器决定由哪个服务页面或业务模块来响应该请求;服务器端的数据库采用MYSQL与MONGODB联合搭建,所述MONGODB用于存储学生/企业用户的认证信息和个性化推荐参数,所述MYSQL用于存储学生/企业用户除上述信息以外的其他信息。

优选地,所述个性化推荐模块通过调用ACTIVEMQ消息队列服务器的客户端接口响应学生用户的个性化推荐服务请求。

优选地,所述个性化推荐模块根据以下步骤响应学生用户的个性化推荐服务请求:Web服务器将学生用户输入的倾向性信息发送至ACTIVEMQ服务器的消息队列中进行存储;个性化推荐进程根据系统的时间和随机数生成ID号并将所述ID号存储于MONGODB数据库中;个性化推荐进程监听消息队列以获取倾向性信息,根据所述倾向性信息得到推荐结果,并建立以所述ID号命名的队列,将推荐结果存储于该队列中;Web服务器从MONGODB数据库中查询所述ID号,并从与所述ID号相匹配的队列中获取推荐结果。

优选地,若Web服务器在设定的时间内从与所述ID号相匹配的队列中获取到推荐结果,则通过页面渲染显示推荐结果,并将所述推荐结果存储至MYSQL数据库中;若Web服务器在设定的时间内未获取到推荐结果,则返回空数组,并通过页面显示无推荐项的提示信息。

优选地,所述系统采用访问控制过滤器监听学生/企业用户对该系统的访问与操作。

优选地,当学生/企业用户发出访问或操作请求时,所述访问控制过滤器判断所述请求的类型:若所述请求属于能够被放行的类型,则允许学生/企业用户对系统的访问或操作请求;若所述请求不属于能够被放行的类型,则通过所述学生/企业用户的认证信息获取用户的类型,并执行相匹配的用户类型权限验证与登录状态更新。

优选地,所述访问控制过滤器在执行相匹配的用户类型权限验证与登录状态更新时,检查所述学生/企业用户的请求是否为与用户登录有关的请求,若为与用户登录有关的根路径请求,则当学生/企业用户已经处于有效的登录状态中时,响应该请求转发至用户主页;当学生/企业用户的登录状态已经失效时,响应该请求转发至用户的登录页面;若为与用户登录无关的一般业务请求,则检查对应用户类型的登录状态并进行更新。

优选地,所述访问控制过滤器根据以下步骤检查对应用户类型的登录状态并进行更新,若该类型用户的请求时间距离上一次请求时间小于等于第一时间阈值,则放行该请求;若该类型用户的请求时间距离上一次请求时间大于第一时间阈值且小于等于第二时间阈值,则更新该用户的登录时间并放行该请求;若该类型用户的请求时间距离上一次请求时间大于第二时间阈值,则删除本次会话并转发至用户的登录页面。

优选地,所述系统在业务上划分为业务逻辑层与持久化层,所述业务逻辑层、持久化层以及CXF控制器均通过SPRING容器进行管理。

与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:

通过把Web的所有请求建模成对资源的操作,并利用HTTP方法处理服务请求,使对系统的操作更加简单灵活,提高系统可扩展性。同时由于采用了基于RESTful风格的系统架构,把计算机密集型的推荐处理与系统平台解耦,提高了系统的性能和稳定性。

本发明的其他优点、目标,和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书,权利要求书,以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本申请的技术方案或现有技术的进一步理解,并且构成说明书的一部分。其中,表达本申请实施例的附图与本申请的实施例一起用于解释本申请的技术方案,但并不构成对本申请技术方案的限制。

图1为根据本发明实施例的基于RESTful风格的就业信息推荐系统的功能示意图;

图2a和图2b分别为根据本发明实施例的基于RESTful风格的就业信息推荐系统的学生模块和企业模块的工作流程示意图;

图3为根据本发明实施例的基于RESTful风格的就业信息推荐系统的系统架构示意图;

图4为根据本发明实施例的基于RESTful风格的就业信息推荐系统的个性化推荐服务请求的数据流向示意图;

图5为根据本发明实施例的基于RESTful风格的就业信息推荐系统的个性化推荐服务请求的作业步骤示意图;

图6为根据本发明实施例的基于RESTful风格的就业信息推荐系统的访问控制过滤器的工作流程示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成相应技术效果的实现过程能充分理解并据以实施。本申请实施例以及实施例中的各个特征,在不相冲突前提下可以相互结合,所形成的技术方案均在本发明的保护范围之内。

本实施例的就业信息推荐系统主要包括两个功能模块,网站系统模块与个性化推荐模块。

其中,网站系统模块是系统与用户的接口模块,用于接收用户的输入数据和服务请求及向用户反馈查询与推荐的结果。对于用户来说,其平台体验除了扩展的移动终端外,网站模块是最核心的,很多逻辑的设计首先是基于网站设计,个性化推荐的数据来源也是来源于网站模块,推荐结果也是反馈到网站模块。网站系统模块进一步包括学生模块与企业模块。

学生模块用于完成学生用户的注册、登陆、个人引导以及对简历、职位、企业的建立、获取、更新和删除操作。具体的,学生用户通过该模块完成如下操作,用户注册及登录,学生基本信息引导(创建默认简历,通过地域+领域进行公司推荐),查看推荐的职位,收藏推荐的职位,取消收藏,查看收藏的职位,查看投递的职位,查看推荐的公司,查看关注的公司,取消关注,创建简历,编辑简历,预览简历,投递简历,查看所有领域,查看关注的领域,搜索公司,搜索职位。

企业模块用于完成企业用户的注册、登陆、企业引导以及对简历、职位、招聘会的建立、获取、更新和删除操作。具体的,企业用户通过该模块完成如下操作,用户注册及登录,企业基本信息引导(上传营业执照,等待人工审核),发布招聘会、发布职位(校园招聘职位+普通招聘职位),查看已发布职位,查看已发布招聘会,查看职位投递记录,查看学生简历。

用户模块和企业模块的工作流程分别如图2a和图2b所示。

个性化推荐模块主要基于与学生/企业用户相关的信息进行就业信息的个性化推荐。该模块是数据分析与处理的特色模块,其对外提供调用接口。主要处理用户信息不足,职位行为不充分时的推荐问题。在推荐系统模块中,实现的还有推荐过滤,与推荐反馈。推荐过滤主要是处理重复被推荐的职位,削弱马太效应;推荐反馈则是为了改善推荐引擎的结果而设计。本模块的数据来自于数据采集接口格式化或者过滤的数据。

本实施例的功能框图如图1所示,网站系统模块主要负责收集数据,比如用户信息,用户日志,用户行为等,为原生数据。网站系统模块也会输出从数据分析与处理得到的结果。个性化推荐模块根据推荐请求生成推荐结果,并将推荐结果返回给网站系统模块展示。

进一步地,在本实施例中,与学生/企业用户相关的信息均以URI资源的形式存储,通过对URI资源的建立、获取、更新和删除操作获取服务。

RESTful架构风格是以资源为中心的,其在网络开发应用中可以大大降低开发的复杂性。RESTful架构风格强调所有的操作是无状态的,即没有上下文的约束,如果做分布式,集群将不需要考虑上下文和会话保持的问题,极大的提高了系统的可伸缩性。使用RESTful风格主要考虑资源本身的抽象和识别,如果操作对象本身类似增删改查的操作,那么抽象成资源就比较容易。在本发明中,对简历、职位、招聘会等的操作,就是基本的增删改查,抽象成资源是很容易的。

表1给出了根据本发明实施例的URI资源的一些示例。本发明实施例的推荐系统的URI体系结构在整体上是一个树形结构,Icareer作为根,分出student和enterprise两个分支,在student下面又大致分为个人引导、简历操作、企业信息操作、职位和企业搜索操作、主页操作(包括职位相关操作)。在enterprise下面大致分为企业引导、企业信息操作、招聘会操作、职位操作、简历操作等。

另外,每个URI都对应一个处理方法,以读取操作(GET)为例:

表1系统URI资源举例

本发明实施例的就业信息推荐系统是一种类Web Service的平台,能够让系统被更多的系统利用,采用RESful风格在功能上提供Web Service的的接口功能,从而衍生出HTTP协议,操作更加简单灵活,提高系统可扩展性。

在本发明的实施例中,把Web的所有请求建模成对资源的操作,利用HTTP原生的get、post、put和delete等方法处理要求,可以为任何支持HTTP协议的系统包括移动端提供完美的数据接口服务。

进一步地,本发明实施例的就业信息推荐系统基于浏览器/服务器和客户端/服务器混合架构搭建,具体如图3所示。

客户端包括个人计算机(PC机)浏览器与手机等移动设备客户端,能够接收学生/企业用户基于系统的URI资源的动态请求(例如jsp、servlet等)和静态请求(例如js、css、php、jpg、png、gif、html、htm、json等),并将动态请求和静态请求发送至服务器端以及接收服务器端的响应结果。

服务器端的Web服务器采用APACHE与TOMCAT集群的方式搭建,学生/企业用户的静态请求被直接存储于服务器的静态资源目录中,动态请求经由CXF控制器决定由哪个服务页面或业务模块来响应该请求。

CXF控制器是一个RESTful风格的控制器,其功能类似于MVC模式中的Controller,它将决定由哪个业务方法来响应对应请求,然后把响应结果以json或xml的格式返回去,客户端拿到返回的json或xml格式的数据,通过AJAX对页面进行渲染,实现局部刷新、避免闪屏,达到良好的用户体验,CXF控制器也可以控制由哪个视图来响应请求(页面跳转的控制)。

TOMCAT是Servlet和JSP的容器,随着TOMCAT的版本升级,它已经具有独立承担Web服务器的能力,但在对静态资源(如HTML或图片等)的处理速度,以及提供对Web服务器的管理功能方面还是不如专业的HTTP服务器,如APACHE。所以在本实施例中,把TOMCAT服务器和APACHE服务器集成起来,APACHE服务器不支持Servlet和JSP,它只负责处理静态资源,动态资源交给TOMCAT应用服务器来处理。

当TOMCAT服务器与APACHE服务器集成时,TOMCAT服务器是进程外的Servlet容器,TOMCAT服务器和APACHE服务器之间的通信是通过专门的插件来完成的。TOMCAT通过Connector连接器与客户机程序建立连接,Connector组件负责接收客户端请求并且把服务器端响应返回给客户端。

连接器在TOMCAT的server.xml中配置。第一个连接器监听8080端口,浏览器通过HTTP协议访问TOMCAT服务器的Web应用。第二个连接器监听8009端口,通过AJP协议和其它HTTP服务器建立连接。

TOMCAT提供了JK插件负责与APACHE服务器通信,应该把JK插件安置在APACHE服务器上,当APACHE服务器收到请求时,它会通过JK插件来过滤URL,JK插件根据URL映射决定把哪些请求转发给TOMCAT服务器来处理。AJP协议是为TOMCAT与APACHE服务器通信而制定的协议,能提供较高的通信速度和效率。

通过采用APACHE与TOMCAT集群的方式搭建系统架构,可以充分利用两者的处理优势,实现负载均衡。

在本发明实施例的就业信息推荐系统的实现架构中,服务器端的数据库采用MYSQL与MONGODB联合搭建,其中,MONGODB数据库用于存储学生/企业用户的认证信息和个性化推荐参数,MYSQL数据库用于存储学生/企业用户除上述信息以外的其他信息。

MONGODB数据库是非关系型数据库,相比于关系型数据库MYSQL更适合做分布式集群。采用MONGODB主要是为了存储用户的认证信息和个性化推荐参数,例如用户ID,会话ID,用户类型,访问时间以及学生的引导信息。因为RESTful风格的API对安全问题目前仍显得无可奈何,把用户认证信息存储在客户端很不安全,保存在服务器内存中,又违反了RESTful约束。所以为了能够实现负载均衡和故障转移,在本发明的实施例中,采用适合做分布式的MONGODB数据库,把用户IDuserid和用户会话记录sessionid保存在分布式数据库中。对MONGODB数据库的操作通过调用模板类MongoTemplate(类似于JdbcTemplate)进行。

在本发明的实施例中,由于采用了非相关数据库MONGODB进行数据的存储,操作更加灵活。MONGODB的安装使用简便,而且MONGODB是内存数据库,存储性能非常强大,在读取速度上有很不错的优势。系统把推荐记录和用户会话记录session存储在MONGODB数据库中,访问非常快,这样系统平台服务端就不会保存用户会话状态和推荐状态,服务端重启可以说对用户没有任何影响,所以系统平台非常有利于做成具有负载均衡性质的分布式系统,甚至做成云平台。

进一步如图3所示,本发明实施例的就业信息推荐系统在业务上划分为业务逻辑层与持久化层,可以实现良好的业务封装。持久化层主要调用了Hibernate框架,该框架可以适配各种关系型数据库,包括主流的MYSQL和Oracle,而且它对数据库操作的封装和优化做得很全面。

业务逻辑层、持久化层以及CXF控制器均通过SPRING容器进行管理。有利于减少层与层之间的耦合性,提高开发效率。

学生用户利用本实施例的推荐系统进行个人信息引导时,通过填写期望的工作地域和工作领域,能够获取系统为其推荐的符合这些条件的公司。本发明实施例的个性化推荐模块通过调用ACTIVEMQ消息队列服务器的客户端接口响应学生用户的个性化推荐服务请求。

ACTIVEMQ服务器是消息队列服务器,它很好的实现了AMQP(高级消息队列协议)来进行异步消息处理。ACTIVEMQ服务器响应学生用户的个性化推荐服务请求的数据流向示意图如图4所示,其作业步骤如图5所示,具体包括:

步骤S510、Web服务器将学生用户输入的倾向性信息发送至ACTIVEMQ服务器的消息队列中进行存储。

步骤S520、个性化推荐进程根据系统的时间和随机数生成ID号并将ID号存储于MONGODB数据库中。

步骤S530、个性化推荐进程监听消息队列以获取倾向性信息,根据倾向性信息得到推荐结果,并建立以ID号命名的队列,将推荐结果存储于该队列中。

步骤S540、Web服务器从MONGODB数据库中查询ID号,并从与ID号相匹配的队列中获取推荐结果。

举例而言,学生用户在个人引导过程中,通过发送端接口把期望地域和期望领域以json格式({"address":"河北石家庄河北秦皇岛广东广州","industry":"服务业科技产品"})发送到ACTIVEMQ服务器的消息队列COMPANY.DEFAULT4中,并根据系统当前时间及随机数产生一个ID号(如1396252479545-752762703,这个ID号将会成为另一个队列的名称)。发送的过程中会即时返回这个ID的值,它将被保存在MONGODB数据库中。

消息消费者的异步处理过程是,消费者通过监听消息队列COMPANY.DEFAULT,拿到要处理的数据(地域+领域),调用推荐算法得到推荐出的公司(json数组形式),然后新建一个以上述得到的ID号为名称的队列,向该队列发送推荐公司的处理结果。最后学生用户从MONGODB数据库中拿到对应自己的推荐公司的ID号,通过ID去名称相匹配的队列下拿处理结果。

若Web服务器在设定的时间内从与该ID号相匹配的队列中获取到推荐结果,则通过页面渲染显示推荐结果,并将推荐结果存储至MYSQL数据库中。若Web服务器在设定的时间内未获取到推荐结果,则返回空数组,并通过页面显示无推荐项的提示信息。例如将设定的时间设置为2s用来给消费者计算。如果2s内获得处理结果(如{"company":[{"id":"4871","name":"广州数建信息科技有限公司"},…,{}]}),则会在页面渲染出相应的公司,超过2s则按计算超时处理,返回空数组。

需要注意的是,本发明实施例中的消息生产者和消费者构建在java项目中,该项目依赖java语言编写的ACTIVEMQ依赖包,这个java项目被封装成jar文件形式,加入到了该系统(Icareer项目)的maven依赖库中,启动Icareer项目的同时要通过main函数的方式启动公司个性化推荐模块,启动以后,消息消费者会通过监听的模式等待要处理的消息,消息来源于学生用户个人引导的过程中。

在本发明实施例中,通过基于RESTful风格的处理,把计算机密集型的推荐处理与系统平台解耦,提高了系统的性能和稳定性。把算法做成可热插拔式的中间件,这样不仅有利于系统的独立完善也有利于算法的完善甚至更替。

另外,系统和算法引擎通过异步消息队列链接,所以系统平台和算法引擎可以独立部署在不同的服务器上,算法的密集型计算所消耗的资源不会影响系统平台的稳定性。

RESTful风格的API在安全性设计上还不够完善,在对资源进行简单的增删改查操作时,它是简单灵活的,但是在对访问控制的限制上还有所欠缺,CXF框架也没有给出完善的访问控制的实现方案。为增加系统的安全性和稳定性,本发明实施例的就业信息推荐系统采用访问控制过滤器监听学生/企业用户对该系统的访问与操作。

基于推荐系统的所有的请求都要经过访问控制过滤器,访问控制过滤器的验证规则为:当学生/企业用户发出访问或操作请求时,访问控制过滤器首先判断请求的类型。若请求属于能够被放行的类型,则允许学生/企业用户对系统的访问或操作请求。若请求不属于能够被放行的类型,则通过学生/企业用户的认证信息获取用户的类型,并执行相匹配的用户类型权限验证与登录状态更新。

进一步地,在权限验证和状态更新的过程中,首先要检查请求是否是根路径(如Icareer或Icareer/),如果是根路径分两种情况,第一种情况是用户已经处于有效的登录状态中,这种情况属于自动登录,直接转发到用户主页;第二种情况是用户登录状态已经失效,转发到登录页面。如果不是根路径而是一般的业务请求,检查对应用户类型的登录状态并进行更新。

检查对应用户类型的登录状态并进行更新的规则为,若该类型用户的请求时间距离上一次请求时间小于等于第一时间阈值,则放行该请求。若该类型用户的请求时间距离上一次请求时间大于第一时间阈值且小于等于第二时间阈值,则更新该用户的登录时间并放行该请求。若该类型用户的请求时间距离上一次请求时间大于第二时间阈值,则删除本次会话并转发至用户的登录页面。

举例而言,如果该类型用户的请求时间距离上次请求时间小于等于5分钟,放行请求。如果该类型用户的请求时间距离上次请求时间大于5分钟并且小于等于30分钟,更新该用户的登录时间并放行请求。如果该类型用户的请求时间距离上次请求时间大于30分钟,直接删除该会话,转发到登陆页面重新登陆。

上述访问控制过滤器的完整的工作流程如图6所示。

在本发明的实施例中,由于客户端不会保留用户的会话状态,这样对系统的安全性有了很大的保证,服务端的无状态性和客户端的无状态性同时得到了满足。

本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1