基于PhalApi的Api服务平台系统的设计与研究

2020-06-29 07:16周文浩宋英雄
微型电脑应用 2020年5期
关键词:入库初创代码

周文浩 宋英雄

摘 要:不同于大型企业,中小型初创企业在为自身应用研发相应的Api服务平台的同时,需要注重时间成本和经济成本的控制。而采用基于PhalApi和OAuth2.0协议的轻量级架构可以在保证系统资源安全的前提下达到敏捷开发,缩短开发周期的目的。通过在该架构下对大量数据批量存储入库效率的测试研究,进一步优化了系统在大量数据存储入库方面的性能。该系统为中小型初创企业提供了一个平衡时间和成本的Api服务平台方案。

关键词:PhalApi框架;OAuth2.0协议;批量存储;成本控制

Abstract:Differing from large enterprises, small and medium-sized start-ups need to pay attention to the control of time cost and economic cost while developing corresponding Api service platform for their own applications. The lightweight architecture based on PhalApi and OAuth 2.0 protocol can achieve agile development and shorten the development cycle on the premise of ensuring the security of system resources. By testing and studying the efficiency of mass data storage in the framework, the performance of the system in mass data storage is further optimized. This system provides an Api service platform for small and medium-sized start-ups to balance time and cost.

Key words:PhalApi frame;OAuth2.0 protocol;batch storage;cost control

0 引言

当今大型企业的Api服务平台的后端业务框架多是基于SSM(Spring SpringMVC MyBatis)来开发的,对于那些中小型初创企业而言,采用此框架需要维护一个规模不小的开发运维团队,从时间和金钱角度而言也是开销巨大的。另外,对于某些特定业务功能而言,无论是在开发速度还是迭代周期等方面,SSM又显得太过笨重。有鉴于此,OpenApi服务平台系统的成本与性能的平衡问题是中小型初创企业不可回避的。

本文所研究探索的基于PhalApi的Api服务平台系统正是致力于解决中小型初创企业无法找到合适贴切的开源框架的困境。其良好的架构约束规范保证了在海量数据下系统的性能稳定[1]。这些都对中小型初创企业在降低开发和维护自身开放服务平台时的时间和金钱成本方面具有重要意义。

1 系统的设计

1.1 基于WAMP的底层环境架构设计

WAMP是指在Windows环境下配置Apache+Mysql+PHP相关组件的一种开源软件环境架构[2]。在整个系统结构中,WAMP作为底层环境架构主要负责对http请求的解析处理和响应,具体结构如图1所示。

在實际设计过程中若以外网的方式访问,则需要更改apache的相关配置文件。在配置文件夹中找到httpd.conf这个文件,找到deny from all这行代码并删除,然后把allow from 127.0.0.1这行代码更改为allow from all[3]。具体的配置文件代码,如图2所示。

另外,为了为了确保url重写功能能够正常运行,需要把配置文件中AllowOverride none这段代码更改为AllowOverride all。具体代码如图3所示:

1.2 基于OAuth2.0认证协议的安全设计

基于OAuth2.0协议,用户可以在无需为第三方应用提供用户名和密码的情况下授权第三方应用以调用api等方式访问其保存在服务器上的视频,照片等私密资源[4]。OAuth2.0的大致框架流程,如图4所示。

它既保障了用户私密信息的安全性,又减少了因为授权问题而产生的同步时延问题的时间成本,进一步提升了用户体验。

使用授权码模式完成OAuth2.0授权的过程需要以下3个步骤:(1)client请求授权服务端,获取Authorization Code;(2)client通过Authorization Code再次请求授权服务端,获取Access Token;(3)client通过服务端返回的Access Token获取用户的基本信息[5]。而第三方应用正式通过上述的几个接口与服务端交互进而获得用户授权的,其主要的流程,如图5所示。

具体实现代码,如图6所示。

1.3 PhalApi轻量级框架

PhalApi框架又被称为π框架,作为国内一款完全开源的轻量级PHP Api开发框架,它非常适用于api平台的接口服务开发,支持HTTP/SOAP/RPC协议,可用于快速搭建微服务、RESTful接口或Web Services[6]。连接后端数据库的相关配置代码如下所示:

