日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

ThinkPHP8框架集成Swoole實現高性能RPC服務

來源: 責編: 時間:2024-07-02 17:37:07 164觀看
導讀介紹RPC 即遠程過程調用(Remote Procedure Call),是一種分布式計算技術,允許一個程序在不同的計算機上調用另一個程序的函數或方法,就像調用本地程序中的函數一樣簡單。RPC 隱藏了底層網絡通信的細節,使得開發者能夠像處理

介紹

RPC 即遠程過程調用(Remote Procedure Call),是一種分布式計算技術,允許一個程序在不同的計算機上調用另一個程序的函數或方法,就像調用本地程序中的函數一樣簡單。RPC 隱藏了底層網絡通信的細節,使得開發者能夠像處理本地調用一樣處理遠程調用。NSQ28資訊網——每日最新資訊28at.com

圖片NSQ28資訊網——每日最新資訊28at.com

分布式調用

解決分布式系統中,服務之間的調用問題。遠程調用時,要能夠像本地調用一樣方便,讓調用者感知不到遠程調用的邏輯。節點角色:NSQ28資訊網——每日最新資訊28at.com

  • Server: 暴露服務的服務提供方
  • Client: 調用遠程服務的服務消費方
  • Registry: 服務注冊與發現的注冊中心

Think-Swoole 中已經實現了的基于 TCP 的 PRC,這樣我們使用傳統型框架也可以做簡單的分布式架構應用了。NSQ28資訊網——每日最新資訊28at.com

PHP 擴展安裝

  • 已經編譯安裝 Swoole 擴展
  • 不能安裝 Xdebug 擴展

依賴包安裝

composer require topthink/think-swoole

安裝完成后會在項目 config 配置目錄生成 swoole 配置文件 swoole.phpNSQ28資訊網——每日最新資訊28at.com

服務端

以下配置都是在config/swoole.php 配置文件中配置NSQ28資訊網——每日最新資訊28at.com

HTTP 服務配置

圖片圖片NSQ28資訊網——每日最新資訊28at.com

開啟 RPC 并注冊服務

1、配置NSQ28資訊網——每日最新資訊28at.com

圖片圖片NSQ28資訊網——每日最新資訊28at.com

2、定義 RPC 接口抽象方法NSQ28資訊網——每日最新資訊28at.com

圖片NSQ28資訊網——每日最新資訊28at.com

3、定義 RPC 服務類,繼承 RPC 接口NSQ28資訊網——每日最新資訊28at.com

<?phpdeclare(strict_types=1);namespace app/rpc/service;use app/rpc/contracts/UserInterface;class UserSerivce implements UserInterface{    public function add($name)    {        return "【修改】你添加名稱是:" . $name;    }    public function list()    {        return "list";    }}

為什么一定要寫 interface,不直接實現功能?NSQ28資訊網——每日最新資訊28at.com

think/swoole/rpc/server/Dispatcher下prepareServices方法看下就懂 (系統定義就必須要這么寫) 自我理解 這么寫的好處 大型項目經理直接寫完下面實現。NSQ28資訊網——每日最新資訊28at.com

開啟服務(服務端)

# php think swoole startStarting swoole http server...Swoole http server started: <http://0.0.0.0:8787>You can exit with `CTRL-C`

客戶端

以下配置都是在config/swoole.php 配置文件中配置NSQ28資訊網——每日最新資訊28at.com

HTTP 服務配置

圖片圖片NSQ28資訊網——每日最新資訊28at.com

配置 RPC 文件配置服務端連接信息

1、配置文件NSQ28資訊網——每日最新資訊28at.com

圖片圖片NSQ28資訊網——每日最新資訊28at.com

2、執行命令生成 RPC 服務接口NSQ28資訊網——每日最新資訊28at.com

php think rpc:interface

以上命令執行成功后,會在項目 app 下生成一個rpc.php的文件,它就是 RPC 服務接口調用文件了。rpc.php 文件內容NSQ28資訊網——每日最新資訊28at.com

<?php/** * This file is auto-generated. */declare(strict_types=1);namespace rpc/contract/userservice;interface UserInterface{ public function add($name); public function list();}return ['userservice' => ['rpc/contract/userservice/UserInterface']];

注意看下最后的 return 中,就是每個服務接口的命名空間了;在控制器中使用該命名空間實例對象就可以調用NSQ28資訊網——每日最新資訊28at.com

3、實際調用過程NSQ28資訊網——每日最新資訊28at.com

圖片圖片NSQ28資訊網——每日最新資訊28at.com

參考代碼NSQ28資訊網——每日最新資訊28at.com

use rpc/contract/userservice/UserInterface;...public function rpctest(UserInterface $userInterface){ return $userInterface->add('Tinywan');}

4、客戶端請求訪問NSQ28資訊網——每日最新資訊28at.com

圖片圖片NSQ28資訊網——每日最新資訊28at.com

熱更新

由于Swoole服務運行過程中 PHP 文件是常駐內存運行的,這樣可以避免重復讀取磁盤、重復解釋編譯 PHP,以便達到最高性能。所以更改業務代碼后必須手動reload或者restart才能生效。NSQ28資訊網——每日最新資訊28at.com

think-swoole擴展提供了熱更新功能,在檢測到相關目錄的文件有更新后會自動reload,從而不需要手動進行reload操作,方便開發調試。NSQ28資訊網——每日最新資訊28at.com

如果你的應用開啟了調試模式,默認是開啟熱更新的。原則上,在部署模式下不建議開啟文件監控,一方面有性能損耗,另外一方面對文件所做的任何修改都需要確認無誤才能進行更新部署。NSQ28資訊網——每日最新資訊28at.com

熱更新的默認配置如下:NSQ28資訊網——每日最新資訊28at.com

當我們在應用的根目錄下定義一個特殊的.env環境變量文件,里面設置了APP_DEBUG = true會默認開啟熱更新,你也可以直接把enable設置為 true。NSQ28資訊網——每日最新資訊28at.com

錯誤

錯誤一 與 xdebug 沖突NSQ28資訊網——每日最新資訊28at.com

Swoole/Server::start(): Using Xdebug in coroutines is extremely dangerous

php 擴展 xdebug 和 easyswoole 沖突,報警告,此時需要禁用 php 的 xdebug 擴展即可NSQ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-98193-0.htmlThinkPHP8框架集成Swoole實現高性能RPC服務

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 構建工程化:各類語言項目配置Supervisor

下一篇: 聊聊大文件分片上傳和分片下載

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網課,網課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業又有了新的發展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學習反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • 一年經驗在二線城市面試后端的經驗分享

    忠告這篇文章只適合2年內工作經驗、甚至沒有工作經驗的朋友閱讀。如果你是2年以上工作經驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內容來自 「升職加薪」星球星友 的投稿,坐
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • SN570 NVMe SSD固態硬盤 價格與性能兼具

    SN570 NVMe SSD固態硬盤是西部數據發布的最新一代WD Blue系列的固態硬盤,不僅閃存技術更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 主站蜘蛛池模板: 万荣县| 康乐县| 三河市| 伊金霍洛旗| 新乡县| 如东县| 邓州市| 许昌市| 三门县| 五河县| 和田市| 垣曲县| 余江县| 伽师县| 岳西县| 出国| 建宁县| 舒城县| 洪雅县| 虹口区| 罗甸县| 嘉义县| 建湖县| 东明县| 英吉沙县| 常山县| 莱州市| 濮阳县| 盘锦市| 无锡市| 榆林市| 固安县| 昂仁县| 巴南区| 旌德县| 东港市| 永兴县| 石景山区| 汤原县| 吉隆县| 乌鲁木齐市|