多Web应用服务器在指掌纹系统中的应用初探
刘洁
北京市公安局刑侦总队刑事技术支队,100054
关键词: 指掌纹系统; 多Web应用服务器; 通讯转接; 流量平衡
中图分类号:DF794.1 文献标志码:B 文章编号:1008-3650(2012)02-0054-02

随着指掌纹系统信息化的推广和深入, 应用环境也在不断发生着变化。以往的指掌纹系统是建立在专用的网络上, 基于传统的C/S 模式, 服务器通常采用高性能的PC、工作站或小型机, 并应用大型数据库系统, 如Oracle、Sybase、或Informix , 应用系统模式在开放性与信息的发布、交流等方面存在很大的局限性; 同时客户端需要安装专用的客户端软件, 涉及到安装、维护、升级及路途的成本较高。随着网络信息化产业的飞速发展, 完全基于B/S结构的指掌纹系统应运而生, 为系统提供了强大的管理功能, 并具有良好的扩展性, 方便与其他基于B/S结构的信息系统信息共享, 客户端零维护, 从而成为真正满足业务需求的远程系统。另一方面, 指纹新的应用模式和需求也在不断产生, 各省市间的指纹信息共享、与其他应用系统的信息共享, 促使系统的规模和运算量出现大幅增长。随着数据量的增加, 维护数据的成本也在提高, 许多部门会选择将指纹数据集中存储和处理, 便于指纹数据的管理和更新, 而基层单位的应用需求却又在不断的增加, 又导致远程数据通讯量的大幅增长。为应对这一发展趋势, 需要考虑系统如何来满足大容量通讯的要求。由此可见, 指掌纹系统应拥有自己的高性能远程通讯平台, 即需要将多Web应用服务器集群整合到指掌纹综合信息管理系统中。

1 多Web应用服务器应用原理
1.1 通讯流量的需求估算

一般使用的Web应用服务器, 其性能只能满足数十个左右应用部门的服务需求, 如果通过限制用户登录和延长等待时间来解决问题, 不是一个具有长远发展前途的解决方法。

首先需要估算出一个中心系统在通常状况下远程通讯的数据量, 远程客户端至少要进行指纹录入、提交比对和检视结果这3种基本操作。指纹录入可能是档案扫描、活体采集录入、摄像等, 每一被采集人需要传输的指纹图像数据大小为40× 20字节, 掌纹图像数据(掌心+掌侧)大小为(500+200)× 2字节, 加上其他信息, 大约2.5M。保守的估算一个远程客户端平均每天有10个档案要录入, 10个比对任务要提交, 同时还有其他如检视等工作任务, 那么一天的通讯量就是250M以上。如果这样的应用部门有百个以上, 比如北京市的指掌纹中心系统, 500多个派出所直接访问中心系统, 那么服务请求数就会达到500余个, 一天的数据通讯量可达125G。

而通讯程序的一个线程或进程在连续读写一个通讯连接的数据时不能处理其他通讯连接的数据, 125G的通讯数据在100M宽带网上至少需要传输几十个小时的时间。根据工作需求, 基层单位提交的建库和比对任务需及时反馈给提交方, 显然这是单个Web应用服务器所不能承受的。

随着活体指掌纹采集技术的发展, 通过便携设备采集指纹, 再通过无线通讯直接到指掌纹中心系统上做比对, 使得访问指掌纹中心库连接数会更多, 达到上千个连接, 基于以上两个方面的考虑, 指掌纹综合信息管理系统应该有多Web应用服务器的作为支撑。

1.2 多Web应用服务器的实现原理

基于B/S结构的指掌纹系统依附在强大的网络基础之上, 在系统架构上采用B/S 结构, 客户机上只需安装一个浏览器(Browser), 如Netscape Navigator或Internet Explorer, 服务器安装Oracle、Sybase、或Informix等数据库, 浏览器通过Web应用服务器接受服务请求访问, 同数据库进行数据交互, 并对指掌纹数据进行相应的数据处理, 实现指掌纹建库、提交比对, 浏览等业务功能(见图1)。

提供请求服务的一组应用服务器组成一个Web应用服务器集群(cluster), 构成一个松耦合的多处理器系统, 它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送, 实现分布式计算、高可靠性和负载均衡。

图1 多Web 应用服务器集群工作模式

2 多Web 应用服务器的实现方法
2.1 通讯转接的实现方法

用一台计算机作为转接服务器(它本身也可以作为Web 应用服务器), 其IP地址是向外公布的, 客户端登录系统时先连接到这台服务器上。这台机器上的转接程序维护着一个Web 服务器的列表, 列表中的每一项都记录着如下内容:(1)Web 应用服务器性能; (2)运行状态; (3)通讯连接的数量; (4)每个通讯连接已发送的和尚未发送的数据量。

转接程序根据这些数据, 通过流量平衡算法, 确定哪一台Web 应用服务器是压力最小的机器, 将这个机器的IP地址传送回客户端, 客户端得到新的IP地址后再登录到新的Web 应用服务器上。

2.2 流量平衡的实现方法

Web应用服务器在启动后需要通过本地网连接到转接服务器上, 注册验证信息, 转接程序的Web 应用服务器列表中就会增加一个对象。当一个客户端连接被分配到这台Web 服务器时, 并转换登录成功后, 就向转接程序上报连接数和数据量情况。

Web应用服务器需要定时检查自身的通讯连接和数据流量并上报给转接程序, 客户端中断连接或远程通讯异常中断时, 也要重新计算和上报通讯情况。

在负载均衡的思路下, 多台服务器为对称方式, 当某台服务器出现故障时, 负载均衡服务器就会自动进行检测并停止将服务请求分发至该Web应用服务器, 并由其他工作正常的Web应用服务器继续提供服务, 从而保证了服务的可靠性。

2.3 Web应用服务器的线程队列

多线程或者多进程会占用很多系统资源, 但通讯的接收发送又要求有一定的实时性, 尤其是客户端连接相当大的时候, 单进程轮循式地对通讯套接字进行读写将会导致严重的延时现象。如何缩小延时又不占用过多系统资源?可以在Web 应用服务器程序中加入线程队列, 让一组线程同时去处理通讯数据的读写, 同时这组线程队列又负责对数据进行处理, 并最终去访问和读写数据库。这样线程数量不会像通讯连接数那么多, 又不会产生过多的延时, 通讯和数据处理之间的关系就由这个线程队列来处理。当然, 后端还需要有数据库连接池的支持, 而线程队列也正是数据库连接池的使用者。

3 多Web 应用服务器的应用
3.1 访问数和数据流量的均衡分布

多Web应用服务器应用的首要问题是如何将服务请求均衡地分配到多个Web 应用服务器上, 使每台机器的处理任务不至于过多也不过少。每台Web应用服务器都具有同等的地位, 可以单独对外提供服务而无须其他服务器的辅助, 而接收到请求的服务器都独立回应客户机的请求。

3.2 通讯转接的实现

指掌纹系统在实现上是多个Web应用服务器, 最终是要让客户端机器连接到其中的某个服务器上, 才能进行通讯。但用户无需得知每一个服务器的IP地址, Web应用服务器集群对外提供一个统一的地址, 当一个服务请求被发至该集群时, 根据一定规则选择一台服务器, 并将服务转定向给该服务器承担, 即将负载进行均衡分摊。因此, 需要在客户端建立通讯连接时有一套自动转接机制, 使客户端能够顺利地改换登录目标机器。

3.3 解决了通讯和数据处理的关系

远程通讯的最终目的是要在后台进行业务处理, 通讯和负责处理业务的业务处理程序之间的关系是影响系统处理远程业务能力的核心问题。多Web应用服务器的使用, 解决了一台Web应用服务器只能为有限的用户提供服务的限制, 可以用多台Web应用服务器集群, 为大量用户提供服务, 同时多Web应用服务器的使用也实现了负载均衡, 解决了Web应用服务器的冗余性, 提高了指掌纹系统的实用性和可靠性。

The authors have declared that no competing interests exist.

参考文献