12 3 服務端響應編碼

2021-09-07 16:18:50 字數 1995 閱讀 9365

服務端響應編碼總體流程:

1

nettycodecadapter$internalencoder.encode(channelhandlercontext ctx, object msg, bytebuf out)

2 -->new nettybackedchannelbuffer(bytebuf buffer) //

建立乙個buffer

3 -->nettychannel.getoraddchannel(io.netty.channel.channel ch, url url, channelhandler handler)

4 -->dubbocountcodec.encode(channel channel, channelbuffer buffer, object msg)

5 -->exchangecodec.encode(channel channel, channelbuffer buffer, object msg)

6 -->encoderesponse(channel channel, channelbuffer buffer, response res)

7 -->getserialization(channel channel) //

獲取hessian2serialization序列化例項

8 -->codecsupport.getserialization(url url)

9 -->extensionloader.getextensionloader(serialization.class).getextension(url.getparameter("serialization", "hessian2"))

1011 -->byte header = new

byte[16]

12 -->bytes.short2bytes(magic, header) //

設定前兩個位元組為魔數[-38, -69, 0, ..., 0]

1314 -->header[2] =serialization.getcontenttypeid();

15if (res.isheartbeat()) header[2] |=flag_event;

1617 -->header[3] =res.getstatus();

1819 -->bytes.long2bytes(res.getid(), header, 4);

2021 -->new

hessian2objectoutput(out)

22 -->dubbocodec.encoderesponsedata(channel channel, objectoutput out, object data)

23 -->bytes.int2bytes(len, header, 12); //

設定第13~16個位元組(int是32位,4個位元組):訊息體長度

24 -->buffer.writebytes(header); //

將header寫入buffer的前16位

與 12.1 客戶端請求編碼 極其相似。

注意:響應編碼中dubbocodec

1

@override

2protected

void encoderesponsedata(channel channel, objectoutput out, object data) throws

ioexception else

14 } else

18 }

注意:out.writebyte(response_value);寫入這個響應型別,是為了將來客戶端響應解碼用的,具體見 12.4 客戶端響應解碼

請求編碼的byte header的最終結構:

響應編碼的byte header的最終結構:

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...

服務端系統

1.高可用 容錯和降級。容錯級別上,忽略次要 error 服務降級 程式中部分error是可以忽略處理的,或者打個日誌標記下,而不用結束整個執行流程。服務降級是指,當依賴的非核心模組出問題時,可以選擇不請求或者熔斷式請求 過載保護 資料可以不吐給客戶端,這就要求對資料或者服務進行級別劃分,優先保證使...

服務端測試

首先服務端的測試包含哪些東西呢?實際上,服務端的測試簡單來說就是除了前端以外的的測試,總的來說可以分為以下兩類 1.web或者的提供業務邏輯的服務端介面測試 介面測試佔據工作工作中的80 介面測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。下面粗略的列舉出測試的幾個...