js序列化-架構(gòu)師必懂的-七種序列化機(jī)制及技術(shù)選型_第1頁
js序列化-架構(gòu)師必懂的-七種序列化機(jī)制及技術(shù)選型_第2頁
js序列化-架構(gòu)師必懂的-七種序列化機(jī)制及技術(shù)選型_第3頁
js序列化-架構(gòu)師必懂的-七種序列化機(jī)制及技術(shù)選型_第4頁
js序列化-架構(gòu)師必懂的-七種序列化機(jī)制及技術(shù)選型_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、js序列化_架構(gòu)師必懂的七種序列化機(jī)制及技術(shù)選型序列化、序列化定義(Encode),主要于絡(luò)傳輸、數(shù)據(jù)持久化 等;反序列化(deserialization)則是將從絡(luò)、磁盤等讀取的字節(jié)數(shù)組還原成原始對象,以便后續(xù)業(yè)務(wù)的進(jìn),般也將反序列化稱為解碼(Decode),主要于絡(luò)傳輸對象的解碼,以便完成遠(yuǎn)程調(diào)。、序列化協(xié)議祖”家都懂的第種序列化協(xié)議就是Java默認(rèn)提供的序列化機(jī)制,需要序列化的Java對象只需要實(shí)現(xiàn)Serializable / Externalizable 接并成序列化ID,這個類就能夠通過 ObjectInput 和 ObjectOutput 序列化和反序列化,若對Java默認(rèn)的序列化

2、協(xié)議不了解,或是遺忘了,請參考:序列化詳解。但是Java默認(rèn)提供的序列化有很多問題,主要有以下個缺點(diǎn):Java序列化后的字節(jié)數(shù)組,其它語法進(jìn)反序列化。 序列化后的碼流太::相對于前主流的序列化協(xié)議,Java序列化后的碼流太;序列化的性能差:由于Java序列化采同步阻塞IO,相對于前主流的序列化協(xié)議,它的效率常差。序列化機(jī)制三、影響序列化性能的關(guān)鍵因素序列化后的碼流(絡(luò)帶寬的占); 序列化的性能(CPU資源占);是否持跨語(異構(gòu)系統(tǒng)的對接和開發(fā)語切換)。四、種流的序列化協(xié)議較第種: XML(1)定義:XML(ExtensibleMarkupLanguage)1998年的1.0版本被泛使今。(2)

