• cdn削峰


    需求背景

    cdn的收费方式按最高点来收取,为了节省成本,需要在cdn的流量到达最大成本值前通过服务器程序限制客户端的请求流量

    目前流量激增,为了控制过高的CDN流量,目前做一个快速轻小控制方案

    需求分

    cdn的流量请求来源有:

    1. 静默升级
    2. 用户点击下载
    3. 一些活动图片资源
    4. 非法请求(本篇不涉及)

    其中2,3不做限制,静默升级是控流的主要入口

    目标

    在后台运营设置的流量目标值范围上下浮动,所以目标值可以适当调整在实际阈值小一点

    Cdn201711281613.jpg

    终极目标 在后台运营设置的流量目标值范围以下,且使得流量的波动曲线尽量平稳

    削峰泳道图

    Cdn201711281626.png

    1. 后台配置不同国家范围的阈值允许的请求宽带值和优先级,并更新在db中
    2. 通过task任务将获取的当前带宽存储在db中
    3. task任务读取不同国家的阈值和优先级,将国家优先的cdn更新到db中
    4. 接口通过定时任务,定时将国家优先放行的cdn从db缓存在内存中
    5. 客户端请求根据静默升级接口返回的数据延时则延时,有下载链接则下载

    应用商店逻辑结构图

    Cdn201711281620.png

    数据库设计

    CREATE TABLE `T_CDN_INFORMATION` (
      `FID` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
      `FCDN_DOMAINNAME` varchar(100) NOT NULL COMMENT 'ali http://hotapps-res.in.meizu.com,tencent http://hotapps1-res.in.meizu.com',
      `FCDNID` varchar(8) NOT NULL COMMENT 'cdn',
      `FBANDWIDTH_THRESHOLD` int(10) unsigned NOT NULL COMMENT '带宽阈值,单位为 m',
      PRIMARY KEY (`FID`),
      UNIQUE KEY `UDX_CDN` (`FCDNID`)
    )COMMENT='CDN 信息表';
    
    CREATE TABLE T_COUNTRY_CURRENT_CDN_MANUFACTURER(
      FID int(10) unsigned NOT NULL AUTO_INCREMENT,
      FCOUNTRY varchar(4) COLLATE utf8_bin NOT NULL COMMENT '国家,空串表示FCDN为ali',
      FCDN tinyint(4) NOT NULL COMMENT '-1-不放行;0-ali;1-tencent',
      PRIMARY KEY (FID)
    )COMMENT'国家当前可用的cdn,定时任务实时更新';
    INSERT INTO T_COUNTRY_CURRENT_CDN_MANUFACTURER(FID, FCOUNTRY, FCDN) VALUES(1,'',0);
    

    缓存设计

    内存缓存数据

    字段 数据类型 含义
    country String 国家,空串是默认可用的cdn厂商
    cdnManufacturer String 0-不放行,1-ali,2-tencent
  • 相关阅读:
    数据库设计步骤 java程序员
    (1) 语法结构 java程序员
    (3)JavaScript学习笔记 函数、对象、数组 java程序员
    JavaScript 学习计划 java程序员
    (5)JavaScript学习笔记 变量 java程序员
    (2) 数据类型、值 及 字符串 java程序员
    (4)JavaScript学习笔记 数据类型和值(续) java程序员
    J2EE、J2SE、J2ME是什么意思? java程序员
    80端口(该端口是Tomcat的监听端口)已经被其他程序占用 java程序员
    (17) string 和 stringbuilder java程序员
  • 原文地址:https://www.cnblogs.com/white-snow/p/8025313.html
Copyright © 2020-2023  润新知