easyswoole - 基于swoole扩展实现的一款高性能php框架

RPC 組件配置及使用

配置

主配置

<?php
// 構造方法內用戶可傳入 節點管理器實現類(實現 `NodeManagerInterface` 接口的類) 默認為 `MemoryManager`
$config = new \EasySwoole\Rpc\Config();

// 設置服務名稱
$config->setServerName('User'); // 默認 EasySwoole

// 設置節點id
$config->setNodeId(\EasySwoole\Utility\Random::character(10)); // 可忽略 構造函數已經設置

// 【必須設置】設置異常處理器,對 Service-Worker 和 AssistWorker 的異常進行處理,防止未捕獲導致進程退出
$config->setOnException(function (\Throwable $throwable) {

});

服務端

<?php
/** @var \EasySwoole\Rpc\Config $config */
$serverConfig = $config->getServer();

// 【必須設置】設置本機 ip 外網 或者 內網 ip 向其他服務端同步本機信息
$serverConfig->setServerIp('127.0.0.1');

// 設置工作進程數量
$serverConfig->setWorkerNum(4);

// 設置監聽地址及端口 端口可被復用
$serverConfig->setListenAddress('0.0.0.0');
$serverConfig->setListenPort('9600');

// 設置服務端最大接受包大小
$serverConfig->setMaxPackageSize(1024 * 1024 * 2);

// 設置接收客戶端數據時間
$serverConfig->setNetworkReadTimeout(3);

廣播配置

<?php
 /** @var \EasySwoole\Rpc\Config $config */
$assistConfig = $config->getAssist();

// 服務定時自刷新到節點管理器
$assistConfig->setAliveInterval(5000);

// 廣播進程設置
$serviceFinderConfig = $assistConfig->getUdpServiceFinder();

// 監聽地址和端口
$serviceFinderConfig->setEnableListen(true);
$serviceFinderConfig->setListenAddress('0.0.0.0');
$serviceFinderConfig->setListenPort(9600);

// 設置廣播地址
$serviceFinderConfig->setEnableBroadcast(true);
// 255.255.255.255 udp 廣播地址 
$serviceFinderConfig->setBroadcastAddress(['127.0.0.1:9600', '127.0.0.1:9601','255.255.255.255:9600']);
$serviceFinderConfig->setBroadcastInterval(5000); // 5s 廣播一次

// 設置廣播秘鑰 
$serviceFinderConfig->setEncryptKey('EasySwoole');

客戶端配置

<?php
// 如果只是暴露 rpc 服務 不進行調用別的rpc服務 可不用設置
/** @var \EasySwoole\Rpc\Config $config */
$clientConfig = $config->getClient();

// 傳輸最大數據包大小
$clientConfig->setMaxPackageSize(1024 * 1024 * 2);

// 設置全局回調函數  成功及失敗 $response->getStatus !== 0 全部為失敗
$clientConfig->setOnGlobalSuccess(function (\EasySwoole\Rpc\Protocol\Response $response){

});
$clientConfig->setOnGlobalFail(function (\EasySwoole\Rpc\Protocol\Response $response){

});

注冊服務

注冊 rpc 服務

EasySwooleEvent 事件 mainServerCreate 注冊

<?php

###### 配置服務端 ######
// 構造方法內用戶可傳入 節點管理器實現類(實現 `NodeManagerInterface` 接口的類) 默認為 `MemoryManager`
$config = new \EasySwoole\Rpc\Config();
// 設置服務名稱
$config->setServerName('User'); // 默認 EasySwoole
// 設置節點id,可忽略,構造函數已經設置
$config->setNodeId(\EasySwoole\Utility\Random::character(10)); // 

// 【必須設置】設置異常處理器,對 Service-Worker 和 AssistWorker 的異常進行處理,防止未捕獲導致進程退出
$config->setOnException(function (\Throwable $throwable) {

});

$serverConfig = $config->getServer();

// 【必須設置】設置本機ip
$serverConfig->setServerIp('127.0.0.1');

/** 
 * 注冊服務 
 */
$rpc = new \EasySwoole\Rpc\Rpc($config);

// 創建 ServiceOne 服務 
$serviceOne = new \EasySwoole\Rpc\Tests\Service\ServiceOne();
// 在 ServiceOne 服務中添加 ModuleOne 模塊
$serviceOne->addModule(new \EasySwoole\Rpc\Tests\Service\ModuleOne());
// 在 ServiceOne 服務中添加 ModuleTwo 模塊
$serviceOne->addModule(new \EasySwoole\Rpc\Tests\Service\ModuleTwo());

// 創建 ServiceTwo 服務 
$serviceTwo = new \EasySwoole\Rpc\Tests\Service\ServiceTwo();
// 在 ServiceTwo 服務中添加 ModuleOne 模塊
$serviceTwo->addModule(new \EasySwoole\Rpc\Tests\Service\ModuleOne());
// 在 ServiceTwo 服務中添加 ModuleTwo 模塊
$serviceTwo->addModule(new \EasySwoole\Rpc\Tests\Service\ModuleTwo());

// 添加服務到服務管理器
$rpc->serviceManager()->addService($serviceOne);
$rpc->serviceManager()->addService($serviceTwo);

// 注冊服務
$http = \EasySwoole\EasySwoole\ServerManager::getInstance()->getSwooleServer();

$rpc->attachServer($http);

Redis 節點管理器實現類(實現 NodeManagerInterface 接口即可),來完成 rpc 服務端的配置。下文將介紹使用默認節點管理器(即 MemoryManager) 完成 rpc 服務端的配置、rpc 服務的注冊及服務調用。

節點管理器

<?php
/** 節點管理器 */

// 用戶在調用rpc過程中 當發現節點不可用 可自行調用下線

// 構造方法內用戶可傳入節點管理器實現`NodeManagerInterface` 默認`MemoryManager`
$config = new \EasySwoole\Rpc\Config();
$rpc = new \EasySwoole\Rpc\Rpc($config);

$nodeManager = $rpc->getConfig()->getNodeManager();

// 獲取服務的所有節點
$nodeManager->getNodes('serviceOne', 1);

// 隨機獲取服務的一個節點
$nodeManager->getNode('serviceOne', 1);

// 下線一個服務節點
$nodeManager->offline(new \EasySwoole\Rpc\Server\ServiceNode());

// 刷新一個服務節點
$nodeManager->alive(new \EasySwoole\Rpc\Server\ServiceNode());

// 宕機一個服務節點
$nodeManager->failDown(new \EasySwoole\Rpc\Server\ServiceNode());
主站蜘蛛池模板: 上海汽车音响_上海汽车隔音降噪_上海汽车音响改装店_上海音豪 | 锁螺丝机_自动螺丝机_手持式自动锁螺丝机_自动打螺丝机-普思自动化 | 同兴科技-安徽同兴科技发展有限责任公司 | 文化艺术网-专注文化,服务艺术 温州网络公司_网站建设_网络营销策划_阿里淘宝店铺服务-温州聚欣网络科技有限公司 | 吸污车|吸粪车|冷藏车|消防车|清障车|环卫垃圾车价格|湖北程力汽车集团厂家销售公司 | 洁净室、手术室、实验室、无尘车间厂房的净化工程装修设计施工公司-福临建设 | 柱塞泥浆泵|压滤机专用泵|陶瓷泥浆泵_咸阳华星泵业有限公司 | 铸铁平台,三维柔性焊接平台,划线平台,大理石平台,检验平板,花岗石平台_泊头市恒量机械设备有限公司 | 深圳汽车贴膜_深圳全车车身改色贴膜|UPPF隐形车衣官网 | 水暖毯厂家-水暖毯配件-河北鑫政扬家用电器有限公司 | 深圳市佳顺优印印刷有限公司,佳顺优印,画册印刷,海报印刷,封套印刷,手提袋印刷,包装盒印刷,彩盒印刷,无碳纸印刷,不干胶印刷,信封印刷,便笺印刷,笔记本印刷,台历印刷,挂历印刷,国际会展中心附近印刷厂,宝安印刷厂,宝安教材印刷厂 | 上海婺川实业有限公司| 盆底肌修复仪器-产后康复脉冲磁训练仪-南京佳澜健康管理有限公司 | 深圳市佳顺优印印刷有限公司,佳顺优印,画册印刷,海报印刷,封套印刷,手提袋印刷,包装盒印刷,彩盒印刷,无碳纸印刷,不干胶印刷,信封印刷,便笺印刷,笔记本印刷,台历印刷,挂历印刷,国际会展中心附近印刷厂,宝安印刷厂,宝安教材印刷厂 | 印刷公司,北京印刷厂,宣传画册手册印刷厂-和智印彩页设计 | 机械配件加工_数控车床加工_零件加工_精密件加工_cnc加工定制—深圳精密机械加工 | 煤炭烘干机|煤泥烘干机|矿泥烘干机|酒糟烘干机|果渣烘干机-东鼎干燥官方网站 | 真空上料机_加料机_天津自动上料机_投料站_包装机加料_吸料机_粉体称重-天津市飞云粉体设备有限公司 | 开关柜无线测温_电缆接头测温系统_六氟化硫sf6气体泄漏报警监测_卫星同步时钟-山东正瑞电子有限公司 | 西安男科医院_陕西男性专科医院_陕西老医协生殖医学医院【官网】 | 湖南九农王机电设备有限公司官网| 徐州户外广告,标识标牌,展陈空间,精神堡垒-徐州雅努思文化发展有限公司 | 苏州西服定制,西装定做时尚职业装品牌-尊羿西服定做网 | 兔展-H5页面制作、微信营销活动一站式企业营销数字化增长平台 | 天津印刷_天津印刷厂_天津印刷公司_天津包装盒厂家_天津包装盒印刷厂_七层共挤膜厂家_彩色印刷_画册印刷_礼品盒定做 _七层共挤膜_食品真空袋-欢迎访问嘉联包装官网! | 喷雾干燥机价格|小型喷雾干燥机|实验室喷雾干燥机厂家-那艾 | 智能调光模块,调光系统巨川电气-专注智能照明 | 芯片_IC_半导体品牌一级代理商-深圳市合通泰电子有限公司 | 矿用精确定位系统,井下4G无线通讯系统,工作面集控系统,皮带保护系统-山东新云鹏电气有限公司 | 重大事件回顾:三亚哪里可以打炮?2025年最全实战攻略带你玩转真枪射击 | 双效-多效-三效-废水-污水蒸发器_离心喷雾-污泥干燥机_蒸发浓缩器【天辰环保 】 | 南山荔枝,深圳南荔农业荔枝园自销-质保优放心选购 | 日本国际高中_上海日本国际高中学校排名_日本国际高中留学课程_上海日语国际高中学校学费-上海工程技术大学国际多语种特色高中课程【官网】 | 陕西教师资格网-陕西教师资格考试网 | 聚丙烯酰胺,聚合氯化铝,重金属捕捉剂,污泥调理剂,活性氧化铝,生石灰,反渗透阻垢剂,工业葡萄糖,硫酸铝,果壳活性炭,柱状活性炭,蜂窝活性炭,石英砂,锰砂-北京雁归来环保科技有限公司-以真诚为立足之本,以质量为生存之本,愿与海内外同仁共创双赢。雁归来人一路走来,气贯长虹,勇锐盖过怯弱,进取压倒苟安!我们紧扣时代脉搏,专注水处理、继往开来! | 苏州交通设施_道路划线_停车场划线_厂区划线_环氧地坪厂家-推荐【飞扬市政交通设施公司】专注交通设施8年! | 宿迁代账公司,专业会计查账,代理工商注册,商标注册,专利申请,公司注册哪家好-中方会计事务所 | 企业旺旺-qy55.com| 深圳物流公司_深圳物流_深圳物流专线-旺通达物流 | 暖气片厂家_散热器厂家_力春散热器 | 宁波雷豹机电科技有限公司|雷豹冷风机|雷豹工业大风扇|MFC18000|MFC16000|MFC6000|EF3622|EF4222|EF4822|移动工业蒸发式冷风机空气冷却器|大型工业空调扇|雷豹移动式工业大风扇|雷豹大风扇|生产厂家|公司官网 |