关于 Laravel 微服务你需要知道的一切
Laravel 微服务简介
正如您必须知道的,或者正如微服务定义所暗示的那样,微服务是可自由部署的服务的集合。它是一种将应用程序软件构建为可独立部署、紧凑、模块化服务的集合的方法。在此,每个服务执行不同的操作,并通过简单、定义明确的接口相互交互。
鉴于此,您一定在思考我们如何使用 Laravel 来实现它。Laravel 架构如何在微服务上工作?好吧,这就是 PHP Laravel 微服务的工作原理!
Laravel 微服务架构
在开始微服务上的 Laravel 架构之前,让我们先谈谈 Laravel。Laravel 是用于开发自定义应用程序的最广泛使用的框架之一。Laravel 为其开发人员提供了适当的工具来创建从网站到 Web 应用程序的任何内容。总而言之,部署更快、维护更容易、更可靠。
如果我们用数字说话,Laravel 在全球拥有超过 56,000 名开发人员。它是 GitHub 上星级最高的 PHP 框架,功能强大。
Laravel 的微服务架构
与将应用程序构建为单个结构时使用的整体架构风格相反,微服务是一种将单个程序开发为一组独立部分的方法,服务由 API 连接。它允许创建多个微服务,这些微服务可以由不同的团队控制并使用不同的编程语言进行编码。
这里的微服务是一种软件架构,它以模块化的方式统一大量的 Laravel 应用程序,这取决于专注于特定职责和活动的小型构建块。块通过一组独立于语言/与语言无关的 API 相互交互。
Dew Computing 是一个与Laravel 架构风格相关的概念,通过使用微服务架构来计算许多小露水(表示微服务的功能组件)的潜力。
现代企业需要微服务架构的 3 个主要原因是:
● 抵御流量故障或性能激增。
● 优雅地扩展
● 减少参与每个代码库的人数。
Laravel 微服务的优势
微服务设计有几个优点。一般来说,Laravel 中的微服务是有针对性的,允许它们更轻,运行速度更快。
而且,它只涉及微服务API调用。某些服务可能使用不同的语言。例如,通知服务可能是用 NodeJs 编写的。因此,不强制使用 Laravel 或 Lumen。
根据使用情况,每个服务都可以扩展。总之,它可能适用于大型应用程序。除此之外,Laravel 微服务的一些优点是:
一对一部署
一对一部署
部署起来更简单。由于微服务可以在不同的虚拟机、物理机或 Docker 容器上实现,因此出现问题时系统崩溃的危险较小。这是因为服务是完全独立的。
弹性模块边界
弹性模块边界
微服务加强了模块化架构,这对于更大的团队来说是必不可少的。
升级和维护的简单性
升级和维护的简单性
微服务可以很容易地自主升级和维护,因为它们建立在分离的基础上。
技术多样性
技术多样性
开发人员可以使用各种开发框架、编码语言和数据存储系统来组合微服务。
适用于所有编码语言
适用于所有编码语言
开发人员可以使用他们熟悉的任何编程语言来创建微服务。因此,他们随后可以根据 REST 或 RPC 协议提供 API。
通过我们的 Laravel 微服务获得定制的成功路线图
利用我们微服务架构专家的专业知识为关键任务业务解决方案开发低延迟应用程序。与顶级Laravel 开发公司合作,享受您的成功。
你什么时候应该选择使用 Laravel 微服务?
通常,您应该在应用程序时使用 Laravel 微服务,
正在从头开始建造。
是一个单体程序。
重建(或重构)遗产
向已经存在的应用程序引入新功能。
有一个挑战是扩展。
生产力低下。
变得难以维护。
在任何这些情况下,都可以实现 Laravel 微服务框架。但是,它经常被用来将单一的旧应用程序转换为微服务架构。
本质上,有 4 个基本原因:
由于应用程序变得太大而开发人员无法理解,因此出现了组织和项目扩展方面的挑战。
该应用程序分为多个组件,每个组件都有自己独立的更新和发布周期。
有必要在不影响其他组件的情况下动态地上下扩展某些系统组件。
不同的系统组件具有独特的行业或技术要求,迫使开发人员采用团队标准编程语言以外的编程语言或框架。
如何使用 Laravel Lumen 构建微服务(教程)
在这个 Laravel 微服务教程中,我们将学习如何在 Laravel (Lumen) 中创建微服务;按照这个循序渐进的教程;您可以为您的应用程序创建 API。
关于 Laravel-Lumen
和 Laravel 一样,Lumen 也是由Taylor Otwell创建的,它的设计考虑了微框架架构。有更多框架(Slim、Silex),如 Lumen,可用于微服务。
初始设置
要安装 Lumen,您必须先安装 composer。您可以访问 getcomposer.org 下载最新版本的Composer
安装流明
通过 Composer 安装 Lumen:
下面的命令将创建一个具有所有必需依赖项的新 Lumen 项目。
使用以下命令为您的应用程序提供服务。
配置您的应用程序
第 1 步:配置
在 .env 文件中,将值替换为以下值,并填写数据库的详细信息。
数据库和迁移
我们将创建一个迁移文件。该文件通过运行 migrate 命令自动在连接的数据库中创建表。将在内部创建一个迁移文件数据库/迁移目录.
将以下代码添加到创建的CreateProductsTable迁移文件中。
使用 Illuminate\Database\Migrations\Migration;使用 Illuminate\Database\Schema\Blueprint;使用 Illuminate\Support\Facades\Schema;类 CreateProductsTable 扩展迁移{
/**
* 运行迁移。
*
* @return 无效
*/
公共功能向上()
{
Schema::create('products', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('名字');
$table->integer('价格');
$table->longText('描述');
$表->时间戳();
});
}
/**
* 反转迁移。
*
* @return 无效
*/
公共功能向下()
{
模式::dropIfExists('产品');
}}
运行此命令。
创建模型文件
Lumen 不支持下面给出的make:命令
转到 app 目录,创建一个名为Product.php的新模型并粘贴以下代码。
应用程序/Product.php
命名空间应用;使用 Illuminate\Database\Eloquent\Model;类产品扩展模型{
受保护的 $table = '产品';
/**
* 可批量分配的属性。
*
* @var 数组
*/
受保护的 $fillable = [
'名称','价格','描述'
];}
现在通过取消注释位于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);
设置控制器文件
前往应用\Http\控制器并创建一个新文件产品控制器.php并粘贴下面提到的代码。
// 应用程序/http/controllers/ProductController.php
命名空间 App\Http\Controllers;使用应用\产品;使用 Illuminate\Http\Request;类 ProductController 扩展控制器{
/**
* 创建一个新的控制器实例。
*
* @return 无效
*/
公共函数 __construct()
{
//
}
公共函数索引()
{
$products = Product::all();
返回响应()->json($产品);
}
公共函数创建(请求 $request)
{
$product = 新产品;
$product->name= $request->name;
$product->price = $request->price;
$product->description= $request->description;
$产品->保存();
返回响应()->json($product);
}
公共功能显示($id)
{
$product = Product::find($id);
返回响应()->json($product);
}
公共功能更新(请求 $request,$id)
{
$product= Product::find($id);
$product->name = $request->input('name');
$product->price = $request->input('price');
$product->description = $request->input('description');
$产品->保存();
返回响应()->json($product);
}
公共函数销毁($id)
{
$product = Product::find($id);
$产品->删除();
return response()->json('产品移除成功');
}
}
设置路线文件
现在将此代码添加到 routes/web.php。为我们的路由创建组路由函数并为它们添加前缀。
$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 – 请求所有项目预览:
网址 – http://localhost:8000/api/v1/items
方法 - GET - 带有单项预览的请求:
网址 – http://localhost:8000/api/v1/items/1
方法- POST - 请求插入新项目预览:
网址- http://localhost:8000/api/v1/items
方法 - PUT -请求更新项目预览:
网址- http://localhost:8000/api/v1/items/5
方法 - DELETE - 请求删除项目预览:
网址- http://localhost:8000/api/v1/items/5
钥匙带走
通过这个实用的 Laravel 微服务示例,我们来到了这篇博文的结尾。如果您是现代企业并希望通过 Laravel 框架利用微服务,我们将是您的最佳选择。Bacancy 拥有一群拥有不同行业经验的 Laravel 开发人员。在竞争中保持领先地位,让您的用户对您的服务垂涎三尺。从我们这里聘请 Laravel 开发人员,为您的用户提供令人紧张的体验。
(言鼎科技)专做软件开发,微信小程序,网站开发,软件外包,手机APP开发,欢迎资讯!