好吊色综合高清|東京熱無碼大亂交|欧洲尺码日本尺码,在线日韩福利电影,破解软件库资源共享,仙踪林老狼信息网大豆行情网金属

新聞資訊

Laravel Octane 將在 2023 年擴(kuò)展您的應(yīng)用程序

yanding 2023-05-29 571

Laravel 擁有簡(jiǎn)單而體面的語(yǔ)法,使開發(fā)人員可以更輕松地開發(fā) Web 應(yīng)用程序。導(dǎo)致 Laravel 在各個(gè)方面都缺乏的唯一缺點(diǎn)是可擴(kuò)展性,這就是為什么 Laravel 不是開發(fā)人員最喜歡的語(yǔ)言之一。在引入 Octane 之后,這種看法略微轉(zhuǎn)向 Laravel 及其社區(qū)。但是,在我們轉(zhuǎn)到 Octane 到 Laravel 應(yīng)用程序的主題之前。讓我們首先了解Laravel Octane是什么以及它是如何工作的。

什么是 Laravel Octane?

Laravel Octane是 Taylor Otwell 在他的 Laracon Online Talk 中介紹的開源包,發(fā)布日期為 2021 年 5 月 12 日。該包服務(wù)于 Laravel 應(yīng)用程序,并使用 Web 服務(wù)器 Swoole 和 RoadRunner 來(lái)幫助提高性能。它由第一個(gè)請(qǐng)求初始化,存儲(chǔ)在內(nèi)存中,并且不會(huì)在后續(xù)請(qǐng)求時(shí)重新初始化。它在 GitHub 上擁有 3.3k Stars 和 234 Forks。

辛烷值的主要特點(diǎn)

Octane 的關(guān)鍵特性包括幾個(gè)特性,使其能夠呈現(xiàn)比傳統(tǒng) Laravel 更好的性能;下面給出了一些這樣的功能:

  • 它使您的應(yīng)用程序極其快速和高效

  • 與傳統(tǒng)的 Laravel 應(yīng)用程序相比,它節(jié)省了資源。

Laravel Octane 是如何工作的?

Octane Laravel 建立在傳統(tǒng)的 Laravel 和 PHP 8.0 及以上版本之上。它不是一種單獨(dú)的語(yǔ)言,而是對(duì)標(biāo)準(zhǔn) Laravel 的補(bǔ)充。Octane 通過(guò) Swoole 和 RoadRunner 在其服務(wù)器上運(yùn)行,傳統(tǒng)的 Apache 和 Nginx 應(yīng)該重定向傳入流量。

Octane 開放式 Swoole

它是一個(gè)軟件開發(fā)工具包,允許產(chǎn)品所有者創(chuàng)建高效且可擴(kuò)展的 Web 應(yīng)用程序。Open Swoole 是 Swoole 框架的一個(gè)分支,于 2021 年底發(fā)起,涉及 swoole 開發(fā)者社區(qū)內(nèi)部的沖突。

辛烷走鵑

它是一種開源、高性能、可維護(hù)的 PHP 應(yīng)用程序服務(wù)器,可以有效且高效地替代傳統(tǒng)的 Nginx 設(shè)置,從而提供更好的性能和靈活性。

我們還可以提到,盡管 Swoole 和 RoadRunner 仍然為所有請(qǐng)求使用工作進(jìn)程,但它們僅服務(wù)于啟動(dòng)框架(依賴容器)的第一個(gè)請(qǐng)求,其余請(qǐng)求來(lái)自框架的引導(dǎo)版本。這共同使您的應(yīng)用程序的執(zhí)行速度比現(xiàn)有應(yīng)用程序快得多。

Laravel Octane 將在 2023 年擴(kuò)展您的應(yīng)用程序

Octane Laravel 在第一個(gè)請(qǐng)求時(shí)在 RAM 中捕獲引導(dǎo)的 Laravel 框架。之后,所有請(qǐng)求都使用已經(jīng)從 RAM 引導(dǎo)的框架,而不是從硬盤讀取文件并重新引導(dǎo)框架,從而使 Laravel 應(yīng)用程序更快,并在很大程度上提高了其性能。

Laravel 與 Apache 對(duì)比 Laravel Octane 基準(zhǔn)測(cè)試

