您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何使用Yii2.0創建微服務,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
概念
把一個大型的單個應用程序和服務拆分為數個甚至數十個的支持微服務,它可擴展單個組件而不是整個的應用程序堆棧,從而滿足服務等級協議。
傳統的開發模式就是把所有功能都放在一個包里,基本不存在依賴,這樣的優勢在于開發簡單,集中式管理,功能都在本地,不存在分布式的管理和調度消耗。但缺點也很明顯:效率低,開發都在同一個項目改代碼,相互等待,沖突不斷。穩定性差,一個微小的問題,都可能導致整個應用掛掉。另外在資源利用上表現出明顯的劣勢,比如電商雙11大促場景,下單壓力非常大,評價的壓力相對較少,那么我們希望臨時增配應對雙11的大流程,只能全部增配,而不能定點只對訂單服務增配。所以微服務的架構開始慢慢流行并應用于大型的網站平臺。
那么引入今天的主題,Yii 如何做微服務?Yii 可以輕松使用,而不需要基本和高級模板中包含的功能。換句話說,Yii 已經是一個微框架。不需要由模板提供的目錄結構與 Yii 一起工作。
安裝 Yii
為您的項目創建一個目錄并將工作目錄更改為該路徑。示例中使用的命令是基于 Unix 的,但在 Windows 中也存在類似的命令。
mkdir micro-app cd micro-app
Note:需要一些 Composer 的知識才能繼續。如果您還不知道如何使用 composer,請花些時間閱讀 Composer 指南。
使用您最喜愛的編輯器在 micro-app 目錄下創建 composer.json 文件并添加以下內容:
{ "require": { "yiisoft/yii2": "~2.0.0" }, "repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ] }
保存文件并運行 composer install 命令。這將安裝框架及其所有依賴項。
創建項目結構
安裝框架之后,需要為此應用程序創建一個入口點。入口點是您嘗試打開應用程序時將執行的第一個文件。出于安全原因,建議將入口點文件放在一個單獨的目錄中,并將其設置為Web根目錄。
創建一個 web 目錄并將 index.php 放入其中,內容如下:
<?php // comment out the following two lines when deployed to production defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $config = require __DIR__ . '/../config.php'; (new yii\web\Application($config))->run();
還要創建一個名為 config.php 的文件,它將包含所有的應用程序配置:
<?php return [ 'id' => 'micro-app', //設置`micro-app`的根目錄 'basePath' => __DIR__, // 控制器所在目錄。 'controllerNamespace' => 'micro\controllers', // 設置命名空間為 micro 'aliases' => [ '@micro' => __DIR__, ], //默認訪問地址 'defaultRoute' => 'home/index', 'components' => [ //請求配置 'request' => [ 'cookieValidationKey' => 'test&123456', 'parsers' => [ 'application/json' => 'yii\web\JsonParser', ] ], //Url 美化 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => false, 'rules' => [ '<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>', ], ], //數據庫配置 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=micro', 'username' => 'root', 'password' => '數據庫密碼', 'charset' => 'utf8', ], ], ];
Info:盡管配置可以保存在 index.php 文件中,建議單獨使用它。 這樣它也可以用于控制臺應用程序,如下所示。
您的項目現在已經準備進行編碼了。盡管由您決定項目目錄結構,只要您遵守命名空間即可。
創建第一個控制器
在創建控制器之前,創建一個 controllers/base 目錄并創建一個基礎控制器 BaseController。
<?php namespace micro\controllers\base; use yii\web\Controller; class BaseController extends Controller { //關閉 csrf 驗證 public $enableCsrfValidation = false; }
然后在 controller 文件夾下面 新建一個 SiteController.php,這是默認的 控制器將處理沒有路徑信息的請求。
<?php namespace micro\controllers; use yii\web\Controller; class HomeController extends BaseController { public function actionIndex() { return '歡迎來到 Yii2.0 微服務!'; } }
如果您想為此控制器使用不同的名稱,則可以配置 yii\base\Application::$defaultRoute 進行更改。 例如,對于 HomeController 將會是 'defaultRoute' => 'home/index'。
在這一點上,項目結構應該如下所示:
micro-app/ ├── composer.json ├── config.php ├── web/ └── index.php └── controllers/ └── base └── BaseController.php └── HomeController.php └── vendor
如果您尚未設置 Web 服務器,則可能需要查看Web服務器配置文件示例。 另一種選擇是使用 yii serve 命令,它將使用 PHP 內置 web 服務器。 您可以通過以下方式從 micro-app / 目錄運行它:
vendor/bin/yii serve --docroot=./web
在瀏覽器中打開應用程序URL現在應該打印出“歡迎來到 Yii2.0 微服務!”,它已經在 HomeController::actionIndex()中返回。
Info:在我們的示例中,我們已將默認應用程序名稱空間 app 更改為 micro, 以表明您不受此名稱的限制(如果您是這樣認為), 然后調整 controllers namespace 并設置正確的別名。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用Yii2.0創建微服務”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。