Heim > PHP-Framework > YII > Erstellen Sie Microservices mit Yii2.0

Erstellen Sie Microservices mit Yii2.0

angryTom
Freigeben: 2019-11-01 18:13:56
nach vorne
3971 Leute haben es durchsucht

Erstellen Sie Microservices mit Yii2.0

Konzept


Eine große einzelne Anwendung und einen großen Dienst in mehrere oder sogar Dutzende aufteilen. Jeder unterstützt Microservices, Dadurch werden einzelne Komponenten und nicht der gesamte Anwendungsstapel skaliert, um Service Level Agreements einzuhalten.

Das traditionelle Entwicklungsmodell besteht darin, alle Funktionen in einem Paket zusammenzufassen, im Grunde ohne Abhängigkeiten. Die Vorteile davon sind einfache Entwicklung, zentrale Verwaltung, Funktionen sind alle lokal und es gibt keine verteilte Verwaltung und Planungsnutzung. Aber auch die Mängel liegen auf der Hand: geringe Effizienz, Entwickler ändern alle Code im selben Projekt, warten aufeinander und es gibt weiterhin Konflikte. Schlechte Stabilität, ein kleines Problem kann dazu führen, dass die gesamte Anwendung hängen bleibt. Darüber hinaus gibt es offensichtliche Nachteile bei der Ressourcennutzung. Beispielsweise ist im E-Commerce-Double-11-Promotion-Szenario der Druck, eine Bestellung aufzugeben, sehr hoch und der Bewertungsdruck relativ gering. Daher hoffen wir, die Zuteilung vorübergehend zu erhöhen Um den großen Prozess von Double 11 zu bewältigen, können wir nur die gesamte Ressourcenzuweisung erhöhen, anstatt nur zusätzliche Zuweisungen für Bestelldienste an einem festen Punkt hinzuzufügen. Daher ist die Microservice-Architektur nach und nach populär geworden und wird auf große Website-Plattformen angewendet.

Empfohlen: "Yii2.0 Framework-Einführung und praktisches Video-Tutorial zur Projektentwicklung"

Einführung in das heutige Thema: Wie führt man Microservices in Yii durch? Yii kann problemlos ohne die in den Basis- und erweiterten Vorlagen enthaltenen Funktionen verwendet werden. Mit anderen Worten: Yii ist bereits ein Mikro-Framework. Die von der Vorlage bereitgestellte Verzeichnisstruktur ist für die Arbeit mit Yii nicht erforderlich.

Installieren Sie Yii


Erstellen Sie ein Verzeichnis für Ihr Projekt und ändern Sie das Arbeitsverzeichnis in diesen Pfad. Die in den Beispielen verwendeten Befehle basieren auf Unix, es gibt jedoch ähnliche Befehle in Windows.

mkdir micro-app
cd micro-app
Nach dem Login kopieren

Hinweis: Zum Fortfahren sind einige Composer-Kenntnisse erforderlich. Wenn Sie noch nicht wissen, wie man Composer verwendet, nehmen Sie sich etwas Zeit und lesen Sie die Composer-Anleitung.

Erstellen Sie mit Ihrem bevorzugten Editor eine Datei „composer.json“ im Mikro-App-Verzeichnis und fügen Sie den folgenden Inhalt hinzu:

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

Speichern Sie die Datei und führen Sie composer install < aus 🎜 >Befehl. Dadurch werden das Framework und alle seine Abhängigkeiten installiert.

Erstellen der Projektstruktur


Nach der Installation des Frameworks müssen Sie einen Einstiegspunkt für diese Anwendung erstellen. Der Einstiegspunkt ist die erste Datei, die ausgeführt wird, wenn Sie versuchen, die Anwendung zu öffnen. Aus Sicherheitsgründen wird empfohlen, die Einstiegspunktdatei in einem separaten Verzeichnis abzulegen und auf das Webstammverzeichnis festzulegen.

Erstellen Sie ein Webverzeichnis und fügen Sie dort index.php mit folgendem Inhalt ein:

<?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();
Nach dem Login kopieren

Erstellen Sie außerdem eine Datei namens config.php, die die gesamte Anwendungskonfiguration enthält:

<?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;,
        ],
    ],

];
Nach dem Login kopieren

Info: Obwohl die Konfiguration in der Datei index.php gespeichert werden kann, wird empfohlen, diese separat zu verwenden. Auf diese Weise kann es auch in Konsolenanwendungen verwendet werden, wie unten gezeigt.

Ihr Projekt ist jetzt zum Codieren bereit. Es liegt zwar an Ihnen, über die Struktur des Projektverzeichnisses zu entscheiden, solange Sie Namespaces respektieren.

Erstellen Sie den ersten Controller


Bevor Sie den Controller erstellen, erstellen Sie ein Controller/Basisverzeichnis und einen Basiscontroller BaseController.

<?php
namespace micro\controllers\base;

use yii\web\Controller;

class BaseController extends Controller
{
    //关闭 csrf 验证
    public $enableCsrfValidation = false;
}
Nach dem Login kopieren

Erstellen Sie dann eine neue SiteController.php im Controller-Ordner. Dies ist der Standard-Controller, der Anfragen ohne Pfadinformationen verarbeitet.

<?php

namespace micro\controllers;

use yii\web\Controller;

class HomeController extends BaseController
{
    public function actionIndex()
    {
        return &#39;欢迎来到 Yii2.0 微服务!&#39;;
    }
}
Nach dem Login kopieren

Wenn Sie einen anderen Namen für diesen Controller verwenden möchten, können Sie yiibaseApplication::$defaultRoute konfigurieren, um ihn zu ändern. Für HomeController wäre es beispielsweise „defaultRoute“ => „home/index“.

Zu diesem Zeitpunkt sollte die Projektstruktur wie folgt aussehen:

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

Wenn Sie noch keinen Webserver eingerichtet haben, sollten Sie sich vielleicht die Beispiel-Webserver-Konfigurationsdatei ansehen. Eine andere Möglichkeit besteht darin, den Befehl yii dienen zu verwenden, der den in PHP integrierten Webserver verwendet. Sie können es aus dem Micro-App/-Verzeichnis ausführen, indem Sie:

vendor/bin/yii serve --docroot=./web
Nach dem Login kopieren
Wenn Sie die Anwendungs-URL in einem Browser öffnen, sollte nun „Willkommen bei Yii2.0 Microservices!“ ausgegeben werden, was bereits im HomeController: Zurückgegeben ist :actionIndex().

Info: In unserem Beispiel haben wir den Standardanwendungs-Namespace „app“ in „micro“ geändert, um zu zeigen, dass Sie nicht durch diesen Namen eingeschränkt sind (falls Sie das glauben), und haben dann den Namespace und die Einstellung des Controllers angepasst der richtige Alias.

Das obige ist der detaillierte Inhalt vonErstellen Sie Microservices mit Yii2.0. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:www.yii-china.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage