摘要:簡介是谷歌出品的跨平臺(tái)跨語言可擴(kuò)展的數(shù)據(jù)傳輸及存儲(chǔ)的協(xié)議,是高效的數(shù)據(jù)壓縮編碼方式之一。相比于來說,更加小巧,更加快速,更加簡單。此外,由于其在內(nèi)網(wǎng)高效的數(shù)據(jù)交換效率,是被廣泛應(yīng)用于微服務(wù)的,在谷歌的開源框架即是基于此構(gòu)建起來的。
Protobuf 簡介
protobuf(Protocol buffers)是谷歌出品的跨平臺(tái)、跨語言、可擴(kuò)展的數(shù)據(jù)傳輸及存儲(chǔ)的協(xié)議,是高效的數(shù)據(jù)壓縮編碼方式之一。
Protocol buffers 在序列化數(shù)據(jù)方面,它是靈活的,高效的。相比于 XML 來說,Protocol buffers 更加小巧,更加快速,更加簡單。一旦定義了要處理的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)之后,就可以利用 Protocol buffers 的代碼生成工具生成相關(guān)的代碼。甚至可以在無需重新部署程序的情況下更新數(shù)據(jù)結(jié)構(gòu)。只需使用 Protobuf 對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行一次描述,即可利用各種不同語言或從各種不同數(shù)據(jù)流中對(duì)你的結(jié)構(gòu)化數(shù)據(jù)輕松讀寫。
Protocol buffers 很適合做數(shù)據(jù)存儲(chǔ)或 RPC 數(shù)據(jù)交換格式??捎糜谕ㄓ崊f(xié)議、數(shù)據(jù)存儲(chǔ)等領(lǐng)域的語言無關(guān)、平臺(tái)無關(guān)、可擴(kuò)展的序列化結(jié)構(gòu)數(shù)據(jù)格式。
此外,Protobuf由于其在內(nèi)網(wǎng)高效的數(shù)據(jù)交換效率,是被廣泛應(yīng)用于微服務(wù)的,在谷歌的開源框架grpc即是基于此構(gòu)建起來的。
php-protobuf安裝由于protobuf原生并不支持php,所以php如果使用pb則需要安裝相應(yīng)擴(kuò)展。
pecl install protobuf
環(huán)境中需要有protoc編譯器,下載安裝方式:
$ wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz $ tar zxvf protobuf-2.5.0.tar.gz $ cd protobuf-2.5.0 $ ./configure --prefix=/usr/local/protobuf $ sudo make $ sudo make install
驗(yàn)證安裝成功:
$ /usr/local/protobuf/bin/protoc --version libprotoc 2.5.0
php-protobuf安裝成功
php --ri protobuf安裝lumen和google/protobuf依賴
lumen new rpc
lumen new rpc命令相當(dāng)于composer create-project laravel/lumen rpc
composer require google/protobuf
在composer.json下添加classmap:
{ "classmap": [ "protobuf/" ] }
ok,準(zhǔn)備工作都已做好了。
自己做一個(gè)demo在代碼目錄下創(chuàng)建一個(gè)protobuf文件夾mkdir protobuf
進(jìn)入該目錄,創(chuàng)建一個(gè)文件searchRequest.proto
syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; enum Corpus { UNIVERSAL = 0; WEB = 1; IMAGES = 2; LOCAL = 3; NEWS = 4; PRODUCTS = 5; VIDEO = 6; } Corpus corpus = 4; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31753.html
摘要:從的序列化和反序列化說起序列化是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^程,而相反的過程就稱為反序列化。當(dāng)使用接口來進(jìn)行序列化與反序列化的時(shí)候需要開發(fā)人員重寫與方法。 從java的序列化和反序列化說起 序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^程,而相反的過程就稱為反序列化。 在java中允許我們創(chuàng)建可復(fù)用的對(duì)象,但是這些對(duì)象僅僅存在j...
摘要:安裝后已經(jīng)完成了安裝,并且等待其他的線程被關(guān)閉。激活后在這個(gè)狀態(tài)會(huì)處理事件回調(diào)提供了更新緩存策略的機(jī)會(huì)。并可以處理功能性的事件請(qǐng)求后臺(tái)同步推送。廢棄狀態(tài)這個(gè)狀態(tài)表示一個(gè)的生命周期結(jié)束。 showImg(https://segmentfault.com/img/bVbwWJu?w=2056&h=1536); 不知不覺,已經(jīng)來到了最后的下篇 其實(shí)我寫的東西你如果認(rèn)真去看,跟著去寫,應(yīng)該能有...
摘要:毫秒服務(wù)引擎是一個(gè)開源框架,適用于在廉價(jià)機(jī)器組成的集群上開發(fā)和運(yùn)營分布式后臺(tái)服務(wù)。毫秒服務(wù)引擎集名字發(fā)現(xiàn)服務(wù)負(fù)載均衡業(yè)務(wù)監(jiān)控灰度發(fā)布容量管理日志管理存儲(chǔ)于一體。 msecphp 毫秒服務(wù)引擎(Mass Service Engine in Cluster)是一個(gè)開源框架,適用于在廉價(jià)機(jī)器組成的集群上開發(fā)和運(yùn)營分布式后臺(tái)服務(wù)。 毫秒服務(wù)引擎集RPC、名字發(fā)現(xiàn)服務(wù)、負(fù)載均衡、業(yè)務(wù)監(jiān)控、灰度發(fā)...
摘要:毫秒服務(wù)引擎是一個(gè)開源框架,適用于在廉價(jià)機(jī)器組成的集群上開發(fā)和運(yùn)營分布式后臺(tái)服務(wù)。毫秒服務(wù)引擎集名字發(fā)現(xiàn)服務(wù)負(fù)載均衡業(yè)務(wù)監(jiān)控灰度發(fā)布容量管理日志管理存儲(chǔ)于一體。 msecphp 毫秒服務(wù)引擎(Mass Service Engine in Cluster)是一個(gè)開源框架,適用于在廉價(jià)機(jī)器組成的集群上開發(fā)和運(yùn)營分布式后臺(tái)服務(wù)。 毫秒服務(wù)引擎集RPC、名字發(fā)現(xiàn)服務(wù)、負(fù)載均衡、業(yè)務(wù)監(jiān)控、灰度發(fā)...
閱讀 3497·2021-11-18 10:02
閱讀 1627·2021-10-12 10:12
閱讀 3011·2021-10-09 09:53
閱讀 4909·2021-09-09 09:34
閱讀 897·2021-09-06 15:02
閱讀 2790·2021-08-05 10:02
閱讀 3153·2019-08-30 15:44
閱讀 3133·2019-08-28 18:04