網(wǎng)站開發(fā) 網(wǎng)絡(luò)工程 哪個(gè)好設(shè)計(jì)網(wǎng)頁的軟件
分布式通信框架:讓遠(yuǎn)程方法調(diào)用和調(diào)用進(jìn)程內(nèi)方法一樣簡單
RPC通信原理
rpc:遠(yuǎn)程過程調(diào)用(遠(yuǎn)程能夠調(diào)用其他模塊的方法)
在rpc中需要發(fā)送時(shí)候,對發(fā)送的信息進(jìn)行序列化,在服務(wù)端對接收到的信息進(jìn)行反序列化。
序列化:將一個(gè)rpc調(diào)用序列化成一個(gè)字節(jié)流
反序列化:從網(wǎng)絡(luò)接收的字節(jié)流反序列化成一個(gè)rpc調(diào)用
黃色部分:設(shè)計(jì)rpc方法參數(shù)的打包和解析,也就是數(shù)據(jù)的序列化和反序列化,使用Protobuf。
綠色部分:網(wǎng)絡(luò)部分,包括尋找rpc服務(wù)主機(jī),發(fā)起rpc調(diào)用請求和響應(yīng)rpc調(diào)用結(jié)果,使用muduo網(wǎng)絡(luò)庫和zookeeper服務(wù)配置中心(專門做服務(wù)發(fā)現(xiàn))。
protobuf
protobuf(protocol buffer)是google 的一種數(shù)據(jù)交換的格式,它獨(dú)立于平臺(tái)語言。
google 提供了protobuf多種語言的實(shí)現(xiàn):java、c#、c++、go 和 python,每一種實(shí)現(xiàn)都包含了相應(yīng)語言的編譯器以及庫文件。
由于它是一種二進(jìn)制的格式,比使用 xml(20倍) 、json(10倍)進(jìn)行數(shù)據(jù)交換快許多??梢园阉糜诜植际綉?yīng)用之間的數(shù)據(jù)通信或者異構(gòu)環(huán)境下的數(shù)據(jù)交換。作為一種效率和兼容性都很優(yōu)秀的二進(jìn)制數(shù)據(jù)傳輸格式,可以用于諸如網(wǎng)絡(luò)傳輸、配置文件、數(shù)據(jù)存儲(chǔ)等諸多領(lǐng)域。
- 1.protobuf是二進(jìn)制存儲(chǔ)的;xml和json都是文本存儲(chǔ)的
- 2.protobuf不需要存儲(chǔ)額外的信息,相比json節(jié)省較多空間