按照 Laravel 的創(chuàng)建者 Taylor Otwell 的說(shuō)法,在引入 Apache 和 Octane 之后,新項(xiàng)目幾乎沒(méi)有選擇 Lumen 的要求。正如我們所知,Lumen 是一個(gè)基于 Laravel 的微框架,有意去除了一些組件,以使其運(yùn)行速度更快。此外,使用 Laravel Octane 作為其服務(wù)器是比 Lumen 更快更好的選擇。為了更好地理解這一點(diǎn),讓我們看一些基準(zhǔn)。

在這個(gè)基準(zhǔn)測(cè)試中,我們總共采用了三種模式 Laravel Octane vs Laravel Apache Web Server vs Laravel built-in server:

  • Laravel 與 Octane

  • Laravel 與 Apache Web 服務(wù)器

  • Laravel 及其內(nèi)置服務(wù)器。

在此基準(zhǔn)測(cè)試中,我們使用了具有以下配置的工具 wrk:

Laravel Octane 將在 2023 年擴(kuò)展您的應(yīng)用程序
wrk -tl -c50 網(wǎng)址

第一次驗(yàn)證是在 Just Hello World HTML 上執(zhí)行的,我們收到的結(jié)果如下:

模式請(qǐng)求在 10 秒內(nèi)處理每秒請(qǐng)求數(shù) (RPS)
Laravel 與 Octane2667266轉(zhuǎn)/秒
Laravel 與 Apache1210121轉(zhuǎn)/秒
Laravel 及其內(nèi)置服務(wù)器70570 轉(zhuǎn)/秒


這些 Laravel Octane 基準(zhǔn)測(cè)試指標(biāo)足以讓您了解 Octane Laravel 在性能方面比傳統(tǒng)的 Apache-Server Laravel 快得多。

為什么要使用 Octane 擴(kuò)展您的 Laravel 應(yīng)用程序?

Octane 在內(nèi)存中捕獲你的數(shù)據(jù)和對(duì)象,這有助于將 Laravel 應(yīng)用程序的性能提高多達(dá) 30%。由于消除了磁盤讀取、進(jìn)程分叉和各種其他開銷,只要框架在每個(gè)請(qǐng)求上啟動(dòng)時(shí)就會(huì)起作用,這使得 Laravel 應(yīng)用程序能夠快速管理數(shù)千個(gè)連接,從而有助于提高性能增加流量或需要高可用性。此外,這也是一種花費(fèi)很少的高效方法。

此外,在某些情況下,需要對(duì)代碼庫(kù)進(jìn)行微小更改或無(wú)需更改。但這與您的應(yīng)用程序的結(jié)構(gòu)有關(guān)。

使用 Bacancy 開發(fā)高性能 Laravel 應(yīng)用程序!
聘請(qǐng) Laravel 開發(fā)人員,與我們一起見證您夢(mèng)想產(chǎn)品的構(gòu)建。我們擁有具有非凡問(wèn)題技能的敬業(yè)開發(fā)人員。

使用 Octane 擴(kuò)展 Laravel 應(yīng)用程序之前需要注意什么(先決條件)

Octane 可以在很大程度上提高您的 Web 應(yīng)用程序開發(fā)性能,但這并不意味著它有足夠的能力提高您的 Web 應(yīng)用程序的性能并為您提供擴(kuò)展的自由。

它涉及 PHP 8.0 版和采用有狀態(tài)編程約定等先決條件。因此,在您最終使用 Octane 之前,第一步也是最重要的一步是更新您的 PHP 版本并安裝它。雖然這看起來(lái)是一項(xiàng)簡(jiǎn)單的任務(wù),但嚴(yán)重的問(wèn)題是許多在 Laravel 上運(yùn)行的網(wǎng)站使用的是舊版本的 Laravel,它不支持 Octane,因此需要使用最新的 Laravel 版本進(jìn)行更新。

此外,許多產(chǎn)品所有者,無(wú)論是經(jīng)驗(yàn)豐富的還是新手,都不熟悉有狀態(tài)框架,這再次需要努力去理解它,然后才能最終在您的 Web 應(yīng)用程序中實(shí)施 Laravel Octane 以進(jìn)行擴(kuò)展。

其他必要因素

除了上面給出的先決條件之外,還必須考慮一些其他因素來(lái)制作可擴(kuò)展的 Web 應(yīng)用程序。讓我們看看下面給出的那些因素:

重構(gòu)的意義

對(duì)于使用會(huì)話狀態(tài)或一些中間件類型的應(yīng)用程序,需要先對(duì)代碼進(jìn)行一些更改才能使用 Octane。此外,您應(yīng)該添加對(duì)基于 Swoole 協(xié)程的會(huì)話的支持,并刪除與 Swoole 不兼容的中間件。

