您好,登錄后才能下訂單哦!
這篇文章主要介紹php可以做分布式系統(tǒng)嗎,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
分布式系統(tǒng)(distributed system)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。正是因?yàn)檐浖奶匦?,所以分布式系統(tǒng)具有高度的內(nèi)聚性和透明性。因此,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多的在于高層軟件(特別是操作系統(tǒng)),而不是硬件。
Swoole 分布式通訊框架 SwooleDistributed
SD框架全稱(chēng)SwooleDistributed,從名稱(chēng)上看一個(gè)是Swoole一個(gè)是Distributed,他是基于Swoole擴(kuò)展的可以分布式部署的應(yīng)用服務(wù)器框架。
借助于PHP的高效開(kāi)發(fā)環(huán)境,Swoole的高性能異步網(wǎng)絡(luò)通信引擎,以及其他的高可用的擴(kuò)展和工具,SD框架提供給廣大開(kāi)發(fā)者一個(gè)穩(wěn)定的高效的而且功能強(qiáng)大的應(yīng)用服務(wù)器框架。
我們這里列舉下SD提供的各種各樣的功能以及模塊組件
混合協(xié)議,SD框架支持長(zhǎng)連接協(xié)議TCP,WebSocket,短連接協(xié)議HTTP,以及UDP。 通過(guò)配置開(kāi)放不同的端口開(kāi)發(fā)者可以輕松管理不同的協(xié)議,并且可以共用一套業(yè)務(wù)代碼,當(dāng)然你可以通過(guò)智能路由進(jìn)行代碼的隔離。
長(zhǎng)連接可以配置不同的數(shù)據(jù)傳輸協(xié)議,比如二進(jìn)制協(xié)議文本協(xié)議等等,通過(guò)框架提供的封裝器解包器接口可以自定義各種各種的協(xié)議封裝,并且各種協(xié)議之間可以自動(dòng)轉(zhuǎn)換,比如你通過(guò)廣播發(fā)送一個(gè)信息,該信息流向不同客戶端,客戶端間采用不同協(xié)議,那么框架會(huì)根據(jù)不同的端口自動(dòng)轉(zhuǎn)換不同的協(xié)議封裝。 你也可以通過(guò)Http給所有長(zhǎng)連接客戶端發(fā)送推送消息,類(lèi)似這種混合協(xié)議協(xié)作的業(yè)務(wù)在SD框架上會(huì)異常簡(jiǎn)單。
MVC以及智能路由,框架的設(shè)計(jì)是MVC架構(gòu),其中每一個(gè)層級(jí)都可以繼續(xù)劃分子層級(jí),開(kāi)發(fā)者可以將Controller繼續(xù)分層通過(guò)不同文件夾進(jìn)行管理,也可以將Model進(jìn)行細(xì)分,劃分為業(yè)務(wù)層和數(shù)據(jù)層,這都看開(kāi)發(fā)者自身的系統(tǒng)設(shè)計(jì)。智能路由將處理解包器解包后的數(shù)據(jù),負(fù)責(zé)將這些數(shù)據(jù)傳遞到Controller層。
中間件,SD框架還提供了中間件,中間件可以對(duì)流入的數(shù)據(jù)進(jìn)行處理,比如清理異常數(shù)據(jù),修改數(shù)據(jù),流量統(tǒng)計(jì),搜集日志等功能。中間件可以設(shè)置多個(gè),他們和端口進(jìn)行綁定。
對(duì)象池,SD框架內(nèi)大多數(shù)的對(duì)象都使用了對(duì)象池技術(shù),對(duì)象池技術(shù)有利于系統(tǒng)內(nèi)存的穩(wěn)定,減少GC的次數(shù),提高系統(tǒng)的運(yùn)行效率,事實(shí)證明對(duì)象池對(duì)系統(tǒng)穩(wěn)定做出了極大的貢獻(xiàn),開(kāi)發(fā)者也可以使用這一套對(duì)象池技術(shù),增加對(duì)對(duì)象的復(fù)用,減少GC和NEW的頻率,對(duì)系統(tǒng)毛刺現(xiàn)象和內(nèi)存泄露方面都有很大的穩(wěn)定性提升。
異步客戶端以及連接池,Mysql,Redis,Http客戶端,Tcp客戶端,等等其他更為復(fù)雜的客戶端,在SD框架中均為異步的模式,異步解決了系統(tǒng)整體的并發(fā)能力,但異步客戶端需要提供連接池維持,SD框架提供了連接池,開(kāi)發(fā)者不需要自己管理連接池,只需要使用即可。
協(xié)程,異步事件回調(diào)解決的是并發(fā)性能,但造成的是業(yè)務(wù)代碼的混亂。SD框架提供了協(xié)程解決了這一問(wèn)題,通過(guò)yield關(guān)鍵字提供對(duì)異步的同步寫(xiě)法,消除了業(yè)務(wù)書(shū)寫(xiě)上的大量回調(diào)嵌套,你可以通過(guò)yield+同步的寫(xiě)法實(shí)現(xiàn)異步的性能。 協(xié)程提供了一整套完整的體系,包括超時(shí),異常,休眠,多路選擇,以及創(chuàng)建用戶協(xié)程等等功能。
定時(shí)任務(wù),顧名思義定時(shí)執(zhí)行的任務(wù)。
任務(wù)投遞,支持將耗時(shí)任務(wù)投遞到Task進(jìn)程。
自動(dòng)Reload,可以開(kāi)啟框架的自動(dòng)Reload功能,這樣代碼修改會(huì)被立即響應(yīng)。
以上是php可以做分布式系統(tǒng)嗎的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。