• phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序


    phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序

    用命名空间区分不同的数据库实例,对应代码结构上是不同的目录区分,在同一目录下基类负责初始化连接。连接来自初始化时注入的多个db服务

    隐规则:

    • initialize()在每个请求期间只会调用一次

    • 为每个 new 创建的实例执行初始化任务使用onConstruct()

    namespace CompanyModelsNotification;
    

     

    /**
     * Class BaseModel
     *
     * beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。
     * 例如自动执行serialize unSerialize
     *
     * save()发生时事件调用顺序是
     * initialize,
     * onConstruct,
     * beforeValidation,
     * beforeValidationOnCreate,
     * afterValidationOnCreate,
     * afterValidation,
     * beforeSave,
     * beforeCreate,
     * afterCreate,
     * afterSave,
     *
     * @package CompanyModelsNotification
     */
    class BaseModel extends PhalconMvcModel
    {
    
        /**
         * - initialize()在每个请求期间只会调用一次
         * - 子类必需调用父类方法
         * - 为每个 new 创建的实例执行初始化任务使用onConstruct()
         */
        public function initialize()
        {
            $this->setConnectionService('db_notification');
            
            //$this->setConnectionService('node1');
            //$this->setConnectionService('node2');
            //
            //真实场景可能使用mysqlnd_ms扩展或者haproxy
            //仅演示读负载均衡一种思路
            //$dbSlave = ['node1', 'node2', 'node3'];
            //$key = array_rand($dbSlave);
            //$db = $dbSlave[$key];
            //$this->setReadConnectionService($db);
            //
            //
            //$this->setReadConnectionService('dbRead');
            //$this->setWriteConnectionService('dbWrite');
        }
    } 
    

      

  • 相关阅读:
    SparkSQL UDF使用方法与原理详解
    Hadoop 之日志管理—应用在 YARN 中运行时的日志
    圣诞节雪花效果,pc端
    转 redis使用场景 简介
    转 springboot 教程
    springboot freeMarker
    springboot web 服务器选择
    springboot 异步任务
    springboot 整合 rabbitmq
    软件开发生命周期过程中,必须考虑的安全问题
  • 原文地址:https://www.cnblogs.com/achengmu/p/5872846.html
Copyright © 2020-2023  润新知