Yii2.0を使用してマイクロサービスを作成する

angryTom
リリース: 2019-11-01 18:13:56
転載
3924 人が閲覧しました

Yii2.0を使用してマイクロサービスを作成する

コンセプト


大規模な単一のアプリケーションとサービスを複数または数十に分割します。それぞれがマイクロサービスをサポートします。これにより、サービス レベル アグリーメントを満たすためにアプリケーション スタック全体ではなく、個々のコンポーネントがスケーリングされます。

従来の開発モデルでは、すべての機能を 1 つのパッケージにまとめており、基本的に依存関係はありません。この利点は、開発が簡単、集中管理、すべての機能がローカルであり、分散管理やスケジューリングがないことです。 。しかし、欠点も明らかです。効率が低く、開発者全員が同じプロジェクト内のコードを変更してお互いを待ち、競合が続きます。安定性が悪く、小さな問題によりアプリケーション全体がハングアップする可能性があります。さらに、リソースの利用には明らかな欠点があり、たとえば、電子商取引のダブル 11 プロモーション シナリオでは、注文のプレッシャーが非常に高く、評価のプレッシャーが比較的小さいため、一時的に割り当てを増やすことができればと考えています。ダブル 11 の大規模なプロセスに対処するには、固定点でサービスを注文するために追加の割り当てを追加するだけではなく、すべてのリソースの割り当てを増やすことしかできません。したがって、マイクロサービス アーキテクチャは徐々に普及し、大規模な Web サイト プラットフォームに適用されるようになりました。

おすすめ: 「Yii2.0 フレームワークの紹介と実践的なプロジェクト開発ビデオチュートリアル #」

それでは、今日のトピックである Yii でマイクロサービスを実行する方法を紹介します。 ? Yii は、基本テンプレートと高度なテンプレートに含まれる機能がなくても簡単に使用できます。言い換えれば、Yii はすでにマイクロフレームワークです。テンプレートによって提供されるディレクトリ構造は、Yii で動作するために必要ありません。

Yii のインストール


プロジェクトのディレクトリを作成し、作業ディレクトリをそのパスに変更します。例で使用されているコマンドは Unix ベースですが、同様のコマンドが Windows にも存在します。

mkdir micro-app
cd micro-app
ログイン後にコピー

注: 続行するには、Composer の知識が必要です。 Composer の使用方法がまだわからない場合は、時間をかけて Composer ガイドを読んでください。

お好みのエディターを使用して、マイクロアプリ ディレクトリにcomposer.json ファイルを作成し、次の内容を追加します。

{
    "require": {
        "yiisoft/yii2": "~2.0.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    ]
}
ログイン後にコピー

ファイルを保存して、 コンポーザー インストール # を実行します。 # #注文。これにより、フレームワークとそのすべての依存関係がインストールされます。

プロジェクト構造の作成


フレームワークをインストールした後、このアプリケーションのエントリ ポイントを作成する必要があります。エントリ ポイントは、アプリケーションを開こうとしたときに実行される最初のファイルです。セキュリティ上の理由から、エントリ ポイント ファイルを別のディレクトリに配置し、Web ルートに設定することをお勧めします。

Web ディレクトリを作成し、その中に次の内容を含むindex.php を配置します:

<?php

// comment out the following two lines when deployed to production
defined(&#39;YII_DEBUG&#39;) or define(&#39;YII_DEBUG&#39;, true);
defined(&#39;YII_ENV&#39;) or define(&#39;YII_ENV&#39;, &#39;dev&#39;);

require(__DIR__ . &#39;/../vendor/autoload.php&#39;);
require(__DIR__ . &#39;/../vendor/yiisoft/yii2/Yii.php&#39;);

$config = require __DIR__ . &#39;/../config.php&#39;;
(new yii\web\Application($config))->run();
ログイン後にコピー

すべてのアプリケーション構成を含む config.php というファイルも作成します:

<?php
return [
    &#39;id&#39; => &#39;micro-app&#39;,

    //设置`micro-app`的根目录
    &#39;basePath&#39; => __DIR__,

    // 控制器所在目录。
    &#39;controllerNamespace&#39; => &#39;micro\controllers&#39;,

    // 设置命名空间为 micro
    &#39;aliases&#39; => [
        &#39;@micro&#39; => __DIR__,
    ],

    //默认访问地址
    &#39;defaultRoute&#39; => &#39;home/index&#39;,

    &#39;components&#39; => [
        //请求配置
        &#39;request&#39; => [
            &#39;cookieValidationKey&#39; => &#39;test&123456&#39;,
            &#39;parsers&#39; => [
                &#39;application/json&#39; => &#39;yii\web\JsonParser&#39;,
            ]
        ],

        //Url 美化
        &#39;urlManager&#39; => [
            &#39;enablePrettyUrl&#39; => true,
            &#39;showScriptName&#39; => false,
            &#39;enableStrictParsing&#39; => false,
            &#39;rules&#39; => [
                &#39;<controller:\w+>/<action:\w+>/<id:\w+>&#39;   => &#39;<controller>/<action>&#39;,
            ],
        ],

        //数据库配置
        &#39;db&#39; => [
            &#39;class&#39; => &#39;yii\db\Connection&#39;,
            &#39;dsn&#39; => &#39;mysql:host=localhost;dbname=micro&#39;,
            &#39;username&#39; => &#39;root&#39;,
            &#39;password&#39; => &#39;数据库密码&#39;,
            &#39;charset&#39; => &#39;utf8&#39;,
        ],
    ],

];
ログイン後にコピー

情報: 設定は、index.php ファイルに保存できますが、個別に使用することをお勧めします。このようにして、以下に示すようにコンソール アプリケーションでも使用できます。

プロジェクトをコーディングする準備が整いました。ただし、名前空間を尊重する限り、プロジェクトのディレクトリ構造を決定するのはあなた次第です。

最初のコントローラーの作成


コントローラーを作成する前に、controllers/base ディレクトリを作成し、ベース コントローラー BaseController を作成します。

<?php
namespace micro\controllers\base;

use yii\web\Controller;

class BaseController extends Controller
{
    //关闭 csrf 验证
    public $enableCsrfValidation = false;
}
ログイン後にコピー

次に、コントローラー フォルダーの下に新しい SiteController.php を作成します。これは、パス情報なしでリクエストを処理するデフォルトのコントローラーです。

<?php

namespace micro\controllers;

use yii\web\Controller;

class HomeController extends BaseController
{
    public function actionIndex()
    {
        return &#39;欢迎来到 Yii2.0 微服务!&#39;;
    }
}
ログイン後にコピー

このコントローラに別の名前を使用したい場合は、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 サーバー構成ファイルを確認してください。もう 1 つのオプションは、PHP 組み込み Web サーバーを使用する yiiserve コマンドを使用することです。次の方法で micro-app/ ディレクトリから実行できます:

vendor/bin/yii serve --docroot=./web
ログイン後にコピー
ブラウザでアプリケーション URL を開くと、「Welcome to Yii2.0 Microservices!」が出力されるはずです。これはすでに HomeController にあります。 :actionIndex()。

情報: この例では、デフォルトのアプリケーション名前空間 app を micro に変更して、この名前に制限されていないことを示し (そう思われる場合)、コントローラーの名前空間を調整して、正しい別名。

以上がYii2.0を使用してマイクロサービスを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:www.yii-china.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート