thinkphp51 - 如何修改文件目录结构,更好的支持微服务

177 阅读1分钟

目录结构

  • application 下
    • common 定时器等
    • core 支持workerman自己实现的一个父类和工具
    • index 默认模块,同级可以存在多个模块,比如order,product
    • service 外部service api的实现类,一一对应
    • workerman 主要是php-cli命令
  • 其他和thinkphp51一样的
  • 重点是.env,可移植的配置文件

一些文件的内容

\service\order\Order
<?php

namespace app\service\order;

class Order
{
    /**
     * 生成一个订单
     */
    public function checkOrder() {

    }

    /**
     * 回退
     */
    public function __checkOrder() {

    }

    /**
     * 支付订单
     */
    public function payOrder() {

    }

    /**
     * 回退
     */
    public function __payOrder() {

    }
}

服务的命名规则,api接口及对应的文件位置

比如,某个接口

https://服务名/模块名/类/方法名
https://order/order/Order/checkOrder

对应提供服务的文件位置

/application/order/http/Order/checkOrder

对应其他服务调用该服务,在其他服务项目中的文件位置

/application/service/order/Order/checkOrder

istio灰度发布

  • 一个service对应多个版本的pod
  • 多个版本pod有俩个标签A、B,A标签所有pod都相同,供service引用;B标签为版本标签,多个版本不同;A是给service用的,B是给istio的DestinationRule用的,必须B标签必须为version:v1这种,其中vi可变
  • 一套应用新建应该包含
  *  Deployment.yaml
  *  Service.yaml
  *  Db.yaml
  *  pCache.yaml
  *  VirtualService.yaml
  *  DestinationRule.yaml
  • 一套应用更新至少应该包含
  *  Deployment.yaml
  *  DestinationRule.yaml