Heim  >  Artikel  >  Backend-Entwicklung  >  PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

藏色散人
藏色散人Original
2022-01-18 14:13:244196Durchsuche

Vorwort

PHP hat ein breites Anwendungsspektrum, insbesondere bei der Entwicklung von Webprogrammen. Laut der neuesten Wikipedia-Statistik wurde PHP im April 2013 auf mehr als 244 Millionen Websites und 210 auf 10.000 Servern installiert Laut W3Techs-Bericht verwenden im September 2021 78,9 % der Websites PHP. PHP ist also die Sprache Nummer eins weltweit, zumindest im Bereich der Webentwicklung, was kein Scherz ist.

In Bezug auf die Technologieauswahl verwendet PHP hauptsächlich LAMP (der vollständige Name ist Linux + Apache + MySQL + PHP) oder LNMP (der vollständige Name ist Linux + Nginx + MySQL + PHP). Dieses ausgereifte und stabile technische Framework fördert PHP-Web Entwickeln Sie ökologischen Wohlstand und kommerziellen Erfolg.

PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

Im traditionellen Entwicklungsmodell müssen Entwickler selbst verschiedene Software installieren, warten und aktualisieren:

  • Wenn Sie ein Unternehmensbenutzer sind, wenn das Geschäftsvolumen zunimmt oder für die Produktionsumgebung Stabilität und Verfügbarkeit erforderlich sind Die Verwendung des Lastausgleichs ist eine unvermeidliche Option:

PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

Zu diesem Zeitpunkt sind PHP-Entwickler oder Online-Betriebs- und Wartungsstudenten über mehr Dinge besorgt:

  • Bei jeder Produktionssteigerung müssen die Maschinen die entsprechende Software neu installieren. Nehmen Sie die gleiche Nginx-Konfiguration und PHP-FPM-Konfiguration vor und pflegen Sie Sicherheitsupdates für jede Produktionsmaschine

  • Wenn die entwickelte Anwendung eine neue Erweiterung erfordert, kann es erforderlich sein, jede Maschine zu humanisieren, um Erweiterungen hinzuzufügen

  • Der Lastenausgleich wird aktualisiert, wenn sich das Unternehmen ändert, und die letztere Worker-Maschine hängt sich auf. Wie man Betrieb und Wartung durchführt

  • Wenn Sie ein Unternehmensbenutzer mit einer großen Anzahl von Projektteam-Entwicklungsmitgliedern sind, müssen Sie dann nicht für jede Entwicklung eine Linux-Maschine mit installiertem NLP als Entwicklungs- und Testmaschine (oder von mehreren Personen gemeinsam genutzte Maschine) konfigurieren? ?

  • Wenn Sie ein ISV, ein Outsourcing-Unternehmen oder ein Startup sind, das Website-Entwicklung und -Hosting anbietet, sind meine Kunden alle Portale kleiner und mittlerer Unternehmen. Wie kann ich die Nutzung meiner Back-End-Maschinenressourcen verbessern und bessere Leistungen erbringen? Anpassung?

Wenn Sie Student sind oder sich auf das Erlernen der PHP-Entwicklung vorbereiten und nur einen lokalen Windows-Computer haben, können Sie die LNP-Umgebung (Linux+Nginx+PHP) zum Lernen fast kostenlos direkt beziehen?
  • ...
  • Lassen Sie uns anhand dieser Fragen untersuchen, wie Serverless diese Schwachstellen löst.
  • PHP trifft auf Serverless

  • Was ist Serverless?

Serverlos = Faas (Funktion als Dienst) + Baas (Backend als Dienst), wir können die zugehörigen Konzepte anhand von zwei Diagrammen schnell verstehen:

Traditionelles Modell

    Serverlos Modell

PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!Das CDN und OSS im Bild sind BaaS-Dienste, und FC ist die FaaS-Plattform mit benutzerdefinierter Funktionslogik. Durch diesen Vergleich können wir schnell die Funktionen und Vorteile von FaaS erhalten:

  • Nur Konzentrieren Sie sich auf das Geschäft. Schreiben Sie für die Codeentwicklung einfach die entsprechende Logik.

Extrem elastische Skalierung, keine Notwendigkeit, den Server zu verwalten PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

