在《
对微服务的理解以及实现一套微服务对外发布API管理平台
》一文中,我们论述了如何将公司内部的微服务按需对外提供云API服务的整个流程和实现,文中我们只讲到了以Restful API方式对外提供API调用服务,那么如何实现以下功能需求呢?
数据库基本信息表发生变化,如何以推送的方式告知用户表的哪些数据发生了删除,更新和新增动作呢?比如我们的团队维护的节假日表需要给多个团队使用,每个团队都需要及时更新节假日缓存信息,如何实现?
我这里采用WebHook的方式实现,在我们的API服务中,根据app_id登录后,你可以订阅推送服务,并填入您的回调URL地址,当您订阅的API服务相关的数据发生变化时,我们就会以安全的形式调用你这个URL,至于这个URL的业务处理那就是各个系统自己处理的事情了,整个流程是这样的:
推送服务将需要推送的消息发往MQ队列中,主要的几个字段包括:业务号,操作号(新增,修改,删除),操作的数据结构;
云服务通过配置文件配置需侦听的队列和主题,如收到相应的消息,再根据第三方应用在后台登记的URL和app_id,api_id等信息进行参数签名,将相关数据传给第三方应用URL(POST方式);
第三方应用URL中必须包含参数验签的工作,以提高安全性;
云平台操作上,使用app_id和密码登录云平台后,找到数据同步的推送服务并选择安装后:
点击设置后,进行URL回调的设置,安全码中只需要填入任意数字与字母的组合即可(用于签名),点击提交即可:
后台设置完后,会在数据发生变动时,调用这个URL,在这个业务URL里您可以通过参数验签认证后,进行相应业务数据的处理,比如刷新缓存等操作了,是不是很简单呢:),一般来说,云平台的推送服务可以通过WebHook这种方式解决。
感谢阅读!
关注我们的公众号