接口:两个独立系统之间同步数据或访问对方程序的途径
一、如何设计接口
1. 搞清楚是主动访问还是被动请求
1.1. 主动访问:一是我方是数据的使用方,需要主动从对方获取数据;二是我方是数据的提供方,需要主动将数据同步给对方。
主动访问无需做接口,是访问对方的接口。需要明确需要在什么节点访问对方的接口?用户触发什么操作实时去访问?还是没有实时要求,而是周期性地访问?
Senario 1 我方数据使用方,需要的数据是用户使用某个功能必须的数据。在操作时,实时访问对方的接口获取数据展示给用户,如注册某网站时获取验证码的功能。
Senario 2 我方数据使用方,且需要的数据跟用户实时操作无关的基础数据。一般处理:脚本定时(如:两个小时一次)访问对方接口将数据获取来存储到自己的数据库,再用刀的时候直接从数据库去获取并展示。
Senario 3. 我方数据提供方并且数据是下游系统需要的实时呀求高的数据则更多地用实时同步;若是基础数据,则选择周期性同步的方式。
1.2. 被动请求:
一是我方是数据提供方,需要对方来获取数据;二是我方是数据使用方,需要对方主动将数据同步过来。
被动请求需要提供接口供对方访问。确定的点:1. 对方访问时,需要提供什么样的参数?根据提供的参数需要返回什么数据?数据从什么地方取值?
Senario 1 我方数据使用方,不知道上有系统什么节点产生了数据及数据产生的时间,无法及时去获取,可让对方主动将数据同步过来。
二、搞清楚数据交互的实时性要求
Senario 1 我方数据使用方,需要根据业务的需要决定获取数据的实时性。实时?周期性?
三、选择合适的接口方式
1. mq消息队列:一个中间件,数据提供方将数据放到数据中间件,数据获取放从中间件中获取数据。针对向多个系统同步基础数据的需要,消息队列是最适合的方式。
若选择这种同步方式,要注意的一点是:增量同步还是全量同步,若是增量同步,对方是增量获取还是全量获取?若是全量同步,在什么情况下,对方应该更新数据,什么情况下应该更新数据?
2. otter同步:数据同步方直接访问数据获取放的数据表将数据写入对应的表重。实时性最高。
3. http: 常用,双方通过http地址保持数据同步和通信。
四、如何编写接口文档
主动/被动+数据使用方/数据获取方的维度
Senario 1 对方系统主动推送数据:
Senario 2 对方主动来获取数据获取数据
Senario 3 被动接受对方推送的数据
Senario 4 主动从对方获取数据