この記事では、バックエンド技術についてより明確に理解していただくために、主に 2018 年のバックエンド技術のトレンドについてお話します。
Go 言語はますます人気が高まっており、多くの大手インターネット企業がバックエンドに GO に注目しています。 Java 界隈ではよく知られたサービス指向フレームワークである Dubbo も、非同期モードへの移行を発表しました。これは大きなトレンドであり、非同期モデルは市場で検証され、認識されています。
Web サーバーを選択するとき、ほとんどの人は数年前から同期ブロッキング Apache ではなく、非同期非ブロッキング Nginx を選び始めました。 Nginx のような非同期プログラムのおかげで、より優れた適応性と強力な同時実行機能を備えています。現在、バックエンドのビジネス開発プログラミングに関しては、強力な技術力を持つチームがテクノロジー スタックを同期モードから非同期モードに切り替え始めています。
同期ブロック モードには、同時実行性の弱さ、適応性の低さ、リクエストの速度の遅さなど、多くの欠陥があり、その結果サービスが利用できなくなります。たとえば、バックグラウンド インターフェイスでサードパーティ API を呼び出すシナリオでは、同期モードの効果は非常に低くなります。以前は、Java、PHP、C++、Python、Ruby 言語を使用して開発された同期ブロッキング モード フレームワークを使用する人はますます少なくなりました。
Node.js も非常に人気があり、人気がありますが、バックエンドの主要なプログラミング言語として Node.js を使用している企業を見ることはまだまれです。 C++、Java、PHP、Python 言語にも、Node.js に似た非同期コールバック モードに基づく Swoole-1.0 など、同様のソリューションがいくつかあります。
その本質的な理由は、非同期コールバックの技術的ソリューションと、それに基づいて行われたいくつかの最適化ソリューション (Promise、Future、Yield/Generator、Async/Await など) がプログラム開発のスタイルと習慣を変えたことです。これらのテクノロジーを使用したい場合、エンジニアはこれらのキーワードと関数の使用方法をさらに学習する必要があります。
これらの技術的ソリューションの使用は、既存のプログラムと互換性がありません。 研究開発費は膨大であり、スムーズな移行が難しいと言えます。非同期コールバック技術スタックの人気に影響を与えました。このプログラミング モデルは誰にとっても受け入れがたいものです。
コルーチン モードでは、同期ブロッキングの保守性と非同期ノンブロッキングの高い同時実行機能が考慮されています。将来的にはバックエンド開発分野における主流の技術ソリューションとなるでしょう。
最も重要なことは、コルーチン モードを実行するには既存のプロジェクト コードをいくつか調整するだけで済み、古いプロジェクトとも完全な互換性があるということです。互換性のために必要なのはフレームワーク層のみです。これにより、チームのスムーズな移行が可能になります。
コルーチン モードを使用すると、開発者は追加のキーワードや関数の使用法を学習する必要がまったくありません。コーディングスタイルは同期モードとまったく同じです。
さまざまなコルーチン テクノロジーの中で、GO
は最も素晴らしいものです。コルーチン、チャネル、静的言語、パフォーマンス、豊富なコンパイル、豊富な標準ライブラリ、完全なエコロジー、Google など、利点が多すぎます。 GO
是最耀眼的那一个。协程、通道、静态语言、性能、富编译、标准库丰富、生态完整、Google 等,优势太多了。GO 语言,个人认为是目前所有编程语言中,最值得学习的。
Swoole 2.x
让 PHP 这门 20多年历史的老牌后台编程语言也能有协程的能力。相比 Go
这样的技术,PHP + Swoole
的技术栈,更适合快速开发、快速迭代、业务驱动的场景。毕竟动态语言比静态语言还是要更加灵活、开发效率更高。而 Go
更适合编写系统级软件、核心业务。
2018 年我重构了 swoole framework 这个很老的项目,底层支持 Swoole 2.x
协程模式。主要原因是车轮公司内部有很多项目基于这个框架,尤其是服务层全部用了 swoole framework。我们希望业务代码一行不改,可以一键切换为协程模式。理论上其他的同步阻塞 PHP 框架,如 Laravel 、Yii ,都可以实现只修改底层兼容 Swoole 2.x
协程,实现项目代码无缝切换协程模式。
使用协程后,整个系统的性能、并发能力、稳定性有了巨大提升。过去,线上经常出现一个慢请求导致整个服务器卡住的问题不存在了。
虽然 Swoole 2.0 只有不到两年的历史,相比 Go 语言 10 年的耕耘,还有很长一段路要走。但相比 GO 这样的静态语言,PHP + Swoole 还是有很多优势的,PHP 更加简单易用,PHP 是动态语言,使用起来更加灵活。
当然,如果是新项目还是推荐使用 Swoft 这个专门为 Swoole 2.x
GO 言語は、現在のすべてのプログラミング言語の中で最も学ぶ価値があると私は考えています
Swoole 2.x
を使用すると、20 年以上の歴史を持つベテランのバックエンド プログラミング言語である PHP にコルーチン機能を持たせることができます。 Go
などのテクノロジーと比較して、PHP + Swoole
のテクノロジー スタックは、迅速な開発、迅速なイテレーション、ビジネス主導のシナリオにより適しています。結局のところ、動的言語は静的言語よりも柔軟で開発効率が高いのです。 Go
は、システム レベルのソフトウェアやコア ビジネスの作成に適しています。
2018 年に、非常に古いプロジェクトである swoole フレームワークをリファクタリングしました。基礎となる層は Swoole 2.x
コルーチン モードをサポートしています。主な理由は、ホイール会社内にこのフレームワークに基づいたプロジェクト、特にサービス層がすべて swoole フレームワークを使用していることが多いためです。ビジネス コードが 1 行も変更されず、ワンクリックでコルーチン モードに切り替えられることを願っています。理論的には、Laravel や Yii などの他の同期ブロッキング PHP フレームワークは、プロジェクト コード内でコルーチン モードのシームレスな切り替えを実現するために、基礎となる互換性のある Swoole 2.x
コルーチンを変更することしかできません。
コルーチンを使用した後、システム全体のパフォーマンス、同時実行性、安定性が大幅に向上しました。以前は、リクエストが遅いとサーバー全体がオンラインで停止することがよくあったという問題はもう存在しません。 PHP & Swoole
Swoole 2.0 はまだ 2 年も経っていませんが、Go 言語の 10 年間の努力に比べれば、まだまだ長い道のりです。ただし、GO のような静的言語と比較すると、PHP はよりシンプルで使いやすく、より柔軟に使用できるという利点があります。 もちろん、新しいプロジェクトの場合は、Swoole 2.x
用に特別に設計されたフレームワークである Swoft を使用することをお勧めします。これにより、歴史的な問題が少なくなり、安定性が向上します。
Swoole 2.0 コルーチンのおかげで、私たちは PHP の将来にまだ自信を持っています。 関連するおすすめ: