phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序
Posted 穆晟铭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序相关的知识,希望对你有一定的参考价值。
phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序
用命名空间区分不同的数据库实例,对应代码结构上是不同的目录区分,在同一目录下基类负责初始化连接。连接来自初始化时注入的多个db服务
隐规则:
-
initialize()在每个请求期间只会调用一次
-
为每个 new 创建的实例执行初始化任务使用onConstruct()
namespace Company\Models\Notification;
/** * Class BaseModel * * beforeSave()和afterFetch()成对使用,用于读写数据时自动转化数据。 * 例如自动执行serialize unSerialize * * save()发生时事件调用顺序是 * initialize, * onConstruct, * beforeValidation, * beforeValidationOnCreate, * afterValidationOnCreate, * afterValidation, * beforeSave, * beforeCreate, * afterCreate, * afterSave, * * @package Company\Models\Notification */ class BaseModel extends \Phalcon\Mvc\Model { /** * - 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‘); } }
以上是关于phalcon:数据库分库,读写分离,负载均衡 系统方法执行顺序的主要内容,如果未能解决你的问题,请参考以下文章
设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存、分库分表、读写分离、全文检索、消息队列等,使用SpringCloud公司框架,基于Java语言开发。该项目可部署到服务器上,不断完