接口:兩個(gè)獨(dú)立系統(tǒng)之間同步數(shù)據(jù)或訪問對方程序的途徑
一吃靠、如何設(shè)計(jì)接口
1. 搞清楚是主動訪問還是被動請求
1.1. 主動訪問:一是我方是數(shù)據(jù)的使用方状答,需要主動從對方獲取數(shù)據(jù)辅鲸;二是我方是數(shù)據(jù)的提供方菩彬,需要主動將數(shù)據(jù)同步給對方赁还。
主動訪問無需做接口,是訪問對方的接口漏麦。需要明確需要在什么節(jié)點(diǎn)訪問對方的接口客税?用戶觸發(fā)什么操作實(shí)時(shí)去訪問?還是沒有實(shí)時(shí)要求唁奢,而是周期性地訪問霎挟?
Senario 1 我方數(shù)據(jù)使用方,需要的數(shù)據(jù)是用戶使用某個(gè)功能必須的數(shù)據(jù)麻掸。在操作時(shí)酥夭,實(shí)時(shí)訪問對方的接口獲取數(shù)據(jù)展示給用戶,如注冊某網(wǎng)站時(shí)獲取驗(yàn)證碼的功能脊奋。
Senario 2 我方數(shù)據(jù)使用方熬北,且需要的數(shù)據(jù)跟用戶實(shí)時(shí)操作無關(guān)的基礎(chǔ)數(shù)據(jù)。一般處理:腳本定時(shí)(如:兩個(gè)小時(shí)一次)訪問對方接口將數(shù)據(jù)獲取來存儲到自己的數(shù)據(jù)庫诚隙,再用刀的時(shí)候直接從數(shù)據(jù)庫去獲取并展示讶隐。
Senario 3. 我方數(shù)據(jù)提供方并且數(shù)據(jù)是下游系統(tǒng)需要的實(shí)時(shí)呀求高的數(shù)據(jù)則更多地用實(shí)時(shí)同步;若是基礎(chǔ)數(shù)據(jù)久又,則選擇周期性同步的方式巫延。
1.2. 被動請求:
一是我方是數(shù)據(jù)提供方,需要對方來獲取數(shù)據(jù)地消;二是我方是數(shù)據(jù)使用方炉峰,需要對方主動將數(shù)據(jù)同步過來。
被動請求需要提供接口供對方訪問脉执。確定的點(diǎn):1. 對方訪問時(shí)疼阔,需要提供什么樣的參數(shù)?根據(jù)提供的參數(shù)需要返回什么數(shù)據(jù)半夷?數(shù)據(jù)從什么地方取值婆廊?
Senario 1 我方數(shù)據(jù)使用方,不知道上有系統(tǒng)什么節(jié)點(diǎn)產(chǎn)生了數(shù)據(jù)及數(shù)據(jù)產(chǎn)生的時(shí)間巫橄,無法及時(shí)去獲取淘邻,可讓對方主動將數(shù)據(jù)同步過來。
二湘换、搞清楚數(shù)據(jù)交互的實(shí)時(shí)性要求
Senario 1 我方數(shù)據(jù)使用方列荔,需要根據(jù)業(yè)務(wù)的需要決定獲取數(shù)據(jù)的實(shí)時(shí)性敬尺。實(shí)時(shí)?周期性贴浙?
三、選擇合適的接口方式
1. mq消息隊(duì)列:一個(gè)中間件署恍,數(shù)據(jù)提供方將數(shù)據(jù)放到數(shù)據(jù)中間件崎溃,數(shù)據(jù)獲取放從中間件中獲取數(shù)據(jù)。針對向多個(gè)系統(tǒng)同步基礎(chǔ)數(shù)據(jù)的需要盯质,消息隊(duì)列是最適合的方式袁串。
若選擇這種同步方式,要注意的一點(diǎn)是:增量同步還是全量同步呼巷,若是增量同步囱修,對方是增量獲取還是全量獲取王悍?若是全量同步破镰,在什么情況下,對方應(yīng)該更新數(shù)據(jù)压储,什么情況下應(yīng)該更新數(shù)據(jù)鲜漩?
2. otter同步:數(shù)據(jù)同步方直接訪問數(shù)據(jù)獲取放的數(shù)據(jù)表將數(shù)據(jù)寫入對應(yīng)的表重。實(shí)時(shí)性最高集惋。
3. http: 常用孕似,雙方通過http地址保持?jǐn)?shù)據(jù)同步和通信。
四刮刑、如何編寫接口文檔
主動/被動+數(shù)據(jù)使用方/數(shù)據(jù)獲取方的維度
Senario 1 對方系統(tǒng)主動推送數(shù)據(jù):
Senario 2 對方主動來獲取數(shù)據(jù)獲取數(shù)據(jù)
Senario 3 被動接受對方推送的數(shù)據(jù)
Senario 4 主動從對方獲取數(shù)據(jù)