摘要:最佳實踐一構(gòu)建是一個專門針對應(yīng)用層而生的一個應(yīng)用框架,提供良好的中間件,路由以及支持?jǐn)U展運行,從而具體良好的性能條件。手動創(chuàng)建添加路由地址調(diào)用完成最第一個路由。緩存也是一個前置中間件,使用方式與日常操作保持一致。
FastD 最佳實踐一: 構(gòu)建 API
FastD 是一個專門針對 API 應(yīng)用層而生的一個 PHP 應(yīng)用框架,提供良好的中間件,路由以及支持 swoole 擴展運行,從而具體良好的性能條件。
創(chuàng)建項目composer create-project fastd/dobee api -vvv
創(chuàng)建一個為 API 的項目。
運行第一個程序進入命令行模式
php -S localhost:9876 -t web
訪問 localhost:9876
{ "msg":"hello dobee" }執(zhí)行流程
點擊: FastD設(shè)計詳解
實現(xiàn)第一個路由通過命令行
php bin/console controller:create {name}
命令行會自動創(chuàng)建 CURD 多個操作方法,由開發(fā)者手動添加操作邏輯。
手動創(chuàng)建
MeController.php
"janhuang" ]); } }
get("/", "WelcomeController@welcome"); route()->get("/hello/{name}", "WelcomeController@sayHello"); route()->get("/who", "MeController@me");
curl -i http://127.0.0.1:9876/who
response
{ "name": "janhuang" }
完成最第一個路由。
給應(yīng)用添加單元測試我仍熱認(rèn)為測試是一個非常重要的環(huán)節(jié),也是一個優(yōu)秀開發(fā)者一個重要品質(zhì)之一。
如果其中涉及數(shù)據(jù)庫測試,可以參考: 數(shù)據(jù)庫測試
request("GET", "/"); $response = $this->app->handleRequest($request); $this->isSuccessful($response); } }
可以給你的應(yīng)用API添加格式各樣的測試,來驗證程序的有效性。
給 API 添加公共緩存何為公共緩存?
公共緩存的靈感來自于 varnish,當(dāng)用戶發(fā)起非 GET 請求的時候,進行緩存處理并返回(如果有的話),其他請求一律穿透,交給底層處理。
緩存也是一個前置中間件,使用方式與日常操作保持一致。
文檔: 中間件
config/app.php
[ // code "common.cache" => [FastDMiddlewareCacheMiddleware::class] ], ];
config/routes.php
get("/", "WelcomeController@welcome"); route()->get("/hello/{name}", "WelcomeController@sayHello"); route()->get("/who", "MeController@me")->withMiddleware("common.cache");
完成配置后,請求路由地址
curl -i http://localhost:9876/who HTTP/1.1 200 Host: localhost:9876 Connection: close X-Powered-By: PHP/7.0.0 Content-Type: application/json; charset=UTF-8 X-Cache: ee4d94f352cb03116b61ce9158720ebf Expires: Tue, 08 Aug 2017 10:58:21 GMT
會產(chǎn)生 X-Cache 新的響應(yīng)頭,用于代表緩存生效。
Basic Auth大部分 API 中,都需要對請求來源進行一定的鑒權(quán)處理,由于框架已經(jīng)集成了簡單的 Basic auth,使用方法與上述保持一致。
get("/", "WelcomeController@welcome"); route()->get("/hello/{name}", "WelcomeController@sayHello"); route()->get("/who", "MeController@me")->withMiddleware(["basic.auth", "common.cache"]);為 API Server 加速
眾所周知,swoole 為 PHP 提供了良好的性能體驗和網(wǎng)絡(luò)通信體驗,而框架中也無縫整合 swoole,為框架、服務(wù)提供良好體驗做了一個鋪墊,現(xiàn)在,你只需要配置IP、端口、swoole常用配置,即可無痕啟動以 swoole 服務(wù)器,為你的 API Server 進行加速處理。
config/server.php
* @copyright 2016 * * @link https://www.github.com/janhuang * @link http://www.fast-d.cn/ */ return [ "host" => "http://".get_local_ip().":9527", "class" => FastDServitizationServerHTTPServer::class, "options" => [ "user" => "nobody", "group" => "nogroup", "pid_file" => __DIR__ . "/../runtime/pid/" . app()->getName() . ".pid", "log_file" => __DIR__ . "/../runtime/logs/" . app()->getName() . ".pid", "log_level" => 5, "worker_num" => 10, "task_worker_num" => 20, ], "processes" => [ ], "listeners" => [ ], ];
get_local_ip 函數(shù)為了默認(rèn)或者本地內(nèi)網(wǎng)ip,如果你的API是對外開放的,請修改為您的外網(wǎng)ip或者 0.0.0.0。
options 參數(shù)為 swoole 擴展配置參數(shù)。請參考: swoole配置
php bin/server start
php bin/server start -d
php bin/server stop
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25611.html
摘要:我們需要將業(yè)務(wù)或服務(wù)放置在網(wǎng)關(guān)背后,由網(wǎng)關(guān)統(tǒng)一處理請求入口,本身由多個入口的處理變成了一個入口,由網(wǎng)關(guān)進行統(tǒng)一調(diào)度。網(wǎng)關(guān)負(fù)責(zé)來搞這些事情,你只需要知道網(wǎng)關(guān)就好了。 構(gòu)建完成 API 服務(wù),配置中心之后,架構(gòu)圖大致如下: showImg(https://segmentfault.com/img/remote/1460000010676395); 我們?yōu)楹涡枰W(wǎng)關(guān) 引用 別人 的一句話: ...
摘要:點擊前往中文地址先決條件簡單安裝下載地址下載或者其他都可以。版本處理方案新建格式日志文件。配置日志會隨著配置進行生成,結(jié)果如下忽略上述日志內(nèi)容,程序看得懂即可配置推送到需要根據(jù)業(yè)務(wù)場景進行配置,現(xiàn)在顯示最簡單的配置。 過去咱們開發(fā)中,對日志這個環(huán)節(jié)其實并不太重視,直到有一天,應(yīng)用出現(xiàn)異常,這個時候才想起來日志,但很可惜,為時已晚。 咱們做運維和開發(fā),除了救火,還需要防火,因此一些防范的...
摘要:過去專門做了一篇文檔來構(gòu)建配置中心,基于的配置中心。環(huán)境要求及構(gòu)建步驟可參考搭建配置中心隨著業(yè)務(wù)增長,部署的機器可能會隨著增長,增加配置難度和維護難度。最終架構(gòu)圖如下無論擴展多少個業(yè)務(wù)應(yīng)用,僅需要一個配置中心即可完成多處配置修改。 過去專門做了一篇文檔來構(gòu)建配置中心,基于 zookeeper 的配置中心。 環(huán)境要求及構(gòu)建步驟可參考: QConf搭建配置中心 隨著業(yè)務(wù)增長,部署的機器可能...
摘要:的展示非常炫酷,絕對是運維提升逼格的一大利器。另外的可視化功能比強得多,而且以上版本將集成報警功能。它由寫成,著力于高性能地查詢與存儲時序型數(shù)據(jù)。被廣泛應(yīng)用于存儲系統(tǒng)的監(jiān)控數(shù)據(jù),行業(yè)的實時數(shù)據(jù)等場景。 原有監(jiān)控系統(tǒng) showImg(https://segmentfault.com/img/remote/1460000011082384); 整個系統(tǒng)以 Graphite (carbon ...
摘要:調(diào)整配置文件在選項中,追加即可。有了以上系統(tǒng)常規(guī)監(jiān)控日志集中分析應(yīng)用調(diào)用鏈監(jiān)控,我們的業(yè)務(wù)就可以變得更加透明,清晰,可控。相關(guān)文章最佳實踐四構(gòu)建系統(tǒng)可視化監(jiān)控最佳實踐五構(gòu)建日志分析 zipkin是一個開放源代碼分布式的跟蹤系統(tǒng),由Twitter公司開源,它致力于收集服務(wù)的定時數(shù)據(jù),以解決微服務(wù)架構(gòu)中的延遲問題,包括數(shù)據(jù)的收集、存儲、查找和展現(xiàn)。它的理論模型來自于Google Dappe...
閱讀 1060·2021-10-19 11:42
閱讀 3009·2021-09-10 10:51
閱讀 717·2021-09-09 09:33
閱讀 1800·2021-09-01 10:43
閱讀 2799·2019-08-30 12:43
閱讀 3545·2019-08-30 11:24
閱讀 2174·2019-08-30 10:56
閱讀 2804·2019-08-29 11:00