Scientific Journal of Information Engineering April 2016, Volume 6, Issue 2, PP.61-67
A Fingerprint Payment System Based on HBase Chen-Yan KONG†, Jian-Min ZHAO, Xin-Zhong ZHU, Hui-Ying XU College of Mathematics, Physics and Information Engineering, Zhejiang Normal University, Jinhua 321004, China Email: kcy19911113@126.com
Abstract The development of e-commerce makes the security of online transactions become a hot problem. Traditionally, passwords used to ensure payment security are easy to be forgotten or leaked. To improve the security during paying, this paper uses fingerprint information as the basis of user’s authentication. However, compared with the passwords security ensuring, the fingerprint information need more storage space so that the traditional relational databases are not able to meet the requirement of payment system in terms of storage space and I/O speed. Therefore, this paper uses HBase as the data center of payment system, combined with multi-threading technology, pre-assigned region and write caching policy to store data in parallel. The experimental results show that, when data amount is large, the system has advantages in both storage and query efficiency over the relational database SQL Server; and compared with the original HBase, the storage performance of the fingerprint payment system also has been improved. Keywords: Fingerprint; Payment System; HBase; Data Center
基于 HBase 的指纹支付系统* 孔晨燕 1,赵建民 1,朱信忠 1,徐慧英 1 1. 浙江师范大学 数理与信息工程学院,浙江 金华 321004 摘 要:电子商务的发展使得网上交易的安全性成为热点,以密码方式保障支付安全的传统方式存在遗忘、泄露等多种问 题。为提高用户支付时的安全性,本文提出以指纹信息作为用户身份验证的依据。但是,指纹信息较密码所需空间更多, 传统关系型数据库在存储空间和读写速率上已无法满足支付系统的要求。因此本文使用 HBase 作为支付系统的数据中心, 并结合多线程技术,预先分配区域,写缓存等策略将数据并行存储到 HBase 中。实验结果表明,当数据量较大时,该系 统较关系型数据库 SQL Server 在存储与查询效率上都具有优势;与原生 HBase 相比,其存储性能也有一定提高。 关键词:指纹; 支付系统; HBase; 数据仓库
引言 随着电子商务的发展,网上交易量日渐增大。网上交易的安全性成为用户关注的重点,但是传统的保 障网上交易的方式是由简单的数字和字母组成的密码,它很容易被恶意破解,而且容易被遗忘、泄漏。至 于银行提供的电子秘钥,虽然能够在一定程度上提高交易时的支付安全,但是无法在手机或移动终端上使 用。因此研究出一种安全、便捷的支付方式,成为迫在眉睫的问题。本文提出一种“基于 HBase 的指纹指 纹支付系统”,他以指纹信息作为用户身份验证的依据,很好地解决了传统支付方式中存在的密码遗忘和 泄露问题。在前端,通过手机客户端采集用户的指纹信息,方便、快捷。 指纹支付在保障支付的高安全性的同时也给指纹的存储带来了挑战,传统的密码只需要十几个字节, 但指纹信息的存储需要几百个字节。当用户达到数百、数千万乃至数亿时,存储用户指纹信息所需要的空 间将达到 PB 级,而且数据往往是“一次存储、多次应用”[1],对数据的读取和查询的实时性要求比较高。 *
基金资助:受国家自然科学基金支持资助(61272468)。 - 61 http://www.sjie.org
传统的关系型数据库从数据的存储容量和访问效率上,都难以满足要求[2]。近年来,随着云计算技术的发展, 以 Hadoop[3-5]集群为代表的分布式计算技术以及 HBase(Hadoop Database)
[6-8]
存储技术为海量用户及指纹信
息的实时存储提供了可能。本文以 HBase 作为数据存储平台,以手机端作为客户端,搭建了一个基于 HBase 的指纹支付系统,为网上交易提供了一种新的方式。
1
基于 HBase 的指纹支付系统
1.1
系统架构 在本文所设计的“基于 HBase 的指纹支付系统”中,用户注册时输入身份证号及基本信息,包括姓名、
性别、地址等。前端采用手机端控制指纹采集仪采集指纹,将注册的用户信息通过 WebServices[9]直接存储 到传统关系型数据库中。在前端直接把信息存储到关系型数据库中的优点在于,前端的管理及学习成本较 低,关系型数据库较 HBase 成熟很多,熟悉关系型数据库的技术人员也很多,所以使用关系型数据库作为 前端较容易管理。同时一个关系型数据库只存储一个区域内的用户信息,这些信息还会同步更新到由 HBase 搭建的指纹数据中心中,超过期限的信息会被自动删除,所以前端采用关系型数据库能够满足用户信息的 存储需求。 在传统关系型数据库与 HBase 的同步连接中本文选择采用 VPN 的方式进行网络互联,VPN 的优点在于 可以实现网络认证和加密通讯机制,因此可以保证数据同步时的安全性。为保证数据中心的安全性,还需 要加上必要的防火墙等措施外,以此避免数据中心与公网的直接互联。其网络拓扑结构图 1 所示。图中 web service 服务器是为关系型数据库与 HBase 数据中心的同步而服务的,具体工作流程将在 3.3 节进行描述。 地区A
关系型数据库 存放的服务器 HBase数据中心
地区B DataNode1 DataNode2
DataNode3 关系型数据库 存放的服务器
路由器
防火墙
WebService 服务器
NameNode
DataNode4 地区C DataNode5
关系型数据库 存放的服务器
图 1 系统架构
1.2
HBase 存储表结构设计 对于本系统需要保存两方面的内容,分别是用户基本信息(userInfo)和用户交易信息(transInfo)。用户的
基本信息包括用户身份证号(ID)、姓名(name)、性别(gender)、地址(address)、电话(phone)、指纹信息(FInfo), 用户交易信息包括交易时间(TransTime)、付款方式(TMtehod)、付款理由(TReason)、付款账号(PAccount)、 对方账号(RAccount)、金额(amount)。在关系型数据库中,这些信息会保存为两张表,两张表的关系为一对 多。再将关系型数据库转换为 HBase 中的表时两张表会转换为两个列簇。 指纹支付系统需要具备在线查询的能力,例如根据身份证号获取指纹信息进行用户身份验证,获取某 - 62 http://www.sjie.org
段时间内用户所有的交易记录。不同于关系型数据库 HBase 只能在行健(Row key)上建立索引,行健设计是 支持在在线实时查询的关键。基于这一机制,把经常作为条件进行查找的列,组合到行健设计中。在本系 统中,用户使用身份证号进行登录,所有的查询都是基于身份证号的,所以将身份证号设计行健中。具体 表结构如表 1 所示,表中的指纹信息是随意输入的,因为现实的指纹信息较长,无法在表中显示。 表 1 HBase 数据中心存储表结构 Row Key 3211211 1111111 1111
1.3
userInfo
Time Stamp
name
gender
address
t1
jack
male
Beijing
phone
FInfo
transInfo TReas FAccount TAccount amount on
Trans Time
Type
t3 t5
即时到账 担保交易
18758923 abcdefghij 890 k
t2 t4
转账 购物
1234563 1234563
789091 324556
200.00 400.00
数据写入过程 在本文中数据写入过程,指的是数据由关系型数据库写入到 HBase 数据中心的过程,在数据写入时本
文采用增量同步的方法。因为增量同步实现的是小数据量的传输,它可以减少网络与 HBase 数据中心的负 担,提高效率。增量同步问题的实质就是如何获取最新数据,常见的方法是通过触发器、分析日志、时间 戳判定来获取最新数据。本文在获取最新数据方面采用时间戳判定法,为数据库的每一张表增加“插入时间” 字段,用以记录数据库中每条记录插入的时间,在增量同步时,每隔固定时间根据时间戳将数据库中更新 的数据插入到 HBase 中。相隔的时间以前端关系型数据库的更新速度而决定,即由用户的使用情况而决定。 在删除数据时采用触发器方法进行同步。 开始 利用时间戳获取更新数据 封装更新数据为JSON格式 调用Web Service
Y
成功
N
重传次数<10
Y 接收同步数据
JSON解析校验 N
Y
N
数据正确
向前端报错
写入HBase数据中心
记录日志
结束
图 2 数据写入过程
数据写入的具体过程如下: 1)利用时间戳获取更新数据,同时系统记录下当前更新时间,用以在下次更新HBase数据中心时获取 - 63 http://www.sjie.org
更新数据。 2)前端采用JSON数据格式将更新的数据进行封装。 3)调用部署和发布在HBase数据中心的Web Service,接收来自数据库前端的最新数据。 4)如果成功调用Web Service,则进行第5步;如果调用Web Service不成功则要求前端进行重传,回到 第3步,默认情况下重传次数为10。如果重传次数大于10则进行第7步,否则重复第3步。 5)对接收到的数据进行解析校验,如果解析正确则进行第6步,否则进行第7步。 6)将解析得到的数据写入HBase数据中心。 7)向前端报错,丢弃数据,通知前端数据库重新传送数据 8)在日志中记录此次更新情况。 具体流程如图 2 所示:
1.4
数据写入策略 由于本文在数据写入时采用增量同步的方法,每次写入 HBase 时都是批量写入,逐条将记录插入
HBase 是没有效率的。因此 Web Service 将解析到的交易记录缓存到在本地的 Buffer 中,当 Buffer 满的时候 才 向 HBase 提 交 数 据 , 通 过 这 种 方 式 可 以 降 低 网 络 I/O 开 销 , 提 高 数 据 写 入 效 率 。 通 过 调 用 HTable.setAutoFlush(false)方法可以使用 Write Buffer 模式,在 HTable 对象中的 setWeiteBufferSize(Size)方法 可以设置 Buffer 大小,通过这两个关键函数实现写缓存策略。 HBase 数据中心在创建 HBase 数据表的时候会自动创建一个 region 分区,当批量写入数据时,所有的 数据都会写入到这个 region,直到这个 region 达到阈值并分裂,这样很容易引起单节点负载过高,影响写入 效率。所以在创建 HBase 数据表的时候,可以预先创建一些空的 region,这样当进行数据导入的时候, HBase 会根据 region 的分布情况在集群内做负载均衡,从而提高数据写入的速度。 另外在数据写入过程中,采用多线程技术,提高数据写入速度。 本文通过以上三种数据写入策略,提高数据写入速度。
1.5
数据访问过程 开始 用户输入身份证号 在用户表与Hbase 中同时进行查询 在用户表中查找到数据 ||在Hbase中查找到数据 Y 停止查找 返回用户的指纹信息
N
返回的指纹 信息与当前用户的指纹 信息一致 允许支付
Y 获取交易信息 N
将交易信息写入关系型数据库 结束
图 3 用户支付过程 - 64 http://www.sjie.org
在本系统中数据由前端关系型数据库通过时间戳判定法同步更新到 HBase 中,使用这种方法导致在前 端关系型数据库中也会保存部分数据。所以在本系统中进行查询时,需要在前端关系型数据库和 HBase 数 据中同时进行查找,任何一方找到数据则通停止查找,如果两方都没有找到则说明无此用户的信息,结束 查找。由于在本系统中任何的查询都要根据身份证号进行,所以在前端关系型数据库中为身份证号加上索 引,在 HBase 中以身份证号作为 row key 进行查找。图 3 以指纹支付系统中用户支付过程作为示例,描述在 此过程中对用户指纹信息的查询过程。 由图 3 可知,首先用户输入身份证号。用户的指纹信心存储在前端关系型数据库的用户表中,所以系统 以此身份证号在用户表和 HBase 数据中心中同时进行查找。如果在用户表或 HBase 数据中心中查找到该用 户信息则将其指纹信息返回到前端,与当前需要验证的用户指纹进行比对,确定该用户是否合法。若合法 则允许支付,将交易信息记录到前端关系型数据库中,若不合法则不允许其支付。如果用户表和 HBase 数 据中都无该用户的信息,则表明该用户未注册,无法进行支付。
2
实验结果与分析 在 5 台 Intel core(TM) i7-2600 3.4GHZ,内存为 4GHZ,硬盘空间为 500G 的机器上安装 HBase-0.94.2,
操作系统选用 Ubuntu10.04。选中一台作为 Master,其他 4 台作为 Regionserver,试验中 Web Service 直接部 署在 Master 上。在 HBase 节点内部为 100Mbps 的局域网,外部与集群以 100MBps 相连。在相同配置的 PC 机上安装 SQL Server2008,作为存放前端关系型数据库的服务器。前端手机采集指纹的效率以及手机端与 前端关系型数据库的连接不作为本文实验的内容。 首先对 HBase 的写入性能测试,在本文中前端关系型数据库通过增量同步将更新数据写入 HBase 数据 中心。所以测试 HBase 的写入性能,主要就是测试前端关系型数据库与 HBase 的同步效率。该测试分为两 个部分,一个是单个地区的同步测试,另一个是多个地区的同步更新,由于实验环境限制,此处只测试两 个地区时的同步情况。分别对同步到 SQL Sever、使用 HBase 原始接口写入、使用本文方法写入 HBase 三种 情况进行测试。测试结果如图 5 所示,其中 a 图为前端只有一个地区时数据写入 SQL Server 及 HBase 的情 况,b 图为前端有两个地区时的写入情况。
(a)一个地区
(b)两个地区
图 4 数据写入测试
由图 5 可知无论前端是一个还是两个地区,在写入的数据量较少时,同步到 SQL Sever,使用 HBase 原 始接口或本文方法将数据同步到 HBase 这三种情况的写入速度相差不大,并且同步到 SQL Sever 的速度相 对而言更快。但是当数据量较大时,如达到 5 万条时,同步到 SQL Sever 消耗的时间要明显高于使用 HBase 原始接口写入的时间,可见使用 HBase 作为数据中心在写入效率和存储空间上较关系型数据库具有优势。 而使用本文写入策略的写入速度比使用 HBase 原始接口写入的速度要快,可见本文提出的写入策略能够有 效提高 HBase 的写入效率。 - 65 http://www.sjie.org
为测试多个地区访问数据中心的 Web Service 性能,取图 4 中本文方法部分的数据进行对比,形成一个 地区与多个地区的对比。为了更加直观看出变化,画出对比图即图 5。
图 5 一个地区与两个地区同步对比图
图 6 查询测试
由图 5 可以看出数据量较少时一个区域与两个区域在向 HBase 写入数据的速度大体相同,但当数据量 较大时,两者之间还是有一定差距的。这主要是因为一个地区与两个地区同时调用数据中心的 Web Service, 在访问量上来看差距不大,但是当数据量过大如 5 万条时 Web Service 的负载能力有了波动。所以为提高多 个地区的同步处理性能,HBase 数据中心可以采用多机部署 Web Service 来对数据进行分流。 最后对 HBase 的查询性能进行测试,本系统需要同时对前端关系型数据库与 HBase 数据中心进行查询, 前端关系型数据库中的数据较少,查询时间较需要在 HBase 数据中心中查询的时间要短,所以此处只比较 相同数据量时在 SQL Server 与 HBase 数据中心中查找数据的速度。测试结果如图 6 所示。 由图 6 可以看出,当数据量较少时,SQL Server 的查询速度较 HBase 数据中心要快很多,但是随着数 据量的增大,SQL Server 的查询速度急速上升。HBase 数据中心的查询速度较稳定,数据量的大小对其查询 速度影响不大。
3
结语 本文设计了“基于 HBase 的指纹支付系统”,重点介绍了系统的架构,HBase 数据表的设计,在数据
写入时提出几点写入策略,以此提高 HBase 的写入速度。从最后的测试结果来看,HBase 作为支付系统的 数据存储中心较关系型数据库在写入速度,存储空间及查询速度方面都具有优势。同时本文提出的写入策 略对 HBase 的写入速度也有一定程度的提高。
REFERENCES [1]
Tom White, Hadoop: The Definitive Guide, O’Reilly Media, New York, 2009.
[2]
Bao, Yuan, et al. Massive sensor data management framework in Cloud manufacturing based on Hadoop. IEEE 2012:397 - 401.
[3]
Hodoop. http://hodoop.apache.org/.
[4]
Shvachko, Konstantin, et al. The hadoop distributed file system. Mass Storage Systems and Technologies (MSST), 2010 IEEE 26th Symposium on IEEE, 2010:1 - 10.
[5]
MLAChang, Fay, et al. Bigtable: A distributed storage system for structured data. In Proceedings of the 7th Conference on USENIX Symposium on Operating Systems Design and Implementation - Volume 7 26.2(2006):205--218.
[6]
Lars George, HBase: The Definitive Guide, O’Reily Media, New York, 2011.
[7]
Apache HBase, http://hbase.apache.org/.
[8]
Vora, Mehul Nalin, et al. Hadoop-HBase for large-scale data. Computer Science and Network Technology (ICCSNT), 2011 International Conference on IEEE, 2011:601 - 605. - 66 http://www.sjie.org
[9]
David A. Chappell,Tyler Jewell, Michael Wooten, Java Web Services, O’Reilly Media, New York, 2009.
【作者简介】 1 孔晨燕(1991-),女,汉族,硕士
2 赵建民(1950- ),男,汉族,教
研究生,研究方向为云计算,浙江师
授,研究方向为模式识别,物联网,
范大学计算机科学与技术专业硕士。
浙江师范学院本科,浙江大学硕士。
Email: kcy19911113@126.com
Email: zjm@zjnu.cn
- 67 http://www.sjie.org