dubbo-php-framework介绍

版权声明:转载请注明来源 https://blog.csdn.net/u013702678/article/details/82623595

dubbo-php-framework(https://github.com/dubbo/dubbo-php-framework)是由深圳乐信(http://www.lexinfintech.com)架构组开源的用于php语言的RPC通讯框架,与dubbo在协议上完全兼容,可同时作为provider端和consumer端,使用zookeeper用于服务注册发现,序列化使用fastjson,底层网络通信使用swoole实现,下图为其架构图:

其中组件简介如下:

1、php-consumer,rpc调用中的消费者。

2、php-provider,rpc调用中的生产者,服务提供者,因provider是用swoole实现,存在多个worker,1个master和1个manager进程角色。

3、provider_admin,provider的管理者,简单封装了provider的启动、停止、加载配置文件等动作。

4、registry,provider服务注册者,基于zookeeper实现服务的注册,所谓注册也就是在zookeeper实现节点的创建和地址更新。

5、agent,代理,用于监听registry,将新的节点变更同步更新到redis中。

6、redis,用于本地存储provider信息,防止在zookeeper出现问题时,还能为consumer提供provider地址信息,继续服务。

基于上述架构图,整体的流程简述如下:

1、首先通过provider_admin组件启动provider服务,这时provider服务会注册到registry(zookeeper)中,zookeeper将这次的变更通知到agent,agent拉取registry中的节点内容更新redis中的内容,这里完成了服务注册的过程,其他的服务下线等流程不做分析,后续在分析代码时再细聊。

2、consumer调用相应的provider时,通过本地redis检查provider服务地址信息,获取到信息后(主要是IP,PORT,服务名,接口名,版本号等信息),基于swoole通信完成相应的调用。

拉取代码后,代码整体架构如下图所示:

这里简述下各个目录的功能,细节后面篇章分析。

1、agent目录是由c语言实现的daemon程序,充当架构图的agent角色。

2、api目录实现了consumer侧的一些通用接口。

3、bin目录实现了provider_admin的功能,用于控制provider的启动停止等。

4、common目录实现一些通用功能,包括协议,文件操作工具等。

5、demo目录是框架提供的列子。

6、provider是框架实现的核心。

7、registry是用于服务注册相关的功能。

猜你喜欢

转载自blog.csdn.net/u013702678/article/details/82623595
今日推荐