什么是反序列化?將在序列化過程中所生成的二進(jìn)制串轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)或者對(duì)象的過程。
為什么需要序列化?轉(zhuǎn)換為二進(jìn)制串后才好進(jìn)行網(wǎng)絡(luò)傳輸嘛!為什么需要反序列化?將二進(jìn)制轉(zhuǎn)換為對(duì)象才好進(jìn)行后續(xù)處理!
現(xiàn)如今序列化的方案越來越多,每種序列化方案都有優(yōu)點(diǎn)和缺點(diǎn),它們?cè)谠O(shè)計(jì)之初有自己獨(dú)特的應(yīng)用場(chǎng)景,那到底選擇哪種呢?從RPC的角度上看,主要看三點(diǎn):1)通用性,比如是否能支持Map等復(fù)雜的數(shù)據(jù)結(jié)構(gòu);2)性能,包括時(shí)間復(fù)雜度和空間復(fù)雜度,由于RPC框架將會(huì)被公司幾乎所有服務(wù)使用,如果序列化上能節(jié)約一點(diǎn)時(shí)間,對(duì)整個(gè)公司的收益都將非??捎^,同理如果序列化上能節(jié)約一點(diǎn)內(nèi)存,網(wǎng)絡(luò)帶寬也能省下不少;3)可擴(kuò)展性,對(duì)互聯(lián)網(wǎng)公司而言,業(yè)務(wù)變化快,如果序列化協(xié)議具有良好的可擴(kuò)展性,支持自動(dòng)增加新的業(yè)務(wù)字段,刪除老的字段,而不影響老的服務(wù),這將大大提供系統(tǒng)的健壯性。
目前國(guó)內(nèi)各大互聯(lián)網(wǎng)公司廣泛使用hessian、protobuf、thrift、avro等成熟的序列化解決方案來搭建RPC框架,這些都是久經(jīng)考驗(yàn)的解決方案。