账户中心 退出系统
开发文档 资讯·分享 技术交流 会员登录
phpGrace GSCMS 公众号系统
分布式部署

分布式概述

通过分布式部署可以有效地应对高并发及复杂运算带来的服务端压力,同时还能保证整个系统的稳定性及可用性。
以下为您演示一个基于 phpGrace 框架为基础的简单的分布式部署方案:

1. 负载均衡服务器

1 使用 nginx 服务实现负载均衡;
2 使用各类云服务商提供的负载均衡服务(如 : 阿里云、腾讯云提供的负载均衡服务),优点 : 配置简单,带宽充足;

2. 核心运算服务器 ( apahce || nginx +php )

自行部署 apahce || nginx +php 服务器,将 php 及相关代码部署到服务器上,运算服务器可以根据实际情况(访问量、服务器压力)动态增减。
可以利用 git、svn、rsync 等技术实现多服务器间的代码同步。

3. 静态云存储服务

建议将图片、样式、js脚本等静态文件部署至统一的静态云存储服务,好处 :
1 将静态文件加载带来的带宽压力转给专业的云服务器;
2 多个运算服务可以共享基于一个统一地址的静态文件;

4. 数据库服务器

自行架设或购买云服务商提供的数据库服务,必要时进行读写分离,多个php运算服务器通过配置共享统一的数据库服务:

<?php
/** 
全局数据库配置  
/appConfig/database.php
*/
return array(
    // mainDB 数据库配置
    'mainDB' => array(
        'type'  => 'mysql',
        // 数据库名称
        'databaseName'   => 'grace',
        // 数据表前缀
        'tablePrefix'    => 'grace_',
        // 字符集
        'charset'        => 'utf8',
        // 核心库 [ 写入数据时使用的数据库服务器 ]
        'write' => array(
            // 主机地址
            'host'           => array('localhost'),
            // 端口
            'port'           => array(3306),
            // 用户名
            'username'       => array('root'),
            // 密码
            'password'       => array('root'),
        ),
        // 读取数据库配置,如果不需要读写分离 read 为一个空数组即可 [ 使用 写入库配置 ]
        'read' => array(
        )
    )
);

5. redis 服务器

如果您使用了 redis 作为缓存数据数据服务器,请自行架设或购买云服务商提供的 redis 服务,用于共享缓存数据,然后修改站点配置文件 : 

/*** 缓存配置 ***/
/*** 文件位置 : /appconfig/站点目录/base.php */
'cache' => array(
    //缓存类型 目前支持 file [ 文件型 ] , redis [ 利用 redis 服务器存储缓存 ]
    'type'               => 'file',
    // 主机地址 [ 文件型可忽略 ]
    'host'               => '127.0.0.1',
    // 端口 [ 文件型可忽略 ]
    'port'               => '6379',
    //  redis 服务验证密码 [ 文件型可忽略 ]
    'password'           => '123456'
),

6. memcache 服务器

自行架设或购买云服务商提供的 memcache 服务,用于共享 session 会话数据,然后修改站点配置 

/*** session 配置 ***/
/*** 文件位置 : /appconfig/站点目录/base.php */
'session' => array(
    // 使用的形式
    'type' => 'file',
    // 主机地址
    'host' => '127.0.0.1',
    // 端口
    // redis    默认 6379
    // memcache 默认端口 11211
    'port' => '6379',
    // redis 或 memcache 服务对应的密码
    'password' => ''
),

说明

通过以上几部我们就可以实现一个简单的分布式部署,利用分布式部署加上全面精准的缓存策略,可以极大的提高系统的高并发应对能力。以上只是一个简单的示例,请根据自己的业务情况进行更具体的部署。