第三方数据接入方法的探索与实践
2020-01-16高玉民翟浩然
文/高玉民 翟浩然
随着大数据技术在各行各业的逐渐应用,如何高效、安全地获取数据成为一个重要课题。其中,除自有数据外,很多业务不可避免的需要从第三方渠道获取数据,作为自有数据的补充,并将相关数据统一纳入分析和研究流程,以期更加准确地指导各项业务活动。
与自有数据相比,第三方数据经常存在数据属性、业务属性、请求方法和返回信息各不相同的情形,在此背景下,就需要通过相应的设计对第三方数据进行梳理,进而更加快捷地挖掘数据价值。。
一般来说,通过开发统一的外部数据调用模块来对接第三方数据是一个行之有效的方法。其原因在于,虽然不同业务下所需的数据不一样,但数据背后的调用方法基本是相同的。基于此,笔者从以下几个方面入手,分析和设计通用的外部数据对接模块对第三方数据接入的作用及相关问题,以期更好地服务于第三方数据的获取及利用有所帮助。
1 源配置和数据项的整合
目前,虽然不同的数据提供商给出的数据格式和请求细节不同,但基本采用网络API方式对外提供数据接口服务。因此,接入第三方数据时,也会参照提供商给出的技术文档逐一配置所需的URL、用户名、Token、请求数据等,形成数据“接口”,并在一定的时机通过这个接口调用所需数据。同时,在第三方渠道返回消息后,也会参照技术文档,将数据项目解析成业务需求的格式,最终返回给业务端。
在上述流程中,通过配置数据源表(表1),系统化录入所需的信息,有利于自动化请求数据和并进行项目解析,提高数据获取和利用的运行效率。
其中,第三方渠道信息返回状态码要根据己方数据系统进行转义,以便己方技术人员在无需查看数据提供商技术手册的情况下,也能及时了解系统运行状况和接口返回信息状态,方便进行接下来的工作流程。
此外,由于不同业务可能会向同一个数据结果索取不同的项目,己方有必要根据业务ID 配置项目名称转义信息。在数据返回业务端之前,由数据对接模块直接将数据打包成业务端所需的格式和形式。这样的话,若业务端数据需求有所变化,技术人员只需要更改对应的转移信息即可。
2 数据联合运算索引、快照及记录
如上文所述,业务端有可能需要从多个数据中选用不同的字段来计算最终的结果。在某些关键业务场景下,该结果的好坏将直接影响业务的运行。为此,有必要针对特定业务建立数据联合运算索引,不仅将每一个中间步骤所需的数据源记录下来,还将此次运算时所需的数据项目的值做成快照,统一记录,以备复查。未来随着业务的深入开展,己方也能够根据历史运算的结果判断某个或某几个第三方数据源的质量优劣。
表2中,URL 列表、缓存版本列表、项目名称列表、项目数值列表的位置要保持一致。项目名称列表、数值列表中的每一个项目也要形成一个列表,且这些列表中的位置也要一一对应,这样可以兼顾从一个数据中获取多个字段的业务场景。
表1:数据源配置表
表2:数据联合运算索引:数据计算log 内容
表3:缓存数据结构
举例说明,如果从ABC 三个数据源中调用了数据,则URL 列表、版本列表、名称列表和数值列表分别如下:
URL:[“url_a”,”url_b”,”url_c”]
版本(时间):[“20190101”,”201901 02”,”20190103”]
数据项目:[[“credit_history”,”debt_total”],[“debt_total”],[“asset_total”]]
数据值:[[10000,50000],[3500],[1500000]]
上述示例中,采用credit_history 和debt_total 字段,从数据源A 于2019年1月1日获取了数据,数值分别为10000 和50000。同理,后两项数据也可以通过前述方法获得。
其中,若数据存储空间相对较小,数值列表可以不进行存储,日后需要查询时,向缓存请求即可。
以上数据联合运算索引记录的建立,可以有效回顾业务计算历史,判别不同数据源的质量优劣,为以后的业务运行质量的优化创造良好的条件。
3 缓存处理的必要性
为了保证数据业务的持续性和有效性,有必要对从第三方数据源每次请求的数据进行缓存处理,具体来说,缓存处理主要基于以下考虑:
(1)某些第三方数据更新频次很低,每一次使用没必要都从数据源获取,使用已缓存的数据在一定程度上并不影响业务结果;
(2)通过缓存处理,也会相对每次使用第三方数据的成本;
(3)如上文所述,业务运算结果和第三方数据质量相关,为了备查以及验证数据源质量,也需要对某些第三方数据进行缓存。
表3中,过期时间视业务需要进行设定,在请求数据成功后,可根据当前时间加上时效段计算得出。
相关数据进行缓存处理后,若相同业务再次请求数据,可以优先从缓存中获取仍然有效的历史数据;当强制使用新数据或缓存过期后,再向数第三方据源请求数据。
同时,当缓存数据失效后,可采用一定的策略进行批量删除,比如某时段历史计算数据已经考察结束无继续存储的必要,或缓存容量过大需要释放存储空间等,可以考虑从系统中移除缓存数据。
4 优化数据请求的效率
第三方数据通道大都通过Http 接口形式对外提供服务,并对某单一接口设置日访问次数上限。为了提高访问效率、考察响应时间,可通过采取预请求和响应记录的方式,评测对接口的效率,并进一步优化请求方式。
预请求是指在业务成熟的前提下,预先获知某时间段内(周、天)需要的数据类型和数量,并在业务开始前,即向数据接口请求相关数据,存入数据缓存中。若请求数据量过大,超过接口单日访问次数上限,则可设置专门的数据获取计划,将获取数据时间进一步提前。
响应记录是指记录某数据接口每次请求的响应时间,在一定时期内对响应时长进行统计,获取每个数据接口的响应时长记录,进而从整体角度了解当前所有第三方接口的响应质量及对业务的影响,为接下来的业务运行作出准备。
5 加强业务安全和数据安全
加强数据对接和使用的安全保护包括两个层面,一是业务安全,二是数据安全。
业务安全是指数据的获取和使用要符合国家法律法规的相关规定,严格筛选第三方数据渠道,确保渠道提供的数据是合法且经过脱敏的。否则,第三方数据供应方出现问题,导致接口不可用,将对业务的运营造成不利影响;进一步的,如果己方采用的第三方数据本身触犯了法律法规的相关要求,己方可能面临着行政处罚或刑事处罚,损失不可估量。
数据安全是指数据请求、存储和使用要充分考虑到安全因素,主要包括以下内容:
(1)数据请求安全是指在从第三方数据通道获取数据时,经常需要向第三方数据源提供相关参数,而某些参数或直接涉及隐私,或属于业务方面的敏感参数,都不能直接向第三方数据接口发送。为避免这种情况,必须在接口对接前由数据使用方与数据提供方共同确认请求数据的加密方式,在使用时向数据接口发送不可解密的密文,从而达到保护隐私和敏感数据的目的。另外,若使用Http 接口,则一定要使用Https 协议通信,进一步保证请求安全。
(2)存储安全是指获取后的数据信息一定要保存在数据需求方经过严格权限设计的数据库中,对于数据的存储、迁移、归档等动作要有一套完整且安全的流程规划,并切实做好数据库管理的相关工作。
(3)在使用数据时也要遵守一定的规范,比如要遵守数据提供方的约定、数据计算不能改变源数据、使用敏感数据时要首先经过脱敏环节等等。
6 结语
基于第三方数据的调用方法基本相同,可通过设计通用的外部数据对接模块接入第三方数据。研究和开发通用的外部数据对接模块时需要源配置和数据项的整合,数据联合运算索引、快照及记录,缓存处理的必要性,优化数据请求的效率及加强业务安全和数据安全等,最终实现第三方数据合法合规、高效安全地为己方所用。