Wie später in diesem Artikel erläutert, bezieht sich Serverless hauptsächlich auf FaaS. Wie in der Abbildung unten gezeigt, ist eine flexible und hochverfügbare Web-API fertig, nachdem einige Codezeilen geschrieben und auf der FaaS-Plattform des Cloud-Anbieters gespeichert wurden.

  • PHP trifft auf Serverless

    PHP ist eine sehr große Sprache für die Entwicklungsgemeinschaft. FaaS von großen Cloud-Anbietern wie Function Compute von Alibaba Cloud, Lambda von AWS (indirekt unterstützt durch Custom Runtime), SCF von Tencent usw Zusätzlich zur Unterstützung der PHP-Sprache sollte PHPer nicht der innovativen Praxis der Serverless-Technologie im Front-End-Bereich nachgeben (siehe Anhang am Ende dieses Artikels, wenn Sie interessiert sind). Am Beispiel von Alibaba Cloud Function Computing gibt es viele PHP-Entwickler mit vielen interessanten Methoden:

    • Verwenden Sie direkt die GD- oder ImageMagick-Erweiterung, um elastische und hochverfügbare Bilder, Wasserzeichen und andere CPU-intensive APIs zu erzielen

    • Direkt Verwenden Sie ffmpeg + Leistungsinstanz + asynchronen zustandsbehafteten Aufruf, um Audio- und Videoverarbeitungsdienste wie Videobearbeitung und -synthese abzuschließen

    • Verwenden Sie durch HTTP-Trigger implementierte Funktionen, um den Punkt in der Werbeplattform zu vergraben und schnell ein Kaufgeschäft mit hoher Verfügbarkeit zu erreichen

    • Migrieren Sie die WEB-API, die zuvor auf Basis von Frameworks (wie ThinkPHP) implementiert wurde, direkt auf die FaaS-Plattform und müssen Sie sich keine Sorgen mehr über Ausfallzeiten sowie Betriebs- und Wartungsprobleme machen

    • ...

    Obwohl FaaS Löst PHPER sehr gut Die folgenden Probleme:

    • Neues Geschäft oder Entwicklung einer neuen Web-API

    • Im bestehenden Geschäft müssen einige APIs, die CPU-intensiv sind oder eine hohe Elastizität erfordern, separat und FaaS-basiert extrahiert werden

    Aber das traditionelle Entwicklungsmodell oder bestehende Unternehmen erfordern einen gewissen Kostenaufwand für den Einstieg und die Umstellung. Zum Beispiel ein Beispiel für die PHP-Runtime-Programmierschnittstelle eines bestimmten Faas-Anbieters:

    function handler($event, $context) {
         $eventObj = json_decode($event, $assoc = true);
        // do your thhings
         // ....
         return $eventObj['key'];
    }

    Aber können Entwickler nicht noch einen Schritt weiter gehen? Sie müssen den vom FaaS-Anbieter vereinbarten Funktionseingängen folgen, um jede Funktionseintrags-API zu implementieren. Können Projekte, die traditionell auf LAMP oder LNMP ausgeführt werden, jedoch direkt in FaaS umgewandelt werden?

    Die Antwort ist ja

    Die Custom Runtime von Alibaba Cloud Function Computing und ihr minimalistisches Programmiermodell, das direkt auf dem HTTP-Protokoll basiert, stehen an der Spitze aller Cloud-Anbieter.

    PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

    Wenn Function Compute die Custom Runtime-Ausführungsumgebung startet, ruft es standardmäßig die Bootstrap-Datei (oder den Args-Parameter, den Sie beim Erstellen der Funktion festgelegt haben) auf, um Ihren benutzerdefinierten HTTP-Server zu starten. Dann übernimmt dieser HTTP-Server alles Funktionen des Function Compute-Systems, also alle Ihre Funktionsaufrufanfragen.

    Das zugrunde liegende System der Function Compute Custom-Laufzeitausführungsumgebung ist Linux und verfügt über integriertes nginx/1.10.3 und php-fpm7.4. Für PHP-Anwendungen können Sie es direkt verwenden.

    Nehmen Sie die Bereitstellung eines WordPress-Projekts als Ein Beispiel, ich brauche nur das folgende Verzeichnis in ein Zip-Paket zu packen und eine Funktion auf der Function-Computing-Plattform zu erstellen:

    - bootstrap
    - nginx.conf
    - php-fpm.conf
    - php.ini-production
    - wordpress

    Das WordPress-Verzeichnis ist das entsprechende Webprojekt und Bootstrap ist das Skript zum Starten von Nginx und PHP-FPM:

    ...
    echo "start php-fpm"
    php-fpm7.4 -c /code/php.ini-production -y /code/php-fpm.conf
    echo "start nginx"
    nginx -c /code/nginx.conf
    ...

    Bootstrap-Details finden Sie unter WordPress in FC

    Nachdem Sie also Function Compute, ein serverloses Produkt, verwendet und es mit der herkömmlichen PHP-Entwicklung kombiniert haben, müssen Sie nicht mehr über Lastausgleich, Erweiterung oder Kontraktion, Maschinenverwaltung usw. nachdenken. oder Ausfallzeiten warten, Sie müssen nur beruhigt den Geschäftscode entwickeln.

    PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

    Wie aus dem obigen Bild ersichtlich ist: Entwickler müssen lediglich ihren eigenen Geschäftscode entwickeln. Das Einzige, was berücksichtigt werden muss, ist, dass die Erweiterung von Function Compute nicht zu stark oder zu drastisch sein sollte (z. B Legen Sie es direkt auf der Function Compute-Plattform fest. Legen Sie einfach die maximale Anzahl von Instanzen fest, in denen diese Funktion angezeigt werden kann, und üben Sie übermäßigen Druck auf Ihre eigene Downstream-MySQL-Datenbank aus.

    Natürlich müssen bei der vollständigen Migration von der ursprünglichen herkömmlichen PHP-Webanwendung auf eine serverlose Function-Computing-Plattform in einigen Szenarien möglicherweise Probleme mit der Datenpersistenz berücksichtigt werden, da Function Computing zustandslos ist und die Datenpersistenz mithilfe von gespeichert werden kann NAS, Redis und andere Dienste sind abgeschlossen. Am Beispiel von NAS sieht das Flussdiagramm wie folgt aus:

    PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

    Am Beispiel von WordPress müssen die vom Hintergrundsystem oder der Sitzungsfunktion hochgeladenen Bilder beibehalten werden auf die Festplatte.

    • Stellen Sie das Datei-Upload-Verzeichnis oder Sitzungsverzeichnis des Webprojekts auf ein Verzeichnis auf der NAS-Festplatte ein, und die NAS-Festplatte wird beibehalten.

    • Sie können das Webprojekt sogar direkt auf der NAS-Festplatte ablegen Zeit, Funktionsberechnung ist eine reine LNP-Ausführungsumgebung

    PHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!

    比如将 wordpress 工程不作为函数的代码包的一部分, 而已提前上传到 NAS 盘, 只需要设置好 nginx.conf 中的 root 能知道 web 工程即可, 如上面的 nginx.conf, /mnt/auto 表示挂载的 NAS 目录,mnt/auto/wordpress 则表示在 NAS 上的 web 工程。

    此时对您来说, 函数再也不用变了, 您可能只是需要开发新的业务代码, 然后上传到 NAS 上即可(或者直接使用 git 直接在 NAS 操作,实现 web 工程的版本和 git 上的 commit 绑定, 使用 git 实现代码的快速升级和混滚)

    但是从安全生产的角度来说, 还是建议您 web 工程变更最好和函数的变更相关联

    小结

    从上面的讨论和陈述中, 我们不难发现, PHP 遇见 Serverless 是一件令人兴奋的事情, 让 phper 有了更大的想象空间。 Serverless 的理念和 PHP 这个语言出现的理念也是一致的: 即让开发者最大精力集中在自己的业务价值。 PHP 语言一直是 web 领域最好的生产力代表, 而 Serverless 将会让 PHP 如虎添翼。

    我们最后来一一解答下前言中提出的问题:

    如果您是一个企业用户, 业务体量变大或者为了生产环境的稳定和可用性, 如何做?

       如上面陈述, 使用函数计算和传统的 PHP 开发相结合后, 您再也不用考虑负载均衡的事情, 不用考虑扩缩容的事情, 不用管理机器、担心宕机的事情等等, 只需要安安心心把业务代码开发好即可。

     

    如果您是项目组开发成员比较多的企业用户,能不能不需要给每个开发配置一个安装的 NLP 的 Linux 机器作为开发测试机器(或者多人共享一个机器)?

       是的, 每个开发者在函数计算上创建一个自己的 Service/函数即可, Service/函数配置开发测试环境的 VPC,实现内网安全访问数据库等其他下游服务。 函数调用的时候, 函数计算会拉一个 NLP 的执行环境来运行您分支上正在开发的 PHP 代码。

    • 每个执行环境是相互隔离的

    • 按调用次数计费, 不需要预留机器, 免除了机器成本上的浪费

    • 也可以很方便进行压测等各种事宜

    如果您是一个提供网站开发和托管的 ISV 、外包公司或者创业公司, 我的客户都是一些中小企业的门户网站, 我怎么提高我后端机器资源利用率以及更好提供定制化服务?

       通常来说, 很多企业门户网站访问量不大, 但是网站挂掉了会引起客户投诉。每个客户的网站通过service 或者函数区分, 通过函数名或者service去区分您自己的客户: i. 管理方便  ii. 做定制化方便  iii. 做不同vip等级服务方便。 举个例子, 您可以快速通过某个函数的调用指标情况, 可以看出哪个客户的网站访问量大,可以做出客户画像以及制定不同的收费和 vip 服务级别。

    如果您是一个学生或者准备学习 PHP 开发,本地只有 Windows 电脑, 能不能直接近乎免费的方式获取 LNP(Linux+Nginx+PHP)  的环境用来学习呢?

       是的, 只要将如下的文件和文件夹打包成 zip 包去函数计算控制台创建函数即可

    - bootstrap
    - nginx.conf
    - php-fpm.conf
    - php.ini-production
    - myweb
      | - hello.php

    这里构建了一个钉钉群: 31897696,  如果您对 PHP 落地 Serverless 感兴趣,您有观点、想法或者想吐槽的, 可以和大家一起交流。

    本文作者:罗松(西流)

    阿里云函数计算技术专家

    负责阿里云函数计算产品功能开发(runtime 开发、事件源集成以及企业级 Serverless 解决方案落地等),目前专注在 Serverless 开发者工具链的建设,是云原生 Serverless Dev Tools 研发负责人,主导了 S/fc 等组件的开发工作,关注 Serverless 最新技术动态以及企业级解决方案的落地,致力于推动 Serverless 在开发者群体的流行。

Das obige ist der detaillierte Inhalt vonPHP trifft auf Serverless, um Ihnen bei der Lösung dieser Probleme zu helfen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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