需要進(jìn)行的其余更改涉及依賴注入容器。你可以參考 Laravel的 Laravel 官方文檔了解更多關(guān)于 How to do 的信息。

處理代碼更改

傳統(tǒng)的 Laravel 要求您在進(jìn)行任何更改時(shí)啟動(dòng)或停止整個(gè) Laravel 應(yīng)用程序?qū)嵗?。然而,與此相反,使用 Octane,您可以方便地自動(dòng)監(jiān)控代碼庫(kù)并重新啟動(dòng) Octane 服務(wù)器,而無(wú)需任何手動(dòng)干預(yù),這使您可以通過(guò)在單個(gè)實(shí)例或一個(gè)地方更改代碼來(lái)輕松進(jìn)行開發(fā)每次更新代碼庫(kù)時(shí)都需要重新啟動(dòng)整個(gè)應(yīng)用程序?qū)嵗?/span>

是否有任何其他選項(xiàng)來(lái)擴(kuò)展 Laravel 應(yīng)用程序?

是的,問(wèn)題總是有另一種解決方案。盡管 Laravel Octane 是解決傳統(tǒng) Laravel 應(yīng)用程序擴(kuò)展問(wèn)題的好工具,但它仍然不是唯一的選擇;許多其他選項(xiàng)可以滿足您的擴(kuò)展需求。讓我們來(lái)看看其中的一些:

水平縮放

首先是水平擴(kuò)展,這是一種簡(jiǎn)單但最不推薦的擴(kuò)展 Laravel 應(yīng)用程序的方法。這背后的原因是,雖然它是高效的,但隨著運(yùn)行成本不斷增加,它變得越來(lái)越復(fù)雜和昂貴,并且隨著您遷移到不同的服務(wù)器變得越來(lái)越困難。此外,它仍然是一個(gè)有限的解決方案,因?yàn)槟鸁o(wú)法使用此設(shè)置按需擴(kuò)展。

負(fù)載均衡(使用 AWS 或不使用 AWS)

為了在 AWS 上擴(kuò)展您的Laravel 應(yīng)用程序,您可以為具有相同 MySQL 數(shù)據(jù)庫(kù)的應(yīng)用程序在有限范圍內(nèi)自動(dòng)擴(kuò)展應(yīng)用程序。這些服務(wù)器此后使用單個(gè) Amazon RDS 或 Amazon Relational Database。

盡管與水平擴(kuò)展相比,這似乎是一個(gè)可行的擴(kuò)展選項(xiàng),但這里涉及的隱性成本并不透明。此外,它不如 Octane Laravel 有效。盡管如此,重要的好處是它允許您在無(wú)需對(duì)現(xiàn)有代碼庫(kù)進(jìn)行任何更改的情況下進(jìn)行擴(kuò)展,就像 Laravel Octane 一樣。

Laravel Vapor 和 Octane

Laravel Vapor 是 Laravel 的自動(dòng)擴(kuò)展、無(wú)服務(wù)器部署平臺(tái)。Vapor 允許無(wú)服務(wù)器的可擴(kuò)展性和簡(jiǎn)單性。當(dāng)與 Octane 結(jié)合使用時(shí),Laravel Octane Vapor組合可在任何規(guī)模下提供自動(dòng)縮放和更快的加載時(shí)間。然而,為了更好地理解它,讓我們從 Laravel 官方文檔中舉一個(gè)例子。

蒸氣項(xiàng)目us-west-1亞馬遜地區(qū)。此 Vapor 應(yīng)用程序配置有 1 GB RAM 和一個(gè) RDS MySQL 實(shí)例 (db.t2.micro),具有 1 個(gè) VCPU 和 1Gib RAM。

現(xiàn)在,查看從數(shù)據(jù)庫(kù)獲取用戶的 API 端點(diǎn)。借助 Octane,其端點(diǎn)速度提高了 7 倍。它使用的內(nèi)存減少了 44%:

