溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Yii2.0創(chuàng)建微服務(wù)

發(fā)布時(shí)間:2021-01-13 13:40:21 來(lái)源:億速云 閱讀:328 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了如何使用Yii2.0創(chuàng)建微服務(wù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

概念


把一個(gè)大型的單個(gè)應(yīng)用程序和服務(wù)拆分為數(shù)個(gè)甚至數(shù)十個(gè)的支持微服務(wù),它可擴(kuò)展單個(gè)組件而不是整個(gè)的應(yīng)用程序堆棧,從而滿足服務(wù)等級(jí)協(xié)議。

傳統(tǒng)的開發(fā)模式就是把所有功能都放在一個(gè)包里,基本不存在依賴,這樣的優(yōu)勢(shì)在于開發(fā)簡(jiǎn)單,集中式管理,功能都在本地,不存在分布式的管理和調(diào)度消耗。但缺點(diǎn)也很明顯:效率低,開發(fā)都在同一個(gè)項(xiàng)目改代碼,相互等待,沖突不斷。穩(wěn)定性差,一個(gè)微小的問題,都可能導(dǎo)致整個(gè)應(yīng)用掛掉。另外在資源利用上表現(xiàn)出明顯的劣勢(shì),比如電商雙11大促場(chǎng)景,下單壓力非常大,評(píng)價(jià)的壓力相對(duì)較少,那么我們希望臨時(shí)增配應(yīng)對(duì)雙11的大流程,只能全部增配,而不能定點(diǎn)只對(duì)訂單服務(wù)增配。所以微服務(wù)的架構(gòu)開始慢慢流行并應(yīng)用于大型的網(wǎng)站平臺(tái)。

那么引入今天的主題,Yii 如何做微服務(wù)?Yii 可以輕松使用,而不需要基本和高級(jí)模板中包含的功能。換句話說(shuō),Yii 已經(jīng)是一個(gè)微框架。不需要由模板提供的目錄結(jié)構(gòu)與 Yii 一起工作。

安裝 Yii


為您的項(xiàng)目創(chuàng)建一個(gè)目錄并將工作目錄更改為該路徑。示例中使用的命令是基于 Unix 的,但在 Windows 中也存在類似的命令。

mkdir micro-app
cd micro-app

Note:需要一些 Composer 的知識(shí)才能繼續(xù)。如果您還不知道如何使用 composer,請(qǐng)花些時(shí)間閱讀 Composer 指南。

使用您最喜愛的編輯器在 micro-app 目錄下創(chuàng)建 composer.json 文件并添加以下內(nèi)容:

{
    "require": {
        "yiisoft/yii2": "~2.0.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
}

保存文件并運(yùn)行 composer install 命令。這將安裝框架及其所有依賴項(xiàng)。

創(chuàng)建項(xiàng)目結(jié)構(gòu)


安裝框架之后,需要為此應(yīng)用程序創(chuàng)建一個(gè)入口點(diǎn)。入口點(diǎn)是您嘗試打開應(yīng)用程序時(shí)將執(zhí)行的第一個(gè)文件。出于安全原因,建議將入口點(diǎn)文件放在一個(gè)單獨(dú)的目錄中,并將其設(shè)置為Web根目錄。

創(chuàng)建一個(gè) web 目錄并將 index.php 放入其中,內(nèi)容如下:

<?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();

還要?jiǎng)?chuàng)建一個(gè)名為 config.php 的文件,它將包含所有的應(yīng)用程序配置:

<?php
return [
    'id' => 'micro-app',

    //設(shè)置`micro-app`的根目錄
    'basePath' => __DIR__,

    // 控制器所在目錄。
    'controllerNamespace' => 'micro\controllers',

    // 設(shè)置命名空間為 micro
    'aliases' => [
        '@micro' => __DIR__,
    ],

    //默認(rèn)訪問地址
    'defaultRoute' => 'home/index',

    'components' => [
        //請(qǐng)求配置
        '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>',
            ],
        ],

        //數(shù)據(jù)庫(kù)配置
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=micro',
            'username' => 'root',
            'password' => '數(shù)據(jù)庫(kù)密碼',
            'charset' => 'utf8',
        ],
    ],

];

Info:盡管配置可以保存在 index.php 文件中,建議單獨(dú)使用它。 這樣它也可以用于控制臺(tái)應(yīng)用程序,如下所示。

您的項(xiàng)目現(xiàn)在已經(jīng)準(zhǔn)備進(jìn)行編碼了。盡管由您決定項(xiàng)目目錄結(jié)構(gòu),只要您遵守命名空間即可。

創(chuàng)建第一個(gè)控制器


在創(chuàng)建控制器之前,創(chuàng)建一個(gè) controllers/base 目錄并創(chuàng)建一個(gè)基礎(chǔ)控制器 BaseController。

<?php
namespace micro\controllers\base;

use yii\web\Controller;

class BaseController extends Controller
{
    //關(guān)閉 csrf 驗(yàn)證
    public $enableCsrfValidation = false;
}

然后在 controller 文件夾下面 新建一個(gè) SiteController.php,這是默認(rèn)的 控制器將處理沒有路徑信息的請(qǐng)求。

<?php

namespace micro\controllers;

use yii\web\Controller;

class HomeController extends BaseController
{
    public function actionIndex()
    {
        return '歡迎來(lái)到 Yii2.0 微服務(wù)!';
    }
}

如果您想為此控制器使用不同的名稱,則可以配置 yii\base\Application::$defaultRoute 進(jìn)行更改。 例如,對(duì)于 HomeController 將會(huì)是 'defaultRoute' => 'home/index'。

在這一點(diǎn)上,項(xiàng)目結(jié)構(gòu)應(yīng)該如下所示:

micro-app/
├── composer.json
├── config.php
├── web/
    └── index.php
└── controllers/
    └── base
        └── BaseController.php
    └── HomeController.php
└── vendor

如果您尚未設(shè)置 Web 服務(wù)器,則可能需要查看Web服務(wù)器配置文件示例。 另一種選擇是使用 yii serve 命令,它將使用 PHP 內(nèi)置 web 服務(wù)器。 您可以通過(guò)以下方式從 micro-app / 目錄運(yùn)行它:

vendor/bin/yii serve --docroot=./web

在瀏覽器中打開應(yīng)用程序URL現(xiàn)在應(yīng)該打印出“歡迎來(lái)到 Yii2.0 微服務(wù)!”,它已經(jīng)在 HomeController::actionIndex()中返回。

Info:在我們的示例中,我們已將默認(rèn)應(yīng)用程序名稱空間 app 更改為 micro, 以表明您不受此名稱的限制(如果您是這樣認(rèn)為), 然后調(diào)整 controllers namespace 并設(shè)置正確的別名。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何使用Yii2.0創(chuàng)建微服務(wù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI