摘要:前言一直以來,因為標準應用方式是配合或使用,而被認為不適合做服務化后端。下面我就介紹如何用來搭建一個高性能的服務化后端框架,并且實現(xiàn)一個客戶端調用例子。服務端我使用的框架叫,地址在這里。
前言
一直以來,PHP 因為標準應用方式是配合 php-fpm 或 apache mod 使用,而被認為不適合做服務化后端。但是隨著 Workerman 和 Swoole 這些常駐進程模塊的出現(xiàn),PHP 其實早就已經(jīng)合格。
下面我就介紹如何用 PHP 來搭建一個高性能的服務化后端框架,并且實現(xiàn)一個客戶端調用例子。
服務端現(xiàn)在 PHP 圈子里最流行的框架是 Laravel, Lumen 是它的精簡版,保留了 Container(依賴注入), artisan(命令行生成數(shù)據(jù)表)等優(yōu)點。
服務端我使用的框架叫 Luke,Github 地址在這里。Luke 是 Lumen 的非官方分支,在 Lumen 上層做了一層封裝,剝離了用于 http 的路由,同時引入 Workerman。
現(xiàn)在在你的工作目錄執(zhí)行下面命令生成項目代碼
composer create-project luke/luke=dev-luke rpcserver cd rpcserver
這時在 servers 目錄下有 http.php 和 jsonrpc.php 兩個文件,分別對應 http 服務 和 jsonrpc 服務?,F(xiàn)在我們進入 rpcserver/app/Http/Controllers,編輯文件 ExampleController.php,增加下面代碼
public function show($name) { return "Hello $name, this is Luke."; }
這樣我們服務端就已經(jīng)搭建好了,現(xiàn)在回到 rpcserver 目錄,執(zhí)行下面命令開啟服務
php servers/jsonrpc.php start
這時 console 會輸出
Workerman[servers/jsonrpc.php] start in DEBUG mode ----------------------- WORKERMAN ----------------------------- Workerman version:3.5.4 PHP version:7.2.1 ------------------------ WORKERS ------------------------------- user worker listen processes status simon none jsonNL://0.0.0.0:8000 1 [OK] ----------------------------------------------------------------
表示服務正在正常運行。
本例子只給 Workerman 一個任務進程,更多設置和守護進程方式可以查看 Workerman文檔
客戶端現(xiàn)在我們回到項目根目錄,另開一個 console,輸入下面命令新建客戶端目錄,引入模塊
mkdir client cd client composer require luke/client
這時 vendor/luke/client 目錄下已經(jīng)有了兩個文件 config.php 和 test.php,他們分別是配置和客戶端的例子。我們不管他們,在項目目錄下新建 test.php 文件,輸入下面的代碼并保存
[ "hosts" => ["127.0.0.1:8000"] ] ]; Client::config($config); $client = Client::instance("Example"); $ret = $client->show("開發(fā)者"); var_dump($ret);
現(xiàn)在執(zhí)行
php test.php
如果看到輸出
array(1) { "result" => string(30) "Hello 開發(fā)者, this is Luke." }
那么恭喜你!你的 rpc 服務端和客戶端已經(jīng)搭建好了?,F(xiàn)在將它應用到正式項目中吧。
Workerman 與 Swoole作為 PHP 的常駐方案,兩個都非常優(yōu)秀,而 Swoole 在社區(qū)的活躍度比 Workerman 高。但因為兩者性能不分伯仲,而且 Workerman 是用純 PHP 開發(fā),代碼更為可控,因此 Luke 選擇了 Workerman。然而兩者在調用方式非常接近,只要對代碼稍加修改就能改成使用 Swoole。
Workerman 的并發(fā)性能可以參考這里
后記在生產環(huán)境使用服務化架構,通信部分除了協(xié)議外,還要注意加密。這部分 Luke 現(xiàn)在還沒有提供,用戶可以用簡單的加密算法自己實現(xiàn)。
當服務變多后,還需要添加自動發(fā)現(xiàn)的功能,這點在 Luke Client 的項目主頁提供了一些思路。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/28186.html
摘要:菜鳥教程框架中文手冊入門目標使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學習指北 了解一下一下概念. RESTful API標準] 所有的API都遵循[RESTful API標準]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關資料. 阮一峰:理解RESTful架構 阮一峰:RESTful API 設計指南 RESTful API指南 依賴注入 D...
摘要:菜鳥教程框架中文手冊入門目標使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學習指北 了解一下一下概念. RESTful API標準] 所有的API都遵循[RESTful API標準]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關資料. 阮一峰:理解RESTful架構 阮一峰:RESTful API 設計指南 RESTful API指南 依賴注入 D...
摘要:菜鳥教程框架中文手冊入門目標使用搭建通過對數(shù)據(jù)增刪查改沒了純粹占行用的拜 后端API入門學習指北 了解一下一下概念. RESTful API標準] 所有的API都遵循[RESTful API標準]. 建議大家都簡單了解一下HTTP協(xié)議和RESTful API相關資料. 阮一峰:理解RESTful架構 阮一峰:RESTful API 設計指南 RESTful API指南 依賴注入 D...
摘要:一步一步教你基于搭建自己的個人博客,作為成熟的框架,美觀,方便,插件多,更新頻繁,非常適合個人博客與網(wǎng)站的搭建,適合新手,無需太多的代碼基礎。原文鏈接手把手教你搭建自己的網(wǎng)站購買購買云服務器為了搭建個人網(wǎng)站,首先肯定需要一個云服務器。 一步一步教你基于WordPress搭建自己的個人博客,WordPress作為成熟的CMS框架,美觀,方便,插件多,更新頻繁,非常適合個人博客與網(wǎng)站的搭建...
摘要:通過跟蹤請求的處理過程,來對應用系統(tǒng)在前后端處理服務端調用的性能消耗進行跟蹤,關于的介紹可以看這個鏈接,大規(guī)模分布式系統(tǒng)的跟蹤系統(tǒng)作者刀把五鏈接來源知乎著作權歸作者所有。 手把手教你搭APM之Skywalking 前言 什么是APM?全稱:Application Performance Management 可以參考這里: 現(xiàn)代APM體系,基本都是參考Google的Dapper(大規(guī)模...
閱讀 2886·2023-04-25 23:08
閱讀 1700·2021-11-23 09:51
閱讀 1699·2021-10-27 14:18
閱讀 3175·2019-08-29 13:25
閱讀 2896·2019-08-29 13:14
閱讀 3040·2019-08-26 18:36
閱讀 2261·2019-08-26 12:11
閱讀 875·2019-08-26 11:29