Kerangka kerja layanan mikro PHP adalah "Kerangka Layanan Mikro Untuk PHP". Ini adalah kerangka layanan coroutine PHP modern yang dikembangkan secara independen oleh tim server komunitas Camera360 berdasarkan Swoole. Ini disebut sebagai msf atau php-msf kerangka aplikasi perusahaan dan telah bertahan dalam ujian Camera360 terhadap konkurensi tinggi dan lalu lintas besar untuk ratusan juta pengguna. php-msf dipimpin oleh tim server Camera360 dan akan terus diperbarui dan dipelihara. Kami juga berharap semakin banyak pengembang aplikasi Swoole terkemuka yang bergabung. Ide desain inti php-msf adalah menggunakan sarana teknis inovatif coroutine, asynchronous, dan paralelisme untuk meningkatkan kemampuan throughput mesin tunggal sistem dan mengurangi biaya server secara keseluruhan.
Manual Kerangka Kerja (Gitbook): Manual Pengembangan PHP-MSF
Dokumen API (Rawgit): dokumen kelas
Contoh proyek DEMO: PHP-MSF DEMO
Bantu tingkatkan dokumentasi: https://github.com/pinguo/php-msf-docs, silakan kirimkan PR.
Grup PHP-MSF#1 (QQ): 614054288
$ > php -r " copy('https://raw.githubusercontent.com/pinguo/php-msf-docker/master/installer.php', 'installer.php');include('installer.php'); " && source ~ /.bashrc
installer.php
akan memeriksa lingkungan yang berjalan, secara otomatis membuat templat proyek berdasarkan konfigurasi khusus Anda, menginstal dependensi dengan komposer, dan memulai layanan. Jika cdn.rawgit.com
tidak dapat diakses, Anda dapat langsung mengkloning atau mendownload php-msf-docker, mengekstrak installer.php
, lalu langsung menjalankan php installer.php
Jika semuanya berjalan dengan baik, di akhir proses Anda akan melihat output berikut:
[2017-09-06 16:08:34] Run composer install success
[2017-09-06 16:08:34] Congratulations, all are installed successfully !
[2017-09-06 16:08:34] You can, visit http://127.0.0.1:8990/Welcome for test
_______ ____
________ / /_ ____ ____ ___ _____/ __/
___/ __ / __ / __ _ _____/ __ ` __ / ___/ /_
__/ /_/ / / / / /_/ /_____/ / / / / (__ ) __/
_/ .___/_/ /_/ .___/ /_/ /_/ /_/____/_/
/_/ /_/ Camera360 Open Source TM
[2017-09-06 16:08:34] Swoole Version: 1.9.18
[2017-09-06 16:08:34] PHP Version: 7.1.8
[2017-09-06 16:08:34] Application ENV: docker
[2017-09-06 16:08:34] Listen Addr: 0.0.0.0
[2017-09-06 16:08:34] Listen Port: 8990
Tes akses:
$ > curl http://127.0.0.1:8990/Welcome
hello world !
Perhatikan portnya. Jika bukan 8990, Anda perlu memodifikasinya dan kemudian mengakses pengujian.
├── app // PHP业务代码
│ ├── AppServer.php // 应用server类,可根据需求自定义
│ ├── Controllers // 控制器类目录
│ ├── Lib // 特殊逻辑处理类目录
│ ├── Models // Model类目录
│ ├── Route // 特殊路由规则类目录
│ ├── Tasks // Task类目录
│ └── Views // 视图文件目录
├── build.sh // 构建脚本(拉取docker镜像,启动容器)
├── checkstyle.sh // 代码检查脚本
├── composer.json // composer包依赖配置文件
├── config // 配置目录
├── server.php // server启动脚本
├── console.php // 命令行脚本
├── test // 单元测试目录
Di atas adalah struktur aplikasi standar berdasarkan php-msf. Program instalasi sekali klik installer.php akan secara otomatis menghasilkan direktori. Pengguna dapat membuat beberapa direktori khusus sesuai dengan kebutuhan mereka dimuat secara otomatis.
mode debug
$ > ./server.php start
Modus daemon
$ > ./server.php start -d
Hentikan layanan
$ > ./server.php stop
Mulai ulang layanan
$ > ./server.php restart
Kami telah membuat image Docker untuk memfasilitasi pengguna Docker menginstal lingkungan dengan cepat dan menjalankan proyek DEMO PHP-MSF. Selain itu, jika Anda ingin melihat pratinjau efek modifikasi kode di lingkungan pengembangan secara real time, disarankan untuk menggunakan Docker untuk versi desktop Mac/Windows.
Jika Anda memutakhirkan Docker, maka secara otomatis akan memigrasikan image dan container asli. Harap tunggu dengan sabar dan pastikan untuk tidak menghentikan proses Docker di tengah jalan, jika tidak maka akan sulit untuk melakukan migrasi lagi.
Registri Docker (Alibaba Cloud):
docker pull registry.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull registry-internal.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull registry-vpc.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull pinguoops/php-msf-docker
Kami fokus pada pembangunan kerangka layanan mikro asinkron murni yang stabil dan berkinerja tinggi berdasarkan HTTP, sebagai tumpukan teknologi alternatif untuk nginx+php-fpm untuk mewujudkan layanan mikro arsitektur; sementara Tcp/WebSocket Server akan didukung sebagai plug-in , atau sebagai proyek sumber terbuka independen lainnya.
Untuk tim kecil atau sistem bisnis, kami merekomendasikan penggunaan tumpukan teknologi nginx+php-fpm tradisional. Tidak ada hambatan dalam hal biaya dan kinerja, dan tidak perlu memperkenalkan tumpukan teknologi baru.
Untuk tim atau sistem bisnis berukuran besar dan menengah yang berada pada tahap penting dalam tata kelola layanan atau evolusi berorientasi layanan, php-msf adalah salah satu opsinya.
Untuk cluster aplikasi PHP yang besar, jika Anda ingin menghemat biaya server secara signifikan dan meningkatkan kinerja layanan, php-msf adalah salah satu opsinya.
Untuk layanan agregasi, seperti beranda situs web besar, jika Anda ingin mengintegrasikan data melalui konten agregasi sisi server, php-msf adalah salah satu opsinya.
Metode instalasi yang disarankan adalah menambahkan ketergantungan pinguo/php-msf
dengan mengedit proyek composer.json
{
"require" : {
"pinguo/php-msf" : " >=3.0.0 "
},
"minimum-stability" : " dev "
}
Opsi konfigurasi "minimum-stability": "dev"
harus ditambahkan karena komponen log bergantung pada "monolog/monolog": "2.0.x-dev"
, dan monolog/monolog
tidak memiliki paket rilis 2.0, tetapi kami punya sudah melakukannya di lingkungan produksi Verifikasi stabilitasnya.
php-msf telah bertahan dalam lalu lintas tinggi dan konkurensi tinggi dari layanan komunitas Camera360, dan stabilitasnya telah diverifikasi sepenuhnya. Stabilitas adalah masalah terpenting yang kita habiskan banyak waktu dan energi untuk menyelesaikannya, dan ini adalah prinsip terpenting dari ketiga prinsip tersebut.
Kapasitas pemrosesan mesin tunggal dari bisnis intensif IO meningkat 5-10 kali lipat. Ini adalah data nyata yang diperoleh di lingkungan produksi, misalnya, layanan agregasi di komunitas Camera360 memerlukan 40 server untuk menahan lalu lintas selama lalu lintas puncak. dan setelah rekonstruksi menggunakan php-msf Hanya diperlukan 4 server dengan konfigurasi yang sama untuk menahan semua lalu lintas.
Karena model proses Swoole yang kompleks, yang terbagi menjadi pemblokiran sinkron dan non-pemblokiran asinkron, saat menjalankan logika kode yang sama, metode pemanggilan dan parameter penerusan mungkin tidak konsisten, yang secara langsung meningkatkan biaya pembelajaran untuk melindungi biaya pembelajaran yang rendah. perbedaan tingkat, kami, banyak pekerjaan yang telah dilakukan, dan satu-satunya perbedaan antara implementasi dan kerangka MVC tradisional adalah penambahan kata kunci "hasil". Kami telah merujuk pada beberapa praktik kode kerangka Yii2, dan kami berharap dapat beralih dari pengembangan Yii2 dengan lancar.
Ketiga prinsip di atas menjadi dasar pemungutan suara atau penggabungan kode saat kami menerapkan fitur dan fungsi baru. PR apa pun yang memengaruhi prinsip ini juga akan ditolak.
Saat ini, ada beberapa proyek sumber terbuka PHP di komunitas yang mendukung coroutine. Kebanyakan dari mereka menggunakan Generator+Yield untuk mengimplementasikannya. Namun, perbedaan kecil dalam implementasi akan menghasilkan kinerja yang sangat berbeda dalam metode penulisan kode sinkron. , jadi coroutine Performa penjadwal harus cukup tinggi. Performa penjadwalan coroutine php-msf adalah 80% dari metode panggilan balik asinkron asli. Artinya, API tertentu yang menggunakan metode penulisan panggilan balik asinkron asli memiliki QPS 10.000 penjadwal coroutine php-msf QPS penjadwalannya adalah 8000.
Saat ini, php-msf masih dalam tahap awal. Kami telah menghabiskan banyak waktu dan energi untuk memecahkan masalah stabilitas, kinerja tinggi, dan memori, karena kami percaya bahwa "landasan" adalah jaminan paling mendasar untuk "tingkat tinggi". bangunan." Hanya jika fondasinya kokoh, Hanya dengan cara inilah "bangunan" tersebut dapat dibangun "lebih tinggi". Versi 3.0 adalah versi awal open source kami dan merupakan langkah penting bagi kami. Selanjutnya, fokus kami adalah menyempurnakan kerangka layanan mikro terdistribusi.
Selain itu, karena didasarkan pada proses residen PHP dan langsung mem-parsing permintaan HTTP atau TCP, ini adalah dukungan layanan yang paling penting. Berdasarkan hal ini, kami dapat melakukan banyak ide yang tidak berani kami wujudkan sebelumnya. ada banyak ruang untuk imajinasi.
php-msf awalnya dikembangkan berdasarkan SwooleDistributed-1.7.x, dan dalam versi sumber terbuka ini, kumpulan koneksi sebagian besar menggunakan implementasi SD. Karena posisi kerangka kerja kami, skenario bisnis yang dipecahkan, persyaratan stabilitas, dan gaya pengkodean semuanya sangat berbeda, kami memutuskan untuk mengembangkan kerangka kerja layanan mikro secara mandiri. Setiap kerangka kerja memiliki karakteristik dan keunggulannya masing-masing skenario. Kerangka kerja adalah yang paling penting, dan saya ingin berterima kasih kepada White Cat untuk ini. Selain itu, selama pengembangan kerangka php-msf dan aplikasi lingkungan produksi, saya menemui banyak masalah mendasar, tetapi semuanya diselesaikan satu demi satu. satu. Hal terpenting yang dapat menyelesaikan masalah ini adalah proyek sumber terbuka Swoole. Saya ingin mengucapkan terima kasih yang sebesar-besarnya kepada pendiri Han Tianfeng-Rango atas dukungan kuatnya.
Lisensi Publik Umum GNU, versi 2 lihat https://www.gnu.org/licenses/gpl-2.0.html