北京软件外包招聘网站架构分析
系统总体设计的思路有以下几点:
1. 将网站所有的网页分为动态访问和静态访问两类,所有可以静态化的内容,全部作为静态文件处理。
2. 考虑到性能优化和维护方便的需要,网站尽可能拆分成不同的子系统,这样避免了相互之间的干扰,容易发现和处理问题。
3. 系统设计成负载均衡的架构,在需要的时候,可以有多台服务器同时对外提供服务,将来即使有服务器出现问题,也不会出现网站整体不能提供服务的情况。
4. 整体设计保持总体规划、分步实施的策略,从网站投资回报的角度考虑,逐步提高网站的处理能力。
规划三个数据库,其中两个主数据库,分别存放求职者简历和企业职位信息,一个从数据库,专门存放职位信息供求职者查询。
数据库名 |
主数据库 |
从数据库 |
求职者数据库 |
(RS) 个人维护数据使用 |
—— |
职位数据库 |
(POS) 企业维护简历 |
(POS2) 只供求职者查询使用 |
后台管理相关的表,例如销售人员、系统管理员等表,由于只有内部人员使用,且与企业相关的业务关联较多,因此与企业表放在同一个数据库(POS)中。
职位查询数据库(POS2)定期从职位数据库中同步简历数据中北京软件定制开发。
子系统和数据库的对应关系如下:
子系统名 |
子系统编码 |
功能备注 |
数据库 |
数据库备注 |
职位搜索 |
search |
搜索职位、查看职位、栏目 |
POS2 |
查询多 |
简历维护 |
my |
求职者:注册、登录、维护简历 |
RS |
数据量大、字段多 |
发布职位 |
ehire |
企业注册、登录、发布职位、维护企业信息 |
POS |
|
搜索简历、查看简历 |
POS |
数据从RS同步过来 |
||
后台管理 |
admin |
CMS、后台管理。企业管理、销售管理 |
POS |
|
管理员:求职者管理(跨数据库访问) |
RS |
|
子系统之间应该尽量避免子系统之间的访问,但是如有必要,也可以调用彼此的服务。但是调用时,需要考虑如何保证调用方式可信的,以及调用之后的数据没有经过篡改。广泛采用的方式是在一般的业务参数后面,将参数进行签名,并且附加时间戳,防止重复使用。
规则一般如下:
假定调用服务的地址和参数为:abc.aspx?para1=value1¶2=value2&key=xxxxxxx
key的计算方式:将所有参数名按照升序排列,将参数名参数值,外加一个密码和时间戳,经过MD5编码之后,生成一个Key。
将这个key也作为参数传到服务提供方。服务方使用相同的方式对所有参数进行同样的加密,算出一个key',然后比对key和key',如果相同,那么表名来源、内容均是正确的,那么验证通过;如果发现计算出来是错误的,那么说明是非法调用,返回一个错误。