mopon泰久php项目组 泰久云接入组件

Maintainers

Details

git.oschina.net/mopon_php/mpc.git

Installs: 18

Dependents: 0

Suggesters: 0

Security: 0

Type:project

1.1.5 2017-03-22 08:32 UTC

This package is not auto-updated.

Last update: 2024-05-01 18:50:05 UTC


README

version=1.1.6

是什么? mpc (MoPonCloud) 泰久云 php接入组件

完成了  etcd接入(读取数据,写入数据)

怎么用?

配置文件中添加  组件  
    //client端
    'mpc' => [
        'class' => 'moponphp\mpc\Client',
        'etcdUrl'=>'192.168.27.63:2379',        //etcd服务器地址  注意这里没有http
        //需要加载的所有服务名称的集合
        'services'=>[
            'base'=>'/service/thrift/base',
            "user" => "/cloud/platform/service3",
            'mc'=>'/service/thrift/mc',
        ],
        'etcdConfig'=>[     
            'group'=>1, 指定特定组的机器 适用于开发调试  服务器配置中也需要有相同配置 
            //更多参数详见 \moponphp\mpc\etcd\Connection  类的属性定义
        ],
        'thriftConfig'=>[
            'isPersist'=>false, 是否启用长链接  
            //更多参数详见 \moponphp\thrift\Connection 类的属性定义
        ],
    ],
    注: 为了实现鉴权还需要设置 app的id为 注册菜单的前缀名 (去掉前后的反斜线) 
        mpc配置中除class属性外其他皆可选
    
    //服务器端 (这些参数可以直接写入启动脚本 无需写入配置文件) 
    'mpcs' => [
        'etcdUrl'=>'192.168.27.63:2379',

         ////配置服务器信息 
         //管控平台信息 已获取seviceNameing 如果使用客户端并且给出了seviceNaming 则三项可以不配置 
         'projectName'=>'/scec/saas/php',
         'workName'=>'/act-adminApi',
         'versionName'=>"1.0.0",
        //或者直接给出seviceNaming  建议客户端直接给出   
        'seviceNaming'=>"/service/thrift/base",     //需要加载的所有服务名称的集合

        'hostname'=>"",   //可选默认本机
        "port"=>"",             //可选默认 9999
      ]

      //服务器搭建以及启动过程 
            新建server项目用于存放 php对外的服务  (操作方法copy admin,并修改相关配置,主要就是名称空间和commpon.config.bootstrap)
            copy server/web/index.php 到 server/web/start.php   删除最后一句$appaction->run(); 增加服务器启动命令详见下面的 使用方法 服务器部分  (这个文件用于服务启动 nohup php start.php > /dev/null & ) 
            服务器api 参考adminapi.ApiController
      //公共类封装: (封装的类对租户信息,访问授权,传入参数等做了统一封装处理)
            server/controller/Controller 继承 \moponphp\mpc\ServerController 
            adminapi/controller/Controller 继承 \moponphp\mpc\ClientController
            common/model/Model  继承 \moponphp\mpc\Model (封装了多商户表的实现) 

使用方法:

  客户端: 
    控制器或者model中调用代码如下:   
        Yii::$app->mpc->base('/app/price/v1/auditRefuseCinemaPolicy')->call([
                    'cinemaCode'=>'36050601',
         ]);
        或: Yii::$app->mpc->base(['/app/price/v1/auditRefuseCinemaPolicy','cinemaCode'=>'36050601']);
        或: $this->mpc->base(['/app/price/v1/auditRefuseCinemaPolicy','cinemaCode'=>'36050601'],2);
     注: base 来自于配置文件中的services数组的key (注意mpc.clietn类中封装了许多默认key) 
                /app/price/v1/auditRefuseCinemaPolicy  是文档中的uri  注意斜线不要丢失或多加  php组默认的url封装规则为 原始路由加版本 比如: r=act/list  最终文档中提现的url="/act/list/v1" (v1可选,这个参数会在服务器中体现在$_ENV['version'] 中 
                ['cinemaCode'=>'36050601',]                           是接口的传递参数
                函数可以传入第二个参数 用来做异常处理的 (false为不抛出 1为只抛出网络异常  2 为抛出网络异常和逻辑异常)
  服务器端: 
    Yii::$app->mpcs->start();
    或者 
    $server = new \moponphp\mpc\Server([
             'etcdUrl'=>'192.168.27.63:2379',
            'serviceNaming'=>"/service/thrift/base",   
    ]);
    $server->start();
    注: 服务器端可以访问 $_ENV['version'] 或 Yii::$app->controller->version 来获取客户端传递的action版本信息 来做相应的版本处理    
        可以通过 $GLOBALS['biz_code'] 或者$this->biz_code来获取租户信息 
    init/mpc.sh init && 根/mpc.sh start

参考

1 管控平台配置中心:  http://192.168.27.63:8088/center.html      也就是配置文件中的管控平台部分 [这个部分其实可有可无)
2 etcd服务器 :              http://192.168.27.63:2379/v2/keys/service/thrift/base   (获取服务器信息,定期设置维护服务器信息)
3 thrift协议通信           moponphp/thrift/README.MD                        真正实现数据交互
4 http://www.tuicool.com/articles/NvEZV3F  etcd集群管理简介
        /v2/members         查看成员
        /v2/stats/self          查看集群状态

问题:

1服务器信息注册到etcd 配置服务器负载信息暂未实现  位于 etcd.ServiceAddressInfo.getload 暂未实现 
2多商户表创建 
3 php启动的服务器不稳定 还有内存释放和进程守护问题 暂时先不考虑 

相关的全局变量
$_ENV['version'] $GLOBALS['biz_code']

更新日志:
2017-03-30 ClientController 增加 uriPrefix 用与同一个项目不同的控制器有不同的路由前缀的情况