dubbo-php-framework
lcli
这个作者很懒,什么都没留下…
展开
-
dubbo-php-framework介绍
dubbo-php-framework(https://github.com/dubbo/dubbo-php-framework)是由深圳乐信(http://www.lexinfintech.com)公司开源的用于php语言的RPC通讯框架,与dubbo在协议上完全兼容,可同时作为provider端和consumer端,使用zookeeper用于服务注册发现,序列化使用fastjson,底层网络通...原创 2018-09-11 13:05:09 · 6705 阅读 · 0 评论 -
dubbo-php-framework的服务注册zookeeper过程解析(一)
我们在分析BaseServer的onManagerStart回调函数时,看到有调用Provider注册到zookeeper的过程,这篇我们详细解析下这个过程。//app启动后向zookeeper注册服务信息FSOFRegistry::instance()->setParams($this->processName, $this->config, $this->por...原创 2018-09-18 08:26:12 · 702 阅读 · 0 评论 -
dubbo-php-framework的服务注册zookeeper过程解析(二)
我们接着dubbo-php-framework的服务注册zookeeper过程解析(一)继续分析剩下的接口。//创建zk service,这里的zk service也是封装过的,不是原生zk的service,我们后续分析。protected function createZookeeperService() { $ret = false; if(isset($this->c...原创 2018-09-18 08:26:20 · 295 阅读 · 0 评论 -
dubbo-php-framework的客户端api解析(一)
从这篇,我们开始分析客户端的侧的流程,所谓客户端就是指dubbo-php-frame框架中consumer端,我们结合demo来看看consumer的调用流程,下面代码路径为dubbo-php-framework-master/demo/demo-consumer/server/Consumer.php<?php$APP_SRC_PATH = __DIR__;$fsofApiPat...原创 2018-09-23 11:01:19 · 922 阅读 · 0 评论 -
dubbo-php-framework的客户端api解析(二)
这篇我们开始解析ProxyFactory的流程,这个类重点完成了客户端生成代理的流程,其路径为dubbo-php-framework-master/consumer/proxy/ProxyFactory.php,我们接着dubbo-php-framework的客户端api解析(一)中的调用进入流程。//设置配置信息public static function setConsumerConf...原创 2018-09-23 11:50:28 · 597 阅读 · 0 评论 -
dubbo-php-framework的客户端api解析(四)
这里我们分析api建立网络连接的过程,从dubbo-php-framework的客户端api解析(三)中可以看到其调用入口为:protected function connectProvider($host, $port, $iotimeout) { try { $start_time = microtime(true);//取...原创 2018-09-23 14:33:14 · 283 阅读 · 0 评论 -
dubbo-php-framework的服务注册zookeeper过程解析(三)
我们从前面两篇服务注册zookeeper的过程可以看出,实际注册流程发生在zkService中,而zkService是通过RegistryFactory的getRegistry获取的,这篇文章我们分析这个getRegistry的过程和一系列和zk注册相关的流程,这里注册时封装层数很深,没理解为什么要这么封装,我们就按代码解析。class RegistryServiceFactory{ ...原创 2018-09-18 22:47:15 · 380 阅读 · 0 评论 -
dubbo-php-framework的服务注册zookeeper过程解析(四)
通过前面几篇zk注册流程的解析,可以看到注册到zk时都是通过封装为FsofUrl对象来操作的,这个类主要实现了dubbo协议的封装,dubbo协议采用的是url协议,类似http url的方式,大家也可以提前了解下dubbo协议格式,dubbo在zk中存储中provider的信息时,路径的格式为:/dubbo/***/providers ,其中****是服务的地址(如com.foo.BarServ...原创 2018-09-19 08:32:37 · 664 阅读 · 0 评论 -
dubbo-php-framework控制台provider_admin启动服务过程解析(1)
接着上一篇provider_admin的全局分析,这篇主要介绍Provider的start过程,对应到provider_admin的start过程,而startall也就是通过获取所有的provider后for循环执行start过程,不再单独分析。//startall实现,摘取自provider_admin.php的121行处else if ("startall" == $cmd){ ...原创 2018-09-14 23:30:52 · 334 阅读 · 0 评论 -
dubbo-php-framework控制台provider_admin启动服务过程解析(2)
接着dubbo-php-framework控制台provider_admin启动服务过程解析(1),我们遗留了进程实际的运行过程,对应到代码如下://启动脚本路径,整个展开为dubbo-php-framework/provider/shell/StartUp.php $startUpPath = dirname(FSOF_ROOT_PATH)."/provider/shell/StartU...原创 2018-09-15 08:10:10 · 324 阅读 · 0 评论 -
dubbo-php-framework控制台provider_admin其他操作解析
通过前面两篇文章分析了provider_admin里面服务启动过程,这篇我们把剩下的几个操作的实现做介绍,这里主要介绍stop,reload这两个操作,其他的动作status,list,restart等,不展开具体分析。先介绍stop过程。//停止单个应用function stopProvider($name){ //获取应用master进程ID $masterPid = ge...原创 2018-09-15 08:31:38 · 252 阅读 · 0 评论 -
dubbo-php-framework的数据包的解包和组包逻辑解析
前面分析了框架的请求和回复实体的封装,而在进行底层网络通信时,需要进行解包(收到数据)和组包(发送数据),框架底层使用了dubbo协议,数据序列化方式是json格式,这篇文章我们就重点看看解包和组包的逻辑,这部分逻辑在DubboParser类中完成,这个类定义在dubbo-php-framework-master/common/protocol/fsof/DubboParser.php文件中。...原创 2018-09-18 08:26:04 · 680 阅读 · 4 评论 -
dubbo-php-framework的请求回复实体解析
经过前面Protocol的分析,我们已经知道框架在处理请求和回复时都是通过封装为DubboRequest和DubboResponse来做,这篇我们就开始分析DubboRequest和DubboResponse的流程。class DubboRequest{ //包头字段 private $twoWay = true; private $heartbeatEvent =...原创 2018-09-17 08:28:22 · 304 阅读 · 0 评论 -
dubbo-php-framework的Protocol解析(四)
接着上面一篇我们分析正常请求的处理过程。private function requestProcessor($client_id, $request) { //开始执行时间 $request->startTime = microtime(true); //监控请求数量 $this->server->getAppMonitor()->onRequest...原创 2018-09-16 23:06:28 · 282 阅读 · 0 评论 -
dubbo-php-framework控制台provider_admin解析
结合上一篇的简介,这篇开始分析服务的启动过程,从上篇文章可以知道,启动服务是通过provider_admin去控制的,对应到代码就是bin目录,bin目录下有app_admin.php和restartall.sh,而restartall.sh的实现,就是遍历机器上所有的provider进程名,然后调用app_admin.php完成重启,故我们就分析app_admin的过程。<?php...原创 2018-09-11 20:37:46 · 494 阅读 · 0 评论 -
dubbo-php-framework的配置文件相关解析
在做provider_admin的过程中,大家可以发现有比较多框架相关的配置文件和框架运行过程中的文件操作,这篇文章集中讨论下这些文件的操作,总的文件分下面的几类,其中和应用相关的按框架提供的example应用举例。1、框架的全局配置文件,文件路径为dubbo-php-framework-master/config/global/conf/fsof.ini,这里配置了全局的一些信息。2、用...原创 2018-09-15 23:11:45 · 514 阅读 · 0 评论 -
dubbo-php-framework的TcpServer解析(一)
在之前文章中解析provider_admin的start流程时,分析到了最终调用TcpServer的run方法启动Provider应用。这篇开始我们分析TcpServer的相关方法和核心流程体系,TcpServer代码位于dubbo-php-framework-master/provider/core/server/TcpServer.php中。从TcpServer的继承体系可以看出,TcpS...原创 2018-09-16 11:10:44 · 501 阅读 · 0 评论 -
dubbo-php-framework的TcpServer解析(二)
虽然这篇文章的标题是TcpServer的解析,但是从解析第一篇文件可以知道,TcpServer的很多方法都是继承自BaseServer,所以我们重点介绍BaseServer中的方法。//加载app root目录下的bootstrap.php和provider/$name.provider文件//setRequire的参数file就是定义在应用.deploy配置文件中的root参数所指的信息...原创 2018-09-16 11:24:21 · 189 阅读 · 0 评论 -
dubbo-php-framework的TcpServer解析(三)
经过前面两篇文章的分析,我们分析到了Provider启动时初始化Consumser的地方,也就是initConsumer过程,我们继续分析。public function initConsumer(){ //初始consumer,其中app_name表示Provider应用名称信息,而app_src表示应用所在的Bootstrap文件路径信息的上级目录,也就是用demo为列则是dubbo...原创 2018-09-16 12:08:37 · 290 阅读 · 0 评论 -
dubbo-php-framework的TcpServer解析(四)
这篇文章我们继续分析BaseServer的启动相关的方法,这里先分析BaseServer的initRunTime方法,这里很多都是前面配置信息设置到BaseServer对象的属性中,字段也比较明确,不再展开太具体的分析。//初始化运行环境,runPath值为/var/fsof/providerpublic function initRunTime($runPath) { if (!e...原创 2018-09-16 15:55:49 · 216 阅读 · 0 评论 -
dubbo-php-framework的TcpServer的解析(六)
之前第五篇时,提到了一些回调函数的设置,这篇我们开始分析这些回调函数的实现。//master进程启动时的回调函数public function onMasterStart($server){ //重命名master进程的进程名称 Console::setProcessName($this->processName.'_master_process'); /...原创 2018-09-16 17:14:34 · 192 阅读 · 0 评论 -
dubbo-php-framework的Protocol解析(一)
在分析TcpServer的分钟中可以看到,worker进程启动后的回调函数中,框架会创建一个对象来完成后续的网络数据读取和回复,从这篇开始我们就分析这个对象本身,这个对象就是FSOFProtocol类的对象,引用代码如下://autoload 用户的所有代码 $appRoot = AppAutoLoader::getFatherPath($appBootLoader, 1); ...原创 2018-09-16 18:57:42 · 675 阅读 · 0 评论 -
dubbo-php-framework的Protocol解析(二)
前面一篇Protocol解析的文章主要介绍了Protocol的继承体系和一些默认实现,其实从分析中可以看出默认实现几乎什么都没做,核心实现在Protocol的核心子类FSOFProtocol中,其路径为dubbo-php-framework-master/provider/fsof/FSOFProtocol.php,这篇我们就开始分析FSOFProtocol的实现。public functi...原创 2018-09-16 22:36:23 · 269 阅读 · 0 评论 -
dubbo-php-framework的Protocol解析(三)
我们接着前面的文章继续分析,先从完整的接到请求后的处理过程开始。//接收到完整的数据包后的处理过程public function onOneRequest($client_id, $request) { if($this->parser->isHearBeatRequest($request)) { //心跳请求,不需要数据回送 } else if($...原创 2018-09-16 22:53:40 · 230 阅读 · 0 评论 -
利用swoole多进程压测服务框架dubbo-php-framework
因工作需要,近期对dubbo-php-framework进行了压测,重点是看dubbo-php-framework本身的性能,故直接在本地虚拟机上做了压测,provider和consumer都是同台虚拟机上执行。测试的场景为1k字符串的原样返回,即发1k字符串请求到provider,provider不做处理,原样返回。测试代码如下:$s = new ProcessPool();$s...原创 2019-03-01 20:15:32 · 488 阅读 · 0 评论