前言:
公司原本使用了第三方提供的IM消息系統(tǒng),隨著業(yè)務(wù)發(fā)展需要,三方的服務(wù)有限,并且出現(xiàn)問題也很難處理和排查,所以這次新版本迭代,我們的server同事嘔心瀝血做了一個(gè)新的IM消息系統(tǒng),我們也因此配合做了一些事情。 對于前端來說,被告知需要用到protocol buffer,什么gui?最開始我一直沒弄懂到底是個(gè)什么東西,感覺和平時(shí)接觸的技術(shù)差別比較大。 還有二進(jìn)制什么的,以前感覺從來就沒在前端使用過。 久經(jīng)波折,這次的旅途學(xué)到了很多東西,所以作此博客。
protocol buffer:
簡稱protobuf,google開源項(xiàng)目,是一種數(shù)據(jù)交換的格式,google 提供了多種語言的實(shí)現(xiàn):php、JavaScript、java、c#、c++、go 和 python等。 由于它是一種二進(jìn)制的格式,比使用 xml, json 進(jìn)行數(shù)據(jù)交換快許多。以上描述太官方不好理解,通俗點(diǎn)來解釋一下,就是通過protobuf定義好數(shù)據(jù)結(jié)構(gòu)生成一個(gè)工具類,這個(gè)工具類可以把數(shù)據(jù)封裝成二進(jìn)制數(shù)據(jù)來進(jìn)行傳輸,在另一端收到二進(jìn)制數(shù)據(jù)再用工具類解析成正常的數(shù)據(jù)。
為什么用protobuf(以下是后端大大“邱?!钡囊馑?:
優(yōu):
1.json占用流量大,用了protobuf的二進(jìn)制傳輸會幫助傳輸更輕量,節(jié)約用戶和服務(wù)端流量 。之前舊消息系統(tǒng)使用json的時(shí)候發(fā)現(xiàn),當(dāng)一臺服務(wù)器訪問量很大的時(shí)候,cpu占用很低,但是帶寬已經(jīng)滿了,服務(wù)器承載量也就滿了。
2.json太隨意太靈活