宁波团队的云API平台主要为公司提供数据提取服务和推送服务,并包含了一些项目中常用的微服务,API并不是很多,如果您对其他API有需求,可及时联系我们扩展;
项目背景
我们团队负责着公司很多大小项目,并为其他团队提供基础数据服务;
在提供基础数据方面,以往,其他团队如果需要用哪部分数据,通过邮件申请,我们将数据同步到生产中心和上海开发中心,我们以数据库同步的方式将数据同步到异地数据库,这种方法久而久之,我发现有以下几个缺点:
由于只实时同步到数据库,各个团队对于自己关心的数据变化只能自己通过扫描表实现,费时费力也不实时;
我无法得知哪些团队使用哪些数据,除了去邮件翻阅查找,况且有些团队临时使用数据没法邮件;
我无法得知哪些团队的哪些数据已不再使用;
我无法统计数据使用频率;
在提供公共服务方面,由于我们负责维护着公司几十个项目,其中涉及到很多模块是公用的,比如发手机短信,提取债券基础信息,提取节假日信息,提取宏观指标,中文分词等,以前大多采用项目多数据源形式,但其实某些数据源可能只是用到其中一两个表的查询服务,那么,为什么我们不直接以安全的API方式,提供给所有项目使用呢?
基于以上两个主要考量因素,我想设计实现一套云API服务,解决上述两个问题,并为以后的项目打下基础;
云平台使用
在使用上,很简单,登录:
云API类型和使用
云平台的API分两种,和;
以的形式提供,你可以使用任何语言调用这些API(但提交的参数信息必须经过验签,防止API被外部恶意调用);
以或的形式提供,当您订阅的推送API发生时,可以及时调用您的地址或你自己去侦听连接,都可以拿到实时数据,推送的API提供三种推送模式,会在推送服务的提供者定义中指定:,和;
拉取API调用示例
以语言为例,其他语言类似:
注:在代码的可以发现,传给云API的参数必须经过验签,请确保您的和准确才能成功调用API;
推送API调用示例
HTML版接收推送消息:
Java版接收推送消息:
其他语言都提供了对应语言的客户端实现,具体请参看:https://github.com/sockjs/sockjs-client
注:推送服务返回的数据都是加密的,形如:的base64密文数据,需通过推送服务设置的参数secKey和对应的解码算法解密;
API统计与跟踪
平台会统计每个API被用户调用的使用情况,未来可能会加入限流限次数等措施。
综合实例
以订阅宁波数据库节假日表为例,在我们做过的很多项目中都需要用到节假日这个表,在项目中,你可能将所有的节假日数据缓存起来了,当该表发生变化时(低频变化)您可能需要刷新缓存,做法有以下两种:
只使用:由于不大,可定时拉取该表数据更新缓存(浪费流量);
配合和一起使用:先利用拉取模式缓存该表,订阅该表的数据变化,根据推过来的数据更新相应的记录(推送使用);
通过以下接口获取holiday_info所有数据,请特别数据该拉取接口最多一次性只允许拉取2000条数据,请自行分页拉取:
如果采用订阅模式,则自行根据上文处理`SockJS`推送,推送过来的数据是这样的:
可以发现推送过来的数据内含执行的SQL语句以及发生变化的前后数据值,足够您进行相应的缓存数据处理了。
该API为公司内部员工调用权限,没有对应权限的用户是无法调用的
其他的API将不再累述,比如手机短信发送等API,可以登录平台直接选择安装使用;
感谢阅读!
关注我们的公众号
领取专属 10元无门槛券
私享最新 技术干货