並行的RPC架構_PHP教程

來源:互聯網
上載者:User
Yar(yet another RPC framework, 教主問我為啥都是Ya打頭, 呵呵, 因為這樣名字好起)是我在3個多月前, 為瞭解決一個實際的問題, 而開發的一個PHP擴充的, RPC架構, 和現有的RPC架構(xml-rpc, soap)不同, 這是一個輕量級的架構, 支援多種打包協議(msgpack, json, php), 並且最重要的一個特點是, 它是可並行化的..

考慮如下的情境:

傳統的Web應用, 一個進程, 一個請求, 天經地義. 然而, 當一個請求的處理中, 涉及到多出資料來源, 並且他們之間具有一定的不依賴性.

還是傳統的Web應用, 一個應用隨著業務快速增長, 開發人員的流轉, 就會慢慢的進入一個惡性迴圈, 代碼量上只有加法沒有了減法. 因為隨著系統變複雜, 牽一髮就會動全域, 而新來的維護者, 對原有的體系並沒有那麼多時間給他讓他全面掌握. 即使有這麼多時間, 要想掌握以前那麼多的維護者的思維的結合, 也不是一件容易的事情…

那麼, 長次以往, 這個系統將會越來越不可維護…. 到一個大型應用進入這個惡性迴圈, 那麼等待他的只有重構了.

那麼, 能不能對這個系統做解耦呢?

我們已經做了很多解耦了, 資料, 中介軟體, 業務, 邏輯, 等等, 各種分層. 但到Web應用這塊, 還能怎麼分呢, MVC我們已經做過了….

基於此, Yar或許能解決你遇到的這倆個問題…

Yar是一個非常輕量級的RPC架構, 我在實現Yar的時候, 追求了極致的輕量級, 它使用非常簡單, 對於Server端:

 
  1. class API {
  2. /**
  3. * the doc info will be generated automatically into service info page.
  4. * @params
  5. * @return
  6. */
  7. public function api($parameter, $option = "foo") {
  8. }
  9. protected function client_can_not_see() {
  10. }
  11. }
  12. $service = new Yar_Server(new API());
  13. $service->handle();
  14. ?>

和Soap使用方法很相像吧? 是的, 就這樣, 你的API類就可以對外提供服務了..

Yar為了方便開發, 把文檔和介面綁定到了一起, 對於上面的例子, 如果我們是簡單的GET請求這個介面地址的話, 我們就會看到如下的資訊頁面:


http://www.bkjia.com/PHPjc/445651.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445651.htmlTechArticleYar(yet another RPC framework, 教主問我為啥都是Ya打頭, 呵呵, 因為這樣名字好起)是我在3個多月前, 為瞭解決一個實際的問題, 而開發的一個PHP擴充...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.