中小型公司完全的解决掉并发的方案。

服务框架

客户端页面静态化、CDN 缓存、限流削峰、限流
接入层负载均衡、限流负载均衡、限流
服务层集群化部署、本地缓存、总缓存集群化部署、本地库存、写订单排队
数据层读写分离读写分离

单服务的极致性能

想要做到单服务的极致性能,就必须压榨 CPU 的性能,可以从以下几点入手。

  • 减少上下文切换
  • 减少阻塞式 I/O

    • rpc 调用
    • 磁盘读写

PHP 的代码现实

class CacheController extends BaseController
{

    // Redis 单例对象
    static $redisObj;

    /*
     * 连接 Redis 的单例
     */
    static function conRedis()
    {
        if (self::$redisObj) return self::$redisObj;
        self::$redisObj = new \Redis();
        self::$redisObj->connect('127.0.0.1',6379);
        return self::$redisObj;
    }

    /*
     * 使用 Lua 脚本和 Redis 的原子性,从而避开 PHP 的多线程引起的问题
     */
    private static function incUseCount()
    {
        $script = <<<eof
            local key = KEYS[1]
            local field1 = KEYS[2]
            local field2 = KEYS[3]
            local field1_val = redis.call('hget',key,field1)
            local field2_val = redis.call('hget',key,field2)
            if(field1_val>field2_val) then
                return redis.call('HINCRBY',key,field2,1)
            end
            return 0
eof;
        return self::conRedis()->eval($script,['共享信息 Key','商品总库存','已售库存'],3);
    }

}

标签: PHP

添加新评论