phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序
2016-09-14 16:57
337 查看
phalcon:数据库分库,读写分离,负载均衡系统方法执行顺序
用命名空间区分不同的数据库实例,对应代码结构上是不同的目录区分,在同一目录下基类负责初始化连接。连接来自初始化时注入的多个db服务
隐规则:
initialize()在每个请求期间只会调用一次
为每个new创建的实例执行初始化任务使用onConstruct()
/**
*ClassBaseModel
*
*beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。
*例如自动执行serializeunSerialize
*
*save()发生时事件调用顺序是
*initialize,
*onConstruct,
*beforeValidation,
*beforeValidationOnCreate,
*afterValidationOnCreate,
*afterValidation,
*beforeSave,
*beforeCreate,
*afterCreate,
*afterSave,
*
*@packageCompany\Models\Notification
*/
classBaseModelextends\Phalcon\Mvc\Model
{
/**
*-initialize()在每个请求期间只会调用一次
*-子类必需调用父类方法
*-为每个new创建的实例执行初始化任务使用onConstruct()
*/
publicfunctioninitialize()
{
$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');
}
}
用命名空间区分不同的数据库实例,对应代码结构上是不同的目录区分,在同一目录下基类负责初始化连接。连接来自初始化时注入的多个db服务
隐规则:
initialize()在每个请求期间只会调用一次
为每个new创建的实例执行初始化任务使用onConstruct()
namespaceCompany\Models\Notification;
*ClassBaseModel
*
*beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。
*例如自动执行serializeunSerialize
*
*save()发生时事件调用顺序是
*initialize,
*onConstruct,
*beforeValidation,
*beforeValidationOnCreate,
*afterValidationOnCreate,
*afterValidation,
*beforeSave,
*beforeCreate,
*afterCreate,
*afterSave,
*
*@packageCompany\Models\Notification
*/
classBaseModelextends\Phalcon\Mvc\Model
{
/**
*-initialize()在每个请求期间只会调用一次
*-子类必需调用父类方法
*-为每个new创建的实例执行初始化任务使用onConstruct()
*/
publicfunctioninitialize()
{
$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');
}
}
相关文章推荐
- unity3d 系统方法执行顺序
- 1.读写分离(主数据库写 可分拆副数据库读);2.垂直分库(将系统按业务进行了垂直拆分主数据库);3.水平分主库(ID生成算法决定了如何拆分数据,以及增删改查)
- 当应用程序开始执行时,系统方法调用的先后顺序
- MS SQL Server 2000版在windows server 2003企业版系统上运行时造成数据库suspect的解决方法
- Java中 定义语名 与方法 的执行顺序
- mssql数据库系统崩溃后的一般处理步骤与方法
- mssql数据库系统崩溃后的一般处理步骤与方法
- C# 数据库sql中用参数的方法来执行UPDATE命令,实现更新dataTime类型
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- MS SQL Server 2000版在windows server 2003企业版系统上运行时造成数据库suspect的解决方法
- C#中Join()方法实现线程的顺序执行
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- WorkbenchAdvisor中的方法执行顺序
- 数据库中随机读取和顺序读取记录的方法
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)
- 重新安装系统后 Sql Server 2005 升级注意!以及执行attach 错误,提示05错误的解决方法!
- 关于服务器如何设置动易系统数据库路径的方法
- 理解Java类中构造方法的执行顺序和变量初始化
- 无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)