對於微服務,常見的架構模型就是API網關+服務。web
那麼,API網關設計中又有什麼坑呢?面試
直接將服務穿透到外網。 API層只是套了殼,加了鑑權、中間件而已。具體返回值由服務定。數據庫
這樣就致使了客戶端、服務端都累得要死,誰都不討好。安全
架構就是一層加一層。多線程
添加了一個BFF層,backend for forntend,專門作適配。架構
針對頁面提供接口,好比商品頁面,就一個接口,而後BFF層去調用多個服務,在這裏作降級,好比優惠券服務沒有返回就不顯示就完了。負載均衡
客戶端只用和BFF層溝通,什麼適配、協議、兼容、定製都是這一層來作。客戶端感受很爽。框架
服務端也只用提供基礎數據,不用關心業務邏輯,不用管適配,返回的接口是什麼結構。服務端也很爽。分佈式
BFF層只作了數據裁剪,兼容之類的邏輯,輕不輕鬆?也很輕鬆。ide
將BFF根據業務拆分,好比查看商品一個,訂單頁面一個。這樣一個掛不會影響全局。
有沒有發現:
分久必合、合久必分。 分開了就有不能統一的地方,合併了就會單點故障。
將通用邏輯作到了API網關層,BFF層專一於業務邏輯。
API層採用Nginx這種高可用的軟件,基本不會掛,掛了重啓便可,限流、負載等邏輯用模塊實現,方便部署。 這一層徹底和業務無關。
總結當耦合性過高的時候,就加一層,做爲緩衝。 當合並有單點的時候,就分開。當分開有不能統一的時候,就合併。
儘可能讓專門的人作專門的事情。減小業務對技術的耦合。
我知道你們必定有好久都沒有注意到基礎這個點了,平時的工做應該也不多涉及到這些底層知識吧,可是這些東西很重要。若是是想要跳槽加薪或者是應對即將到來的面試,這些都是不可忽視的知識。在這一點裏,須要重視的點有:
Java 學習資料,包含了 Java 工程師必學的四大開源框架–MyBatis、Spring、Spring MVC、Spring Boot,視頻資料、大廠面試題等,須要的同窗能夠點擊這裏免費領取。
以上整套學習資料均免費分享,須要的小夥伴,點擊下方的藍色字體能夠獲取,歡迎來白嫖哈~