在视频点播的业务应用场景中,用户使用了ffmpeg工具做视频实时转码用。 而ffmpeg使用range 请求。而Cosbench不支持这种测试场景,所以需要修改源码支持这种测试场景。

HTTP 协议介绍:

HTTP 请求头 Range

请求资源的部分内容(不包括响应头的大小), 单位是byte,即字节,从0开始.

如果服务器能够正常响应的话,服务器会返回206 Partial Content的状态码及说明. 如果不能处理这种Range的话,就会返回整个资源以及响应状态码为200 OK.(这个要注意,要分段下载时,要先判断这个)

Range 请求头格式

Range: bytes=start-end

例如:

Range: bytes=10-:第10个字节及最后个字节的数据 Range: bytes=40-100:第40个字节到第100个字节之间的数据.

注意,这个表示[start,end],即是包含请求头的start及end字节的,所以,下一个请求,应该是上一个请求的[end+1, nextEnd]

响应头

Content-Range

Content-Range: bytes 0-10/3103

这个表示,服务器响应了前(0-10)个字节的数据,该资源一共有(3103)个字节大小。

分段下载

利用这个特点,我们可以使用分段下载(多线程下载,分布式下载)

思想:先请求一个HEAD方法的请求,获取总文件大小, 然后启用多线程并发下载不同的分片。

代码库:https://github.com/BodihTao/cosbench

修改后重新编译的安装包: http://s3.yyclouds.com/public/cosbench.zip

配置文件:

is_range_request=true;range_start=4096;range_end=10240;

<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3 test 1 node read" description="sample benchmark for s3"> <storage type="s3" config="accesskey=xxx;secretkey=xxxx;is_range_request=true;range_start=4096;range_end=10240;endpoint=http://tj-s3.yyclouds.com;path_style_access=true" /> <workflow> <workstage name="init">
<work type="init" workers="" config="cprefix=s3testqwer;containers=r(1,2)" />
</workstage> <workstage name="prepare">
<work type="prepare" workers="" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,24);sizes=u(1,3)MB" />
</workstage> <workstage name="main">
<work name="main" workers="" runtime="">
<operation type="read" ratio="" config="cprefix=s3testqwer;containers=u(1,2);objects=u(1,12)"/>
<operation type="write" ratio="" config="cprefix=s3testqwer;containers=u(1,2);objects=u(13,24);sizes=u(1,3)MB" />
</work>
</workstage> <workstage name="cleanup">
<work type="cleanup" workers="" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,24)" />
</workstage> <workstage name="dispose">
<work type="dispose" workers="" config="cprefix=s3testqwer;containers=r(1,2)" />
</workstage> </workflow> </workload>

修改Cosbench源码 支持s3的 http range request 测试场景的更多相关文章

  1. 修改json源码支持datetime序列化

    修改json源码支持datetime序列化 import json import datetime now = datetime.datetime.today() json.dumps(now) 抛出 ...

  2. THINKPHP_(8)_修改TP源码,支持基于多层关联的任一字段进行排序

    之前博文 前述博文THINKPHP_(1)_修改TP源码,支持对中文字符串按拼音进行排序,其解决的主要问题是,对于查询出的think\collection数据,按指定字段对数据进行排序,从而在页面上进 ...

  3. 《Flink SQL任务自动生成与提交》后续:修改flink源码实现kafka connector BatchMode

    目录 问题 思路 kafka参数问题 支持batchmode的问题 参数提交至kafkasource的问题 group by支持问题 实现 编译 测试 因为在一篇博文上看到介绍"汽车之家介绍 ...

  4. 修改FFMpeg源码—捕获丢包

    概述 最近我们项目有一个需求就是解决客户端播放RTSP视频流花屏的问题,一般来说丢包就会引起花屏,导致客户端花屏的因素又有很多,比如说: 相机到服务器丢包 服务器到客户端丢包 等等... 其中服务器到 ...

  5. 修改spring源码重写classloader实现项目加密

      (一)操作方法和spring源码添加修改部分 事先说明:spring源码要下载好,会有修改spring的源码操作,本文和本作者所依赖的spring项目的版本是3.1.1,spring4及以上源码对 ...

  6. 修改VCL源码实现自定义输入对话框

    来自:https://yq.aliyun.com/wenji/88428 通过修改VCL源码实现自定义输入对话框 在BCB中有两个函数可以实现输入对话框:InputBox和InputQuery,其实I ...

  7. paramiko修改本分源码

    一.获取paramiko源码 环境:Python3 下载地址:https://github.com/paramiko/paramiko 使用的是 demos这个文件夹 二.修改部分源码用以登入 2.1 ...

  8. 修改CAS源码是的基于DB的认证方式配置更灵活

    最近在做CAS配置的时候,遇到了数据源不提供密码等数据的情况下,怎样实现密码输入认证呢? 第一步:新建Java项目,根据假面算法生成CAS加密工具 出于保密需要不提供自定义的加密工具,在您的实际项目中 ...

  9. 修改springfox-swagger源码,使example中时间格式默认为“yyyy-MM-dd HH:mm:ss”

    修改swagger源码,使example中时间格式默认为"yyyy-MM-dd HH:mm:ss" 前言 简单点说,在swagger中,怎么能针对以下vo中的java.util.D ...

随机推荐

  1. 【转】国外几款GPS卫星历预报软件

    以下是几款著名GPS厂商的星历软件: Trimble星历软件: http://www.trimble.com/planningsoftware.shtml Topcon星历软件: http://www ...

  2. IOS 疯狂基础之 页面间跳转

    常用的就两种 一种通过导航,一种直接跳 第一种 直接跳转 思路大致就是new一个目的页面,然后设置下页面跳转动画 中间还可以做点目的页面的数据初始化: ValueInputView *valueVie ...

  3. 个性化推荐调优:重写spark推荐api

    最近用spark的mlib模块中的协同过滤库做个性化推荐.spark里面用的是als算法,本质上是矩阵分解svd降维,把一个M*N的用户商品评分矩阵分解为M*K的userFeature(用户特征矩阵) ...

  4. 架设rsync服务器同步数据

    什么是rsync rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用.本文主要讲述的是如何自架rsync服 务器,以实现文件传输.备 ...

  5. JAX-RS和Jersey

    一:JAX-RS JAX-RS是JAVA EE6 引入的一个新技术. JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照 ...

  6. MySQL二进制日志binlog简单使用

    MySQL数据库进行了哪些CUD操作,通过binlog二进制文件可以查看.binlog不仅可以记录CUD的操作(select操作不包括在内),还是主从备份的基础.主库的操作记录成binlog文件,定期 ...

  7. BZOJ 2733: [HNOI2012]永无乡 [splay启发式合并]

    2733: [HNOI2012]永无乡 题意:加边,询问一个连通块中k小值 终于写了一下splay启发式合并 本题直接splay上一个节点对应图上一个点就可以了 并查集维护连通性 合并的时候,把siz ...

  8. 《CSS核心技术详解》

    前言 看似简单的CSS,却暗藏玄机,那是我们摸爬滚打好长时间后悟出的真理. 在很长的一段时间里,我并没有重视CSS,觉得CSS很简单,无非就是一些属性:后来才发现自己小看了CSS,对CSS的了解实在是 ...

  9. LeetCode - 626. Exchange Seats

    Mary is a teacher in a middle school and she has a table seat storing students' names and their corr ...

  10. AnnotationUtils

    /** * 查询类中符合指定annotation的属性信息 * @param objCls 实体类 * @param annCls 注解类 * @return HashMap<实体属性名, An ...