日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈一下我对如何设计微服务接口的理解和思考

發布時間:2023/12/10 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈一下我对如何设计微服务接口的理解和思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微服務是一個獨立運行、自帶數據存儲管理,對外提供接口的自治系統。微服務設計很關鍵的一點是微服務接口的設計。不同微服務經常是分配給不同的團隊開發的,接口是各團隊編程的契約。

下面只討論微服務間接口的設計,至于微服務內部子模塊間接口的設計比較靈活,內部接口修改也不會有太大的影響,不在這里討論。

從我的理解來看,微服務接口設計要考慮以下幾個方面:1、接口協議選型。2、定義接口內容。4、明確接口性能。5、做好接口管理。

二、 接口協議選型
考慮接口使用什么通信協議來傳遞數據,是使用TCP、UDP,還是HTTP? 亦或是采用文件下載,數據庫共享,Redis緩存共享的方式?同一個微服務的不同接口都可能采用不同的方式:

現在微服務流行采用的http協議restful接口(語言無關)。
RMI遠程接口調用(Java語言支持)。
大數據傳遞采用文件離線下載的方式(FTP)。
狀態數據(如果進度條)放在Redis中共享緩存。
數據庫共享。一般來說微服務的數據庫是隔離的,不同微服務不允許直接訪問彼此的數據庫。如涉及大數據有性能問題時可特殊考慮。
如果涉及機密數據的傳輸, 特別是在interenet上發布的接口為防止數據被人抓包分析,需要有加解密處理。

做了接口協議選型后就可以考慮采用哪些第方件,常用的cxf、spring boot是restful服務發布組件;RMI是Java原生支持的;C++可以采用SOAP。FTP存在安全性問題,可以采用SFTP。

三、 定義接口內容
接口內容包含接口名稱(url)、輸入參數、返回值、錯誤碼。一個典型的restful接口內容定義如下:?

?

補充說明:返回的錯誤碼,1表示成功,0表示失敗。參數類型按http協議的定義一般有query參數、body參數、Header參數這幾種。
四、 明確接口性能
接口性能定義了接口單次響應時間、單次查詢返回記錄條數,每秒支持調用次數等。

數據量比較大的查詢接口一把都會設計成分頁查詢,需要定義好單次查詢返回的最大記錄條數。

微服務接口的支撐能力是有限的,必須定義好單位時間內允許的最大請求次數(超過請求次數就不響應或者返回錯誤碼),否則海量的請求一下涌過來,服務就掛了。對于發布在interenet上的服務,一般還會根據會員級別設定一天的請求次數上限等。

五、 做好接口管理
接口管理涵蓋接口版本管理、接口權限管理、接口管控。

同一個接口在不同時期可能有不同的訴求,當有新需求來時我們就需要做版本升級。一般來說新增接口,舊的接口不會立即下線(因為還有很多其它的微服務在使用),這時候就通過加一個版本號來解決。在URL中帶上不同的版本號,需要使用新特性的可以調用新版本的接口;不使用新特性的可以仍然沿用舊版本接口。

對外發布的接口需要做權限控制,未授權的微服務不允許訪問。可以采用在接口的header參數中加上加密的token作為權限認證。

當整個系統很龐大以后,各微服務發布的接口需要做可視化管理,包含服務的注冊、發布、調用、下線都需要在統一的運維平臺上操作。

前面提到的接口版本管理對接口不同版本的兼容處理是不可能不限支持下去的。發布舊版本接口的下線公告到期后,如果在監控平臺上發現舊版本接口已無人調用就可以下線了,如果還有人調用則通知他限期整改。
參考:https://blog.csdn.net/ylforever/article/details/79334416

總結

以上是生活随笔為你收集整理的谈一下我对如何设计微服务接口的理解和思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。