development
作者development·2010-12-11 14:06
·

基于SOA的大型招聘系统架构设计与实现

字数 3885阅读 2886评论 0赞 0
引言

      随着互联网业务的不断丰富,网站开发技术不断细分,对于大型网站来说,所采用的技术涉及面非常广,从硬件到软件、编程语言、数据库、Web服务器、防火墙 等各个领域都有了很高的要求。大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案是:使用高性能的服务器、高性能的数据库、高 效率的编程语言还有高性能的Web容器。采取这些措施,在一定程度上意味着更大的投入,并且这样的解决思路不能完全解决问题,没有很好的扩展性。

        对于大型网站,采用良好的架构设计,能降低成本、提高性能。架构设计应该完成的工作是:业务构件分析,应用架构设计,按照面向构件的思想,识别构件、确定 构件接口和行为,决定服务构件需求,负责架构归档。我们为某国际大公司开发了大型人才招聘网站,所搭建的系统平台,可使分布各地的公司各部门复杂的人才招 聘流程在网上平台流畅进行。系统架构基于SOA,并应用了数据挖掘、智能决策和J2EE技术,将先进的技术、思想与实际的应用很好结合,实现了人才招聘工 作的自动化、智能化,同时,通过对职位需求、招聘信息等数据的智能分析,为相关部门提供了辅助决策依据。

    1、基于RUP的系统建模

      在构建人才招聘网站架构的过程中,需要充分重视各种服务级别的需求,一个企业级系统中的服务级别需求往往是错综复杂的。RUP提供了一个以体系为中心、用 例驱动与风险驱动相结合的迭代软件开发过程。基于RUP的人才招聘网站开发的各个阶段划分,其中用例模型是其它模型的基础。需求捕捉阶段产生的关键工件有 用例模型,补充规范和词汇表。用例模型基于外部视角定义了系统的行为,包括与系统进行交互的角色,以及描述交互内容的用例。基于人才招聘网站由职位发布、 网上求职、应聘管理、决策分析子系统组成。系统涉及的角色有两类,一类为主导角色(指向系统输入信息的角色),它们是人力资源部和部门负责招聘人员;另一 类为被动角色(指从系统中接受信息的角色),即求职者。在角色分析和需求目标分析的基础上,所抽象出子系统的用例模型。

    2、业务架构设计

       本业务架构体系,是针对企事业信息管理系统中具有体系性的、普遍性的问题而提供的通用解决方案。大型招聘网站的业务架构设计,其人才招聘系统主要分为人才 招聘和辅助决策支持两大功能。其中人才招聘模块的功能有:职务发布、网上求职、应聘管理等;辅助决策功能主要有人才评估和智能决策。人才评估系统对各部门 进行信息整合,抽取有效数据;利用人事知识库,对数据进行抽取、分析,得到知识库作决策分析。系统还对历史招聘信息以及人才信息进行汇总、统计、分析,得 出人才关键信息库,再进行人工智能分析(如根据公司现有人员职称构成、人员学历构成、人员年龄构成和知识领域构成等信息进行分析),对招聘人员进行评价、 打分,并提供未来的趋势分析报告,对各数据进行对比、分析,形成各类图表,为部门选择合适的人才提供决策支持。分布各地的公司部门,登录系统后,可在网上 填报本部门的职位需求信息,并可以进行职位模板的维护。职位需求填报后,公司人力资源部将进行审核确认,审核通过才能进行职位信息的前台显示。应聘者进入 招聘网站后,可以浏览各类招聘信息,进行分类查询。查询到合适职位后,首先要通过注册、登录,然后可在简历模板上填写或修正简历,也可浏览查询面试反馈信 息。各个部门可查询本部门的所有求职信息。系统具有自动筛选功能,可根据系统设置,将不符合应聘要求的应聘者筛选掉,自动进行信息反馈。对满足条件的应聘 者发送面试通知,进入面试流程,人力资源部门对最终部门面试的结果进行审批。系统同时具有自动评估功能,以量化的方式对人才综合素质进行评价,例如,通过 “知识储备、英语计算机能力、专业技能、工作经验”等设定的指标进行考察,计算人才的综合评分。同时,系统也可对公司及部门的现有人员情况进行分析,从人 员职称结构、学历结构、年龄结构等多个方面进行分析,为新招聘职位提供决策依据。

    3、基于SOA的技术架构

        人才招聘网站采用灵活的基于SOA的Web应用程序框架,构建在核心的Spring架构功能之上,如图4所示。SOA是一种面向企业级服务的系统架构,在 基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是service)构建起来的。利用基于SOA的系中, 而这些功能模块就是SOA架构中的不同的服务(services)。服务是封装成用于业务流程的可重用组件的应用程序函数。人才招聘网站采用J2EE技术 平台,基于Spring+Hibernate的轻量级技术架构,灵活、易扩展、移植性好,不需要复杂昂贵的EJB容器;采用支持MVC 2的SOA的多层(n-tiers)系统架构,强大、灵活、高效、易维护、可扩展,满足企业级应用的各种要求;支持多种操作系统、数据库、应用服务器、浏 览器;真正平台独立;支持多种表示层技术:JSP/Velocity/FreeMaker/JSF/XML,界面修改非常方便;页面设计遵守CSS2、 W3C等规范,兼容主流浏览器如IE(及其变种)、Firefox、Safari等;基于DIV+CSS的页面设计;前端求职招聘与后端管理系统完全分 离,安全、可靠、稳定;页面缓存、页面压缩技术可以保证系统具有良好性能。人才招聘网站通过策略接口,高度可配置,采用多种视图技术,如JSP、 Velocity、Tiles。Spring中间层能容易地与基于任何其他Web MVC框架(如Struts、WebWork或Tapestry)的Web层组合。表示层负责所有的用户交互。服务层封装了应用程序业务逻辑层,处理来自 异构客户端的请求,同时与各种后端系统交互。它采用Session Facade模式封装业务逻辑和业务数据。Session Facade被开发为无状态的会话Enterprise JavaBean,而数据则由实体Enterprise JavaBean来管理。

   4、架构性能优化

        在构建人才招聘网站系统时,除了要考虑系统的架构及应具有的功能以外,还要关注架构的可用性、容错能力、可重用性、安全性、扩展性、可维护性、可靠性等各 个方面,任何一个方面的考虑不同都有可能为整个系统的构建埋下隐患。下面阐述我们提高系统架构性能的解决方案。HTML静态化效率最高、消耗最小的就是纯 静态化的html页面,所以我们尽可能采用静态页面。图片服务器分离对于Web服务器来说,图片是最消耗资源的,将图片与页面进行分离,建立独立的图片服 务器,这样的架构可以降低提供页面访问请求的服务器的系统压力。在应用服务器和图片服务器上,进行不同的配置优化,尽可能少的LoadModule,保证 更低的系统消耗和更高的执行效率。数据库集群和库表散列大型招聘网站在面对大量访问的时候,需要使用数据库集群或者库表散列。但数据库集群由于在架构、成 本、扩张性方面都会受到所采用数据库类型的限制,所以需要从应用程序的角度来考虑改善系统架构,为此,使用库表散列是最有效的解决方案。我们在应用程序中 安装了业务应用或者功能模块,将数据库分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列。比如用户表, 按照用户ID进行表散列,这样就能够低成本地提升系统的性能,并且提高了系统的可扩展性。缓存网站架构中的缓存非常重要。除了Apache提供了自己的缓 存模块以外,也可以使用外加的Squid模块进行缓存。这两种方式均可以有效地提高Apache的访问响应能力。负载均衡负载均衡可以解决高负荷访问和大 量并发请求所产生的问题。我们采用了软件四层交换的技术来解决负载均衡问题。软件四层交换可以使用Linux上常用的LVS来实现。LVS就是Linux Virtual Server,它提供了基于心跳线heartbeat的实时灾难应对解决方案,提高了系统的鲁棒性,同时它也提供了灵活的虚拟VIP配置和管理功能,可以 同时满足多种应用需求,这对于分布式的系统来说是必不可少。在软件四层交换的基础上搭建的squid集群,成本低、性能高,且还有很好的可扩充性,很容易 往架构里面增减节点。

   5、结束语

    招聘网站现已投入应用,运行情况良好,具有高并发和高负载性,能很好满足大型企事业单位人事招聘管理和决策需要。通过灵活的系统设置,系统能适应可能发生的各种复杂情况,具有灵活的应变能力和适用性。系统通用性强,易于维护,并且很容易进行扩展。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广