什么是反序列化绑蔫?將在序列化過程中所生成的二進制串轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)或者對象的過程。
為什么需要序列化泵额?轉(zhuǎn)換為二進制串后才好進行網(wǎng)絡(luò)傳輸嘛配深!為什么需要反序列化?將二進制轉(zhuǎn)換為對象才好進行后續(xù)處理嫁盲!
現(xiàn)如今序列化的方案越來越多篓叶,每種序列化方案都有優(yōu)點和缺點,它們在設(shè)計之初有自己獨特的應(yīng)用場景羞秤,那到底選擇哪種呢缸托?從RPC的角度上看,主要看三點:1)通用性瘾蛋,比如是否能支持Map等復(fù)雜的數(shù)據(jù)結(jié)構(gòu)俐镐;2)性能,包括時間復(fù)雜度和空間復(fù)雜度哺哼,由于RPC框架將會被公司幾乎所有服務(wù)使用佩抹,如果序列化上能節(jié)約一點時間,對整個公司的收益都將非橙《可觀棍苹,同理如果序列化上能節(jié)約一點內(nèi)存,網(wǎng)絡(luò)帶寬也能省下不少茵汰;3)可擴展性枢里,對互聯(lián)網(wǎng)公司而言,業(yè)務(wù)變化快经窖,如果序列化協(xié)議具有良好的可擴展性坡垫,支持自動增加新的業(yè)務(wù)字段,刪除老的字段画侣,而不影響老的服務(wù)冰悠,這將大大提供系統(tǒng)的健壯性。
目前國內(nèi)各大互聯(lián)網(wǎng)公司廣泛使用hessian配乱、protobuf溉卓、thrift、avro等成熟的序列化解決方案來搭建RPC框架搬泥,這些都是久經(jīng)考驗的解決方案桑寨。