3、優(yōu)點(diǎn)序列化數(shù)據(jù)只包含數(shù)據(jù)本以及類的結(jié)構(gòu),不包括類型標(biāo)識和程序集信息。類必須有個將由 XmlSerializer 序列化的默認(rèn)構(gòu)造函數(shù)。只能序列化公共屬性和字段不能序列化法件龐,件格式復(fù)雜,傳輸占帶寬(4)使場景當(dāng)做配置件存儲數(shù)據(jù)、實(shí)時數(shù)據(jù)轉(zhuǎn)換序列化、反序列化過程第種: JSON(1)定義:JSON(JavaScript Object Notation, JS 對象標(biāo)記) 是種輕量級的數(shù)據(jù)交換格式。它基于ECMAScript (w3c制定的js規(guī)范)的個集, JSON采與編程語關(guān)的本格式,但是也使了類C語(包括C, C+, C#, Java, JavaScript, Perl, Python等)

4、的習(xí)慣,簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語。(2)優(yōu)點(diǎn)前后兼容性數(shù)據(jù)格式較簡單,易于讀寫序列化后數(shù)據(jù)較,可擴(kuò)展性好,兼容性好與XML相,其協(xié)議較簡單,解析速度較快(3)缺點(diǎn)數(shù)據(jù)的描述性XML差不適合性能要求為ms級別的情況額外空間開銷較(4)適場景(可替代) 跨防墻訪問可調(diào)式性要求的情況基于Web browser的Ajax請求傳輸數(shù)據(jù)量相對,實(shí)時性要求相對低(例如秒級別)的服務(wù)第三種: Fastjson(1)定義Fastjson是個Java語編寫的性能功能完善的JSON庫。它采種“假定有序快速匹配”的算法,把JSON Parse的性能提升到極致。(2)優(yōu)點(diǎn)接簡單易前jav

5、a語中最快的json庫(3)缺點(diǎn)過于注重快,偏離了“標(biāo)準(zhǔn)”及功能性代碼質(zhì)量不,檔不全(4)適場景協(xié)議交互Web輸出Android客戶端第四種: Thrift(1)定義:Thrift并不僅僅是序列化協(xié)議,是個RPC框架。它可以讓你選擇客戶端與服務(wù)端之間傳輸通信協(xié)議的類別,即本(text)和進(jìn)制(binary)傳輸協(xié)議, 為節(jié)約帶寬,提供傳輸效率,般情況下使進(jìn)制類型的傳輸協(xié)議。(2)優(yōu)點(diǎn)序列化后的體積, 速度快持多種語和豐富的數(shù)據(jù)類型對于數(shù)據(jù)字段的增刪具有較強(qiáng)的兼容性持進(jìn)制壓縮編碼(3)缺點(diǎn)使者較少跨防墻訪問時,不安全不具有可讀性,調(diào)試代碼時相對困難不能與其他傳輸層協(xié)議共同使(例如HTTP)法持向

6、持久層直接讀寫數(shù)據(jù),即不適合做數(shù)據(jù)持久化序列化協(xié)議(4)適場景分布式系統(tǒng)的RPC解決案第五種: Avro(1)定義:Avro屬于Apache Hadoop的個項(xiàng)。 Avro提供兩種序列化格式:JSON格式或者Binary格式。Binary格式在空間開銷和解析性能可以和Protobuf媲美,Avro的產(chǎn)解決了JSON的冗長和沒有IDL的問題(2)優(yōu)點(diǎn)持豐富的數(shù)據(jù)類型簡單的動態(tài)語結(jié)合功能具有我描述屬性提了數(shù)據(jù)解析速度快速可壓縮的進(jìn)制數(shù)據(jù)形式可以實(shí)現(xiàn)遠(yuǎn)程過程調(diào)RPC持跨編程語實(shí)現(xiàn)(3)缺點(diǎn)對于習(xí)慣于靜態(tài)類型語的戶不直觀(4)適場景在Hadoop中做Hive、Pig和MapReduce的持久化數(shù)據(jù)格式

7、第七種: Protobuf(1)定義protocol buffers 由歌開源來,在歌內(nèi)部久經(jīng)考驗(yàn)。它將數(shù)據(jù)結(jié)構(gòu)以.proto件進(jìn)描述,通過代碼成具可以成對應(yīng)數(shù)據(jù)結(jié)構(gòu)的POJO對象和Protobuf相關(guān)的法和屬性。(2)優(yōu)點(diǎn)序列化后碼流,性能結(jié)構(gòu)化數(shù)據(jù)存儲格式(XML JSON等)通過標(biāo)識字段的順序,可以實(shí)現(xiàn)協(xié)議的前向兼容結(jié)構(gòu)化的檔更容易管理和維護(hù)(3)缺點(diǎn)需要依賴于具成代碼持的語相對較少,官只持Java 、C+ 、Python (4)適場景開源的物聯(lián)平臺使較多,如Thingsboard。其它protostuff 基于protobuf協(xié)議,但不需要配置proto件,直接導(dǎo)包即Jboss mar

8、shaling 可以直接序列化java類, 須實(shí)java.io.Serializable接Message pack 個效的進(jìn)制序列化格式Hessian 采進(jìn)制協(xié)議的輕量級remoting onhttp具kryo 基于protobuf協(xié)議,只持java語,需要注冊(Registration),然后序列化(Output),反序列化(Input)五、性能對圖解分析上圖知:XML序列化(Xstream)論在性能和簡潔性上較差。Thrift與Protobuf相在時空開銷都有定的劣勢。Protobuf和Avro在兩表現(xiàn)都常優(yōu)越。六、選型建議不同的場景適的序列化協(xié)議:對于公司間的系統(tǒng)調(diào),如果性能要求在100ms以上的服務(wù),基于XML的SOAP協(xié)議是個值得考慮的案?;赪eb browser的Ajax,以及Mobile app與服務(wù)端之間的通訊,JSON協(xié)議是選。對于性能要求不太,或者以動態(tài)類型語為主,或者傳輸數(shù)據(jù)載荷很的的運(yùn)場景,JSON也是常不錯的選擇?;騒ML能夠極的提調(diào)試效率,降低系統(tǒng)開發(fā)成本。 當(dāng)對性能和簡潔性有極要求的場景,Protobuf,Thrift,Avro之間具有定的競爭關(guān)系。Hadoop項(xiàng),Avro會是更好的 選擇。由于Avro的設(shè)計理念

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論