Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析
Java生鮮電商平臺-SpringCloud微服務(wù)架構(gòu)中網(wǎng)絡(luò)請求性能優(yōu)化與源碼解析
?
說明:Java生鮮電商平臺中,由于服務(wù)進(jìn)行了拆分,很多的業(yè)務(wù)服務(wù)導(dǎo)致了請求的網(wǎng)絡(luò)延遲與性能消耗,對應(yīng)的這些問題,我們應(yīng)該如何進(jìn)行網(wǎng)絡(luò)請求的優(yōu)化與處理呢?
到底有沒有一些好的建議與方案呢?
?
下面這個文章將揭曉上面的問題,讓你對SpringCloud微服務(wù)網(wǎng)絡(luò)請求性能有一個全新的認(rèn)識.
?
目錄簡介
- 01.網(wǎng)絡(luò)請求異常分類
- 02.開發(fā)中注意問題
- 03.原始的處理方式
- 04.如何減少代碼耦合性
- 05.異常統(tǒng)一處理步驟
- 06.完成版代碼展示
01.網(wǎng)絡(luò)請求異常分類
網(wǎng)絡(luò)請求異常大概有哪些?
- 第一種:訪問接口異常,比如404,500等異常,出現(xiàn)這類異常,Retrofit會自動拋出異常。
- 第二種:解析數(shù)據(jù)異常,數(shù)據(jù)體發(fā)生變化可能會導(dǎo)致這個問題。
- 第三種:其他類型異常,比如服務(wù)器響應(yīng)超時異常,鏈接失敗異常,網(wǎng)絡(luò)未連接異常等等。
- 第四種:網(wǎng)絡(luò)請求成功,但是服務(wù)器定義了異常狀態(tài),比如token失效,參數(shù)傳遞錯誤,或者統(tǒng)一給提示(這個地方比較拗口,比如購物app,你購買n件商品請求接口成功,code為200,但是服務(wù)器發(fā)現(xiàn)沒有這么多商品,這個時候就會給你一個提示,然后客戶端拿到這個進(jìn)行吐司)
02.開發(fā)中注意問題
在獲取數(shù)據(jù)的流程中,訪問接口和解析數(shù)據(jù)時都有可能會出錯,我們可以通過攔截器在這兩層攔截錯誤。
- 1.在訪問接口時,我們不用設(shè)置攔截器,因為一旦出現(xiàn)錯誤,Retrofit會自動拋出異常。比如,常見請求異常404,500,503等等。為了方便后期排查問題,這個可以在debug環(huán)境下打印日志就可以。
- 2.在解析數(shù)據(jù)時,我們設(shè)置一個攔截器,判斷Result里面的code是否為成功,如果不成功,則要根據(jù)與服務(wù)器約定好的錯誤碼來拋出對應(yīng)的異常。比如,token失效后跳轉(zhuǎn)登錄頁面,禁用同賬號登陸多臺設(shè)備,缺少參數(shù),參數(shù)傳遞異常等等。
- 3.除此以外,為了我們要盡量避免在View層對錯誤進(jìn)行判斷,處理,我們必須還要設(shè)置一個攔截器,攔截onError事件,然后使用ExceptionUtils,讓其根據(jù)錯誤類型來分別處理。
03.原始的處理方式
- 最簡單的處理方式,直接對返回的throwable進(jìn)行類型判斷處理
04.如何減少代碼耦合性
- 為了不改變以前的代碼結(jié)構(gòu),那么如何做才能夠徹底解耦呢?一般情況下使用Retrofit網(wǎng)絡(luò)請求框架,會有回調(diào)方法,如下所示:
- 不管以前代碼封裝與否,都希望一句代碼即可實現(xiàn)網(wǎng)絡(luò)請求攔截處理邏輯。那么這個時候,我是怎么處理的呢?
05.異常統(tǒng)一處理步驟
- 第一步:定義請求接口網(wǎng)絡(luò)層失敗的狀態(tài)碼
- 第二步,接口請求成功,業(yè)務(wù)層失敗,服務(wù)端定義異常狀態(tài)碼
比如,登錄過期,提醒用戶重新登錄;
比如,添加商品,但是服務(wù)端發(fā)現(xiàn)庫存不足,這個時候接口請求成功,服務(wù)端定義業(yè)務(wù)層失敗,服務(wù)端給出提示語,客戶端進(jìn)行吐司
比如,請求接口,參數(shù)異常或者類型錯誤,請求code為200成功狀態(tài),不過給出提示,這個時候客戶端用log打印服務(wù)端給出的提示語,方便快遞查找問題
比如,其他情況,接口請求成功,但是服務(wù)端定義業(yè)務(wù)層需要吐司服務(wù)端返回的對應(yīng)提示語
- 第四步,統(tǒng)一處理異常邏輯如下所示
- 第五步,如何調(diào)用
06.完成版代碼展示
- 如下所示
感謝你能讀到最后,希望能對你有所幫助。
?如果需要源代碼或者架構(gòu)文檔的,請加QQ群:793305035
轉(zhuǎn)載于:https://www.cnblogs.com/jurendage/p/11357234.html
總結(jié)
以上是生活随笔為你收集整理的Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡冻结了还要还吗?想清还不还款的后果
- 下一篇: Java生鲜电商平台-SpringClo