Laravel Octane 將在 2023 年擴(kuò)展您的應(yīng)用程序
# 在 Vapor 的 Octane 集成之前請(qǐng)求耗時(shí):39.40 毫秒,內(nèi)存使用:169 MB請(qǐng)求耗時(shí):40.20 毫秒,內(nèi)存使用:169 MB請(qǐng)求耗時(shí):37.71 毫秒,內(nèi)存使用:169 MB請(qǐng)求耗時(shí):42.16 毫秒,內(nèi)存使用:169 MB請(qǐng)求耗時(shí):40.60 毫秒,內(nèi)存使用:169 MB請(qǐng)求耗時(shí):45.75 毫秒,內(nèi)存使用:169 MB# 在 Vapor 的 Octane 整合之后請(qǐng)求耗時(shí):6.78 毫秒,內(nèi)存使用:112 MB請(qǐng)求耗時(shí):6.64 毫秒,內(nèi)存使用:112 MB請(qǐng)求耗時(shí):6.67 毫秒,內(nèi)存使用:112 MB請(qǐng)求耗時(shí):6.38 毫秒,內(nèi)存使用:112 MB請(qǐng)求耗時(shí):6.75 毫秒,內(nèi)存使用:112 MB請(qǐng)求耗時(shí):6.47 毫秒,內(nèi)存使用:112 MB

而呈現(xiàn)靜態(tài)模板的“登錄”路由。此端點(diǎn)的 Octane 使其快了近 3 倍。它使用的內(nèi)存減少了 35%:

Laravel Octane 將在 2023 年擴(kuò)展您的應(yīng)用程序
# 在 Vapor 的 Octane 集成之前請(qǐng)求耗時(shí):11.32 毫秒,內(nèi)存使用:165 MB請(qǐng)求耗時(shí):11.35 毫秒,內(nèi)存使用:165 MB請(qǐng)求耗時(shí):11.29 毫秒,內(nèi)存使用:165 MB請(qǐng)求耗時(shí):11.29 毫秒,內(nèi)存使用:165 MB請(qǐng)求耗時(shí):11.36 毫秒,內(nèi)存使用:165 MB請(qǐng)求耗時(shí):11.43 毫秒,內(nèi)存使用:165 MB# 在 Vapor 的 Octane 整合之后請(qǐng)求耗時(shí):4.89 毫秒,內(nèi)存使用:108 MB請(qǐng)求耗時(shí):4.89 毫秒,內(nèi)存使用:108 MB請(qǐng)求耗時(shí):4.83 毫秒,內(nèi)存使用:108 MB請(qǐng)求耗時(shí):4.66 毫秒,內(nèi)存使用:108 MB請(qǐng)求耗時(shí):4.79 毫秒,內(nèi)存使用:108 MB請(qǐng)求耗時(shí):4.91 毫秒,內(nèi)存使用:108 MB

因此,我們可以推斷 Octane 減少了請(qǐng)求的持續(xù)時(shí)間以及內(nèi)存使用。此外,添加 AWS 在 Lambda 上應(yīng)用 1ms 計(jì)費(fèi)粒度,因此您需要為 HTTP 功能支付相對(duì)較少的費(fèi)用。因此,Laravel Octane Vapor 的組合是制作具有可擴(kuò)展性的 Laravel Octane Vapor Web 應(yīng)用程序的絕佳選擇。

結(jié)論

這就是我們使用 Laravel Octane 擴(kuò)展 Laravel 應(yīng)用程序的內(nèi)容。雖然它是擴(kuò)展現(xiàn)有 Laravel 應(yīng)用程序的一個(gè)不錯(cuò)的選擇,但與傳統(tǒng)的 Laravel 應(yīng)用程序相比,它在性能方面顯示出顯著的改進(jìn)。盡管如此,它與許多傳統(tǒng) Laravel 應(yīng)用程序的現(xiàn)有代碼庫(kù)不兼容仍然是一個(gè)挫折。如果您希望提高應(yīng)用程序的性能,它可能是一個(gè)不錯(cuò)的選擇,但如果您打算挽救一個(gè)已經(jīng)苦苦掙扎的應(yīng)用程序,那么 Octane Laravel 并不是最佳選擇。在做出最后決定之前,您必須進(jìn)行徹底的研究。

此外,當(dāng)您選擇了 Octane 時(shí),如果您仍然對(duì)進(jìn)行最終調(diào)用或擴(kuò)展 Laravel 應(yīng)用程序猶豫不決,請(qǐng)確保使用您添加到項(xiàng)目中的 Octane Compatible 包以獲得與 Octane 兼容的理想應(yīng)用程序。像 Bacancy 這樣的Laravel 開發(fā)公司可以在這方面為您提供幫助;我們的專業(yè)人士隨時(shí)可以指導(dǎo)您并與您一起完成整個(gè) Web 應(yīng)用程序開發(fā)過(guò)程。

言鼎科技)專做軟件開發(fā),微信小程序,網(wǎng)站開發(fā),軟件外包,手機(jī)APP開發(fā),歡迎資訊!

The End