關(guān)于 Laravel 微服務(wù)你需要知道的一切
Laravel 微服務(wù)簡介
正如您必須知道的,或者正如微服務(wù)定義所暗示的那樣,微服務(wù)是可自由部署的服務(wù)的集合。它是一種將應(yīng)用程序軟件構(gòu)建為可獨(dú)立部署、緊湊、模塊化服務(wù)的集合的方法。在此,每個服務(wù)執(zhí)行不同的操作,并通過簡單、定義明確的接口相互交互。
鑒于此,您一定在思考我們?nèi)绾问褂?Laravel 來實(shí)現(xiàn)它。Laravel 架構(gòu)如何在微服務(wù)上工作?好吧,這就是 PHP Laravel 微服務(wù)的工作原理!
Laravel 微服務(wù)架構(gòu)
在開始微服務(wù)上的 Laravel 架構(gòu)之前,讓我們先談?wù)?Laravel。Laravel 是用于開發(fā)自定義應(yīng)用程序的最廣泛使用的框架之一。Laravel 為其開發(fā)人員提供了適當(dāng)?shù)墓ぞ邅韯?chuàng)建從網(wǎng)站到 Web 應(yīng)用程序的任何內(nèi)容??偠灾?,部署更快、維護(hù)更容易、更可靠。
如果我們用數(shù)字說話,Laravel 在全球擁有超過 56,000 名開發(fā)人員。它是 GitHub 上星級最高的 PHP 框架,功能強(qiáng)大。
Laravel 的微服務(wù)架構(gòu)
與將應(yīng)用程序構(gòu)建為單個結(jié)構(gòu)時使用的整體架構(gòu)風(fēng)格相反,微服務(wù)是一種將單個程序開發(fā)為一組獨(dú)立部分的方法,服務(wù)由 API 連接。它允許創(chuàng)建多個微服務(wù),這些微服務(wù)可以由不同的團(tuán)隊(duì)控制并使用不同的編程語言進(jìn)行編碼。
這里的微服務(wù)是一種軟件架構(gòu),它以模塊化的方式統(tǒng)一大量的 Laravel 應(yīng)用程序,這取決于專注于特定職責(zé)和活動的小型構(gòu)建塊。塊通過一組獨(dú)立于語言/與語言無關(guān)的 API 相互交互。
Dew Computing 是一個與Laravel 架構(gòu)風(fēng)格相關(guān)的概念,通過使用微服務(wù)架構(gòu)來計(jì)算許多小露水(表示微服務(wù)的功能組件)的潛力。
現(xiàn)代企業(yè)需要微服務(wù)架構(gòu)的 3 個主要原因是:
● 抵御流量故障或性能激增。
● 優(yōu)雅地?cái)U(kuò)展
● 減少參與每個代碼庫的人數(shù)。
Laravel 微服務(wù)的優(yōu)勢
微服務(wù)設(shè)計(jì)有幾個優(yōu)點(diǎn)。一般來說,Laravel 中的微服務(wù)是有針對性的,允許它們更輕,運(yùn)行速度更快。
而且,它只涉及微服務(wù)API調(diào)用。某些服務(wù)可能使用不同的語言。例如,通知服務(wù)可能是用 NodeJs 編寫的。因此,不強(qiáng)制使用 Laravel 或 Lumen。
根據(jù)使用情況,每個服務(wù)都可以擴(kuò)展??傊?,它可能適用于大型應(yīng)用程序。除此之外,Laravel 微服務(wù)的一些優(yōu)點(diǎn)是:
一對一部署
一對一部署
部署起來更簡單。由于微服務(wù)可以在不同的虛擬機(jī)、物理機(jī)或 Docker 容器上實(shí)現(xiàn),因此出現(xiàn)問題時系統(tǒng)崩潰的危險較小。這是因?yàn)榉?wù)是完全獨(dú)立的。
彈性模塊邊界
彈性模塊邊界
微服務(wù)加強(qiáng)了模塊化架構(gòu),這對于更大的團(tuán)隊(duì)來說是必不可少的。
升級和維護(hù)的簡單性
升級和維護(hù)的簡單性
微服務(wù)可以很容易地自主升級和維護(hù),因?yàn)樗鼈兘⒃诜蛛x的基礎(chǔ)上。
技術(shù)多樣性
技術(shù)多樣性
開發(fā)人員可以使用各種開發(fā)框架、編碼語言和數(shù)據(jù)存儲系統(tǒng)來組合微服務(wù)。
適用于所有編碼語言
適用于所有編碼語言
開發(fā)人員可以使用他們熟悉的任何編程語言來創(chuàng)建微服務(wù)。因此,他們隨后可以根據(jù) REST 或 RPC 協(xié)議提供 API。
通過我們的 Laravel 微服務(wù)獲得定制的成功路線圖
利用我們微服務(wù)架構(gòu)專家的專業(yè)知識為關(guān)鍵任務(wù)業(yè)務(wù)解決方案開發(fā)低延遲應(yīng)用程序。與頂級Laravel 開發(fā)公司合作,享受您的成功。
你什么時候應(yīng)該選擇使用 Laravel 微服務(wù)?
通常,您應(yīng)該在應(yīng)用程序時使用 Laravel 微服務(wù),
正在從頭開始建造。
是一個單體程序。
重建(或重構(gòu))遺產(chǎn)
向已經(jīng)存在的應(yīng)用程序引入新功能。
有一個挑戰(zhàn)是擴(kuò)展。
生產(chǎn)力低下。
變得難以維護(hù)。
在任何這些情況下,都可以實(shí)現(xiàn) Laravel 微服務(wù)框架。但是,它經(jīng)常被用來將單一的舊應(yīng)用程序轉(zhuǎn)換為微服務(wù)架構(gòu)。
本質(zhì)上,有 4 個基本原因:
由于應(yīng)用程序變得太大而開發(fā)人員無法理解,因此出現(xiàn)了組織和項(xiàng)目擴(kuò)展方面的挑戰(zhàn)。
該應(yīng)用程序分為多個組件,每個組件都有自己獨(dú)立的更新和發(fā)布周期。
有必要在不影響其他組件的情況下動態(tài)地上下擴(kuò)展某些系統(tǒng)組件。
不同的系統(tǒng)組件具有獨(dú)特的行業(yè)或技術(shù)要求,迫使開發(fā)人員采用團(tuán)隊(duì)標(biāo)準(zhǔn)編程語言以外的編程語言或框架。
如何使用 Laravel Lumen 構(gòu)建微服務(wù)(教程)
在這個 Laravel 微服務(wù)教程中,我們將學(xué)習(xí)如何在 Laravel (Lumen) 中創(chuàng)建微服務(wù);按照這個循序漸進(jìn)的教程;您可以為您的應(yīng)用程序創(chuàng)建 API。
關(guān)于 Laravel-Lumen
和 Laravel 一樣,Lumen 也是由Taylor Otwell創(chuàng)建的,它的設(shè)計(jì)考慮了微框架架構(gòu)。有更多框架(Slim、Silex),如 Lumen,可用于微服務(wù)。
初始設(shè)置
要安裝 Lumen,您必須先安裝 composer。您可以訪問 getcomposer.org 下載最新版本的Composer
安裝流明
通過 Composer 安裝 Lumen:
下面的命令將創(chuàng)建一個具有所有必需依賴項(xiàng)的新 Lumen 項(xiàng)目。
使用以下命令為您的應(yīng)用程序提供服務(wù)。
配置您的應(yīng)用程序
第 1 步:配置
在 .env 文件中,將值替換為以下值,并填寫數(shù)據(jù)庫的詳細(xì)信息。
數(shù)據(jù)庫和遷移
我們將創(chuàng)建一個遷移文件。該文件通過運(yùn)行 migrate 命令自動在連接的數(shù)據(jù)庫中創(chuàng)建表。將在內(nèi)部創(chuàng)建一個遷移文件數(shù)據(jù)庫/遷移目錄.
將以下代碼添加到創(chuàng)建的CreateProductsTable遷移文件中。
使用 Illuminate\Database\Migrations\Migration;使用 Illuminate\Database\Schema\Blueprint;使用 Illuminate\Support\Facades\Schema;類 CreateProductsTable 擴(kuò)展遷移{
/**
* 運(yùn)行遷移。
*
* @return 無效
*/
公共功能向上()
{
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('名字');
$table->integer('價格');
$table->longText('描述');
$表->時間戳();
});
}
/**
* 反轉(zhuǎn)遷移。
*
* @return 無效
*/
公共功能向下()
{
模式::dropIfExists('產(chǎn)品');
}}
運(yùn)行此命令。
創(chuàng)建模型文件
Lumen 不支持下面給出的make:命令
轉(zhuǎn)到 app 目錄,創(chuàng)建一個名為Product.php的新模型并粘貼以下代碼。
應(yīng)用程序/Product.php
命名空間應(yīng)用;使用 Illuminate\Database\Eloquent\Model;類產(chǎn)品擴(kuò)展模型{
受保護(hù)的 $table = '產(chǎn)品';
/**
* 可批量分配的屬性。
*
* @var 數(shù)組
*/
受保護(hù)的 $fillable = [
'名稱','價格','描述'
];}
現(xiàn)在通過取消注釋位于bootstrap/app.php目錄中的以下代碼來加載 Eloquent 和 Facades 。
$app->withFacades();$app->withEloquent();$app->register(App\Providers\AppServiceProvider::class);$app->register(App\Providers\AuthServiceProvider::class);$app->register(App\Providers\EventServiceProvider::class);
設(shè)置控制器文件
前往應(yīng)用\Http\控制器并創(chuàng)建一個新文件產(chǎn)品控制器.php并粘貼下面提到的代碼。
// 應(yīng)用程序/http/controllers/ProductController.php
命名空間 App\Http\Controllers;使用應(yīng)用\產(chǎn)品;使用 Illuminate\Http\Request;類 ProductController 擴(kuò)展控制器{
/**
* 創(chuàng)建一個新的控制器實(shí)例。
*
* @return 無效
*/
公共函數(shù) __construct()
{
//
}
公共函數(shù)索引()
{
$products = Product::all();
返回響應(yīng)()->json($產(chǎn)品);
}
公共函數(shù)創(chuàng)建(請求 $request)
{
$product = 新產(chǎn)品;
$product->name= $request->name;
$product->price = $request->price;
$product->description= $request->description;
$產(chǎn)品->保存();
返回響應(yīng)()->json($product);
}
公共功能顯示($id)
{
$product = Product::find($id);
返回響應(yīng)()->json($product);
}
公共功能更新(請求 $request,$id)
{
$product= Product::find($id);
$product->name = $request->input('name');
$product->price = $request->input('price');
$product->description = $request->input('description');
$產(chǎn)品->保存();
返回響應(yīng)()->json($product);
}
公共函數(shù)銷毀($id)
{
$product = Product::find($id);
$產(chǎn)品->刪除();
return response()->json('產(chǎn)品移除成功');
}
}
設(shè)置路線文件
現(xiàn)在將此代碼添加到 routes/web.php。為我們的路由創(chuàng)建組路由函數(shù)并為它們添加前綴。
$router->group(['prefix'=>'api/v1'], function() 使用($router){
$router->get('/items', ' ProductController@index ');
$router->post('/items', ' ProductController@create ');
$router->get('/items/{id}', ' ProductController@show ');
$router->put('/items/{id}', ' ProductController@update ');
$router->delete('/items/{id}', ' ProductController@destroy ');});
測試 API
我們可以使用postman來測試API;如果你使用VScode,你也可以用迅雷客戶端測試API。在本教程中,我們將使用郵遞員。
方法 – GET – 請求所有項(xiàng)目預(yù)覽:
網(wǎng)址 – http://localhost:8000/api/v1/items
方法 - GET - 帶有單項(xiàng)預(yù)覽的請求:
網(wǎng)址 – http://localhost:8000/api/v1/items/1
方法- POST - 請求插入新項(xiàng)目預(yù)覽:
網(wǎng)址- http://localhost:8000/api/v1/items
方法 - PUT -請求更新項(xiàng)目預(yù)覽:
網(wǎng)址- http://localhost:8000/api/v1/items/5
方法 - DELETE - 請求刪除項(xiàng)目預(yù)覽:
網(wǎng)址- http://localhost:8000/api/v1/items/5
鑰匙帶走
通過這個實(shí)用的 Laravel 微服務(wù)示例,我們來到了這篇博文的結(jié)尾。如果您是現(xiàn)代企業(yè)并希望通過 Laravel 框架利用微服務(wù),我們將是您的最佳選擇。Bacancy 擁有一群擁有不同行業(yè)經(jīng)驗(yàn)的 Laravel 開發(fā)人員。在競爭中保持領(lǐng)先地位,讓您的用戶對您的服務(wù)垂涎三尺。從我們這里聘請 Laravel 開發(fā)人員,為您的用戶提供令人緊張的體驗(yàn)。
(言鼎科技)專做軟件開發(fā),微信小程序,網(wǎng)站開發(fā),軟件外包,手機(jī)APP開發(fā),歡迎資訊!