2 系统性能测试

由于本系统是面向某企业设计的聚合类接口服务平台,因此在性能上必须保证稳定和高效。而在实际应用中需要每隔一段时间调用一次入库Api存储十万级甚至百万级的数据,所以接下来着重测试Test.Warehouse接口。

2.1 测试准备

本次测试采用本机作为一台小型服务器。同时,为了使测试结果具有可对比性,除了保证硬件设备参数一致外,每次对后台数据库进行十万级数据写入操作后都清空相关表格。具体测试环境信息,如表1所示。

2.2 测试流程

首先我们采用逐条插入的方式将10万条数据进行存储入库。测试结果为一次性逐条入库10万条数据所需耗时为86.397秒。显然,这种低效的入库方式在实际应用中是不能接受的。因此,我们需要对入库方法和逻辑进一步优化。具体代码如下所示。

在实际应用过程中,面对大量数据的存储入库问题,采用批量插入的方式可以极大地提升入库效率,而通过进一步研究测试发现,单次提交的数量同样会影响大量数据的入库性能。测试过程中,更改单次提交数量,将10万条数据分批提交入库,得到九组测试数据,测试结果,如图9所示。

3 结果分析

由系统测试结果可以看出,当使用PhalApi框架对十万级甚至百万级数据进行存储入库时,采用insert_multi批量插入的方式可以大幅提升海量数据的入库效率。如图11所示,进一步深入框架底层研究insert_multi函数的源码可以发现,批量插入正是在一句标准插入SQL语句中封装多条数据,然后提交至服务端。而如果采用逐条插入的方式,那么插入100 000条数据就会有100 000条insert语句提交到服务端,每一句都需要提交到数据库引擎中去解析、优化。结果必将是增加数据库的开销,进而大大降低整个系统的性能。更简明地说,批量插入使得提交到服务器地insert语句减少了,服务端压力也随之减小,虽然对单个SQL语句的解析和优化的时间相应增加,但实际的存储数据行却大幅增加,因此系统的整体性能得以提高。insert_multi函数底层源码如下所示。

4 总结

本文设计的基于PhalApi和OAuth2.0协议的接口服务平台系统具有可快速部署,安全性高,迭代周期短等特点,为中小型企业和初创团队搭建聚合类接口服务平台提供了一个平衡时间和金钱成本的高性价比方案。另外,通过对本系统性能的进一步研究测试,本系统经受了企业级的功能测试,在保证系统安全稳定运行的同时,还进一步提升了大量数据存储入库的效率。

參考文献

[1] 欧海文,付永亮,于芋,等. 一种改进的OAuth授权机制有效性分析[J]. 计算机应用与软件,2017,34(12):196-201.

[2] 黄小冬,陈薇. 教育教学数据Open API设计与实现[J]. 软件导刊,2015,14(5):115-118.

[3] 段玉龙.基于OAUTH、OPENAPI、REST技术的快速开发云平台架构的设计与实现[J].工业设计,2016(2):160-161.

[4] 王丹磊,李长军,赵磊,等. OAuth 2.0协议在Web部署中的安全性分析与威胁防范[J]. 武汉大学学报(理学版),2012(12):41-43.

[5] 谭晨辉,刘青炎. OpenAPI出现、起源与现状[J]. 程序员,2016(7):411-417.

[6] HARDT D. The OAuth 2.0 Authorization Framework[EB/OL]. (2012-3-30) http:// tools.ietf.org/html/draft-ietf-oauth-v2-31.

[7] Cloud Security Alliance. The Treacherous Twelve[EB/OL]. 2016:42(2):229-233.

(收稿日期:2019.09.22)

猜你喜欢
入库初创代码
“初创”杯喜剧大赛
2021年山西省6591家科技型中小企业入库
中国食品品牌库入库企业信息公示②
中国食品品牌库入库企业信息公示①
初创企业的估值与融资问题
京沪初创企业领跑亚洲
《花花肠子》《倒车入库》《拔牙之后》《老农赶集》
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细