同步第三方平台数据的5种方案
前言
最近缺项目经历想快速提升项目实战能力(包含多个AI项目),或者最近找工作,或者想学习AI的小伙伴,可以看看下面👇🏻的这个链接(或许真的能够帮到你)。
最近经常需要跟第三方平台打交道,需要跟他们交换数据。
我今天总结了5种工作中常用的技术方案,可以把第三方平台的数据同步到我们的数据库中,希望对你会有所帮助。
1.excel文件
有时候我们需要从第三方平台同步的数据,不太敏感,比如:分类数据。
在他们的网站首页或者商品页面,所有人可以看到分类。
这类数据第三方平台可以直接同步文件导出我们,比如:excel文件或者txt文件。
这种方式我们可以快速将数据导入我们的数据库表,一个sql命令就能搞定。
如果导入的excel数据有些业务逻辑,我们可以通过api接口实现。
这类api接口不对外暴露访问路径,只能在应用服务器上用curl命令调用localhost的接口。
当然如果业务逻辑比较复杂,或者excel的数据比较多,api接口没法同步返回导入接口,否则可能会出现接口超时问题。
这时可以同步api接口触发导入功能,然后另外开启一个线程,异步导入数据。
或者说这种情况,我们直接在job中导入数据。不过如果在job中导入数据,需要将excel文件提前上传到oss服务器上。有个参数可以设置导入的文件url,然后job读取该url的数据,进行数据导入操作。
无论是开启异步线程,还是使用job异步导入excel的数据,最后最好能将导入结果返回给用户。
如何返回呢?
我们可以在excel文件中增加一列:结果,如果哪一行数据导入的时候出现异常,则将异常原因写入结果列。
然后最关键的一步是excel导入程序执行完之后,无论成功,还是失败,我们都需要将结果excel上传到oss上,然后返回给用户。
如果只是开发人员看,可以直接将结果excel上传到oss后的url,在日志文件中打印出来即可。
当然如果你是通过同步的api接口导入excel文件,并且该excel的数据不多,也可以直接在该接口返回结果excel文件。
需要注意的是该方案,只适合同步历史数据,或者某一段时间的数据。不适合同步增量的数据,该方案不太智能,需要人为参入excel的导出和导入。
2.openapi接口
很多第三方平台为了数据安全方面的考虑,或者为了做到一劳永逸,更愿意提供openapi接口。
以后无论什么接入方,都可以直接通过openapi接口获取想要的数据。
为了防止接口的数据被其他人盗窃或者数据被篡改,openapi接口通常要增加签名,或者对数据进行加密。
该方案可能目前获取第三方平台数据,使用最多的技术方案了。
用该方案接入方可以获取第三方平台的历史数据和增量数据。
但也带来了一些问题,比如:对接第三方平台openapi接口有一定的开发成本,并且如果第三方接口逻辑调整了,没有通知调用方,数据可能会出现问题。
同时openapi接口通常走的http请求,需要通过网络,可能会存在网络超时,或者偶尔出现接口不可用的情况。
该方案增加了系统的复杂度,需要在系统中增加失败重试机制,做幂等性设计。
最近缺项目经历想快速提升项目实战能力(包含多个AI项目),或者最近找工作,或者想学习AI的小伙伴,可以看看下面👇🏻的这个链接(或许真的能够帮到你)。
3.SDK
有些大厂,为了调用者接入方便,直接提供了SDK给调用者直接调用。
在SDK中封装了获取数据的细节,比如:调用什么接口,签名算法是什么,或者包含失败重试机制等等。
我们的代码中只需要调用SDK中的某些方法,就能获取到我们想要的数据,就像调用本地方法一样,非常简单。
不过需要配置该SDK的服务url、账号和密码等信息。
每个SDK接入者,都需要申请自己独有的账号和密码。
4.sftp
如果你跟银行对接过,会发现他们对有些敏感的数据,比如:还款记录等数据的获取方式是有一定要求的。
处于安全性考虑,他们不希望将核心数据通过openapi接口直接暴露到公网。
他们更愿意使用还有sftp。
银行那边有sftp写文件的账号权限,你们系统有该sftp读文件的账号权限。
该sftp在运维层面做了限制,只能通过双方的内网服务器才能访问。
可以用txt文件,也可以用别的。
当然该txt文件的数据格式,有一定的要求,并非直接将数据写入txt即可。
比如:前4位代表占位符,中间8位代表数据类型,后面12位代表具体数据等。
相当于双方规定了数据的写入和读取规则(协议)。
即使sftp上的文件被泄露了,其他人拿到txt文件,如果不知道规则,也没法直接获取到有用的信息。
5.直接写数据库
前段时间跟有个网价平台的数据交互方案,非常有意思,跟大家分享一下。
我们这边提供了一台服务器,那台服务器上有一个数据库。
网价平台提供了一个应用程序,将他们的数据,写入该数据库中。
至于该应用程序是如何获取到数据的,这一点我们不用关注,他们能保证写入我们想要的数据。(我猜测是通过api接口获取的,但是加密通信算法,没有对外暴露)
我们在部署该应用程序时,需要配置数据库连接、账号和密码等信息,数据库的相关信息只有我们才知道。
通过这种方案也能实现数据的同步。
第三方平台出了应用程序,该程序主要将数据写入到数据库。
我们出了服务器和数据库。
通过他们的程序将数据写入该数据库之后,在我们的系统中连接该数据库,就能直接获取相关数据了。
最近缺项目经历想快速提升项目实战能力(包含多个AI项目),或者最近找工作,或者想学习AI的小伙伴,可以看看下面👇🏻的这个链接(或许真的能够帮到你)。