月度归档:2016年01月

如何用十条命令在一分钟内检查Linux服务器性能

通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。

  • uptime

  • dmesg | tail

  • vmstat 1

  • mpstat -P ALL 1

  • pidstat 1

  • iostat -xz 1

  • free -m

  • sar -n DEV 1

  • sar -n TCP,ETCP 1

  • top

其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法。

下面我们来逐一介绍下这些命令,有关这些命令更多的参数和说明,请参照命令的手册。

uptime

$ uptime 23:51:26 up 21:31,  1 user,  load average: 30.02, 26.43, 19.02

这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。

命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是区域缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。

上面例子中的输出,可以看见最近1分钟的平均负载非常高,且远高于最近15分钟负载,因此我们需要继续排查当前系统中有什么进程消耗了大量的资源。可以通过下文将会介绍的vmstat、mpstat等命令进一步排查。

dmesg丨tail

$ dmesg | tail [1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 [...] [1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child [1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB [2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.

该命令会输出系统日志的最后10行。示例中的输出,可以看见一次内核的oom kill和一次TCP丢包。这些日志可以帮助排查性能问题。千万不要忘了这一步。

vmstat 1

$ vmstat 1 procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0 32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0 32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0 32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0 32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0 ^C

vmstat(8) 命令,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义,这几介绍一些和性能调优相关的列:

  • r:等待在CPU资源的进程数。这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和。

  • free:系统可用内存数(以千字节为单位),如果剩余内存不足,也会导致系统性能问题。下文介绍到的free命令,可以更详细的了解系统内存的使用情况。

  • si, so:交换区写入和读取的数量。如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。

  • us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。

上述这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。一般情况下,如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。

示例命令的输出可以看见,大量CPU时间消耗在用户态,也就是用户应用程序消耗了CPU时间。这不一定是性能问题,需要结合r队列,一起分析。

mpstat-P ALL 1

$ mpstat -P ALL 1 Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU) 07:38:49 PM  CPU   %usr  %nice   %sys %iowait   %irq  %soft  %steal  %guest  %gnice  %idle 07:38:50 PM  all  98.47   0.00   0.75    0.00   0.00   0.00    0.00    0.00    0.00   0.78 07:38:50 PM    0  96.04   0.00   2.97    0.00   0.00   0.00    0.00    0.00    0.00   0.99 07:38:50 PM    1  97.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   2.00 07:38:50 PM    2  98.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   1.00 07:38:50 PM    3  96.97   0.00   0.00    0.00   0.00   0.00    0.00    0.00    0.00   3.03 [...]

该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。

pidstat 1

$ pidstat 1 Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU) 07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command 07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0 07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave 07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java 07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java 07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java 07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat 07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command 07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave 07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java 07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass 07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat ^C

pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。如上的输出,可以看见两个JAVA进程占用了将近1600%的CPU时间,既消耗了大约16个CPU核心的运算资源。

iostat-xz 1

$ iostat -xz 1 Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU) avg-cpu:  %user   %nice %system %iowait  %steal   %idle          73.96    0.00    3.73    0.03    0.06   22.21 Device:   rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util xvda        0.00     0.23    0.21    0.18     4.52     2.08    34.37     0.00    9.98   13.80    5.42   2.44   0.09 xvdb        0.01     0.00    1.02    8.94   127.97   598.53   145.79     0.00    0.43    1.78    0.28   0.25   0.25 xvdc        0.01     0.00    1.02    8.86   127.79   595.94   146.50     0.00    0.45    1.82    0.30   0.27   0.26 dm-0        0.00     0.00    0.69    2.32    10.47    31.69    28.01     0.01    3.23    0.71    3.98   0.13   0.04 dm-1        0.00     0.00    0.00    0.94     0.01     3.78     8.00     0.33  345.84    0.04  346.81   0.01   0.00 dm-2        0.00     0.00    0.09    0.07     1.35     0.36    22.50     0.00    2.55    0.23    5.62   1.78   0.03 [...] ^C

iostat命令主要用于查看机器磁盘IO情况。该命令输出的列,主要含义是:

  • r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。

  • await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。

  • avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。

  • %util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。

如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。

free -m

$ free -m             total       used       free     shared    buffers     cached Mem:        245998      24545     221453         83         59        541 -/+ buffers/cache:      23944     222053 Swap:            0          0          0

free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。需要注意的是,第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。因此,这部分内存一般也被当成是可用内存。

如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。

sar -n DEV 1

$ sar -n DEV 1 Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015     _x86_64_    (32 CPU) 12:16:48 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil 12:16:49 AM      eth0  18763.00   5032.00  20686.42    478.30      0.00      0.00      0.00      0.00 12:16:49 AM        lo     14.00     14.00      1.36      1.36      0.00      0.00      0.00      0.00 12:16:49 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 12:16:49 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil 12:16:50 AM      eth0  19763.00   5101.00  21999.10    482.56      0.00      0.00      0.00      0.00 12:16:50 AM        lo     20.00     20.00      3.25      3.25      0.00      0.00      0.00      0.00 12:16:50 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 ^C

sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。如示例输出中,eth0网卡设备,吞吐率大概在22 Mbytes/s,既176 Mbits/sec,没有达到1Gbit/sec的硬件上限。

sar -n TCP,ETCP 1

$ sar -n TCP,ETCP 1 Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU) 12:17:19 AM  active/s passive/s    iseg/s    oseg/s 12:17:20 AM      1.00      0.00  10233.00  18846.00 12:17:19 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s 12:17:20 AM      0.00      0.00      0.00      0.00      0.00 12:17:20 AM  active/s passive/s    iseg/s    oseg/s 12:17:21 AM      1.00      0.00   8359.00   6039.00 12:17:20 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s 12:17:21 AM      0.00      0.00      0.00      0.00      0.00 ^C

sar命令在这里用于查看TCP连接状态,其中包括:

  • active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;

  • passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;

  • retrans/s:每秒TCP重传数量;

TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。

top

$ top top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92 Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie %Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers KiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched

top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。

但是,top命令相对于前面一些命令,输出是一个瞬间值,如果不持续盯着,可能会错过一些线索。这时可能需要暂停top命令刷新,来记录和比对数据。

总结

排查Linux服务器性能问题还有很多工具,上面介绍的一些命令,可以帮助我们快速的定位问题。例如前面的示例输出,多个证据证明有JAVA进程占用了大量CPU资源,之后的性能调优就可以针对应用程序进行。

php增加 ffmpeg-php 安装及出错解决办法

安装ffmpeg-php插件

wget http://www.tortall.net/projects/yasm/releases/yasm-0.7.0.tar.gz

tar xzvf yasm-0.7.0.tar.gz

cd yasm-0.7.0

./configure

make

make install



svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

cd ffmpeg

./configure –enbale-shared

make

make install



wget http://nchc.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2

tar xvjf ffmpeg-php-0.6.0.tbz2

cd ffmpeg-php-0.6.0

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config

make

报错:

make: *** [ffmpeg_movie.lo] Error 1

解决:

vim ffmpeg_movie.c



row 311: list_entry *le; 改为zend_rsrc_list_entry *le;

row 346: list_entry new_le;改为 zend_rsrc_list_entry new_le;

row 360: hashkey_length+1, (void *)&new_le, sizeof(list_entry),改为hashkey_length+1, (void *)&new_le,sizeof(zend_rsrc_list_entry),

重新编译,

make test

报错:

The test-suite requires that proc_open() is available.

 Please check if you disabled it in php.ini.

解决:

编辑php.ini文件,找到disable_functions去掉proc_open。

make install



vim /usr/local/php/etc/php.ini

    加入: extension=ffmpeg.so

/etc/init.d/php-fpm restar

运行ffmpeg报错如下:

ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory

解决:

vim /etc/ld.so.conf

加入一行:/usr/local/lib

然后执行 ldconfig



make ffmpeg-php时,出现error ‘PIX_FMT_RGBA32‘ undeclared…



解决方法:



vi ffmpeg_frame.c, 替换PIX_FMT_RGBA32为/PIX_FMT_RGB32

    :%s/PIX_FMT_RGBA32/PIX_FMT_RGB32  





执行/usr/local/php/sbin/php-fpm restart时报错:



/usr/local/php/bin/php-cgi: symbol lookup error: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so: undefined symbol: register_ffmpeg_frame_class

 failed

解决方法同上,然后重编译安装ffmpeg-php

While compiling ffmpeg-php from source with make command you may get the following error terminating your making process;

make: *** [ffmpeg_frame.lo] Error 1

 

This error occurs due to a missing file ‘ffmpeg_frame.lo‘ in the ffmpeg-php source, while your ffmpeg-php source may contain the file named ‘ffmpeg_frame.loT‘.

 

To Resolve this issue you just need to rename the ‘ffmpeg_frame.loT‘ to ‘ffmpeg_frame.lo‘ and make again, Please check below steps :

Go to ffmpeg-php source directory :

Note: your ffmpeg-php version may be different, i am using 0.6.0

[root@hostripples ~]# cd /path/to/ffmpeg-php-0.6.0

Now rename or copy the ‘ffmpeg_frame.loT‘ to ‘ffmpeg_frame.lo

[root@hostripples ~]# mv ffmpeg_frame.loT ffmpeg_frame.lo

Once you have successfully renamed/copied the file to ‘ffmpeg_frame.lo’, you should compile it again with make command.

– See more at: http://blog.hostripples.com/ffmpeg-php-make-ffmpeg_frame-lo-error-1/#sthash.q6KOWHag.dpuf

If you get the following error when running the command make to compile FFmpeg:

make: *** [ffmpeg_frame.lo] Error 1
There are two ways to fix this problem:

*** First solution (highly recommended)

In the latest version of ffmpeg-php (0.6.0), you need to modify the file: ffmpeg_frame.c and replace every instance of PIX_FMT_RGBA32 with PIX_FMT_RGB32

Using Linux text editor, vi run the following commands:

vi ffmpeg_frame.c
:%s/PIX_FMT_RGBA32/PIX_FMT_RGB32
:wq!
Here, you should be back to the command line. Run these commands to compile and install FFmpeg-Php:

./configure
make
make install
*** Second solution
Run the following commands:

cd /path/to/ffmpeg-php-0.6.0
cp -aP ffmpeg_frame.loT ffmpeg_frame.lo
make clean
./configure
Then recompile and install ffmpeg.

在CentOS上编译安装FFmpeg,一键安装脚本

在CentOS编译安装ffmpeg比较麻烦,以前也搞过多次,由于博客调整,特重新记录一下,以备不时之需。

使用yum安装ffmpeg和相关软件

快速安装 ffmpeg

直接安装:

1 
yum install ffmpeg ffmpeg-devel 

若没有找到相应包,需要先加入要应的包。

将下列代码命名为 dag.repo 放在 /etc/yum.repos.d 目录 下。

1 2 3 4 5 
[dag] name=Dag RPM Repository for Red Hat Enterprise Linux baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1 

然后再执行上方的安装命令。

安装 ffmpeg-php 扩展

1 2 3 4 5 6 
wget /path/to/this/file/ffmpeg-php-0.5.2.1.tbz2 tar -xjf ffmpeg-0.5.2.1.tbz2 phpize ./configure make make install 

修改 php.ini 文件

安装完成后,将会在/usr/local/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so 看到php扩展文件。

打开php.ini文件,加入下面两行

1 2 
[ffmpeg] extension=ffmpeg.so 

重启WEB服务器。使用phpinfo即可看到ffmpeg相关信息。

1 2 3 4 5 6 7 
// #test.php  <?php  phpinfo()  ?> 

php 使用方法

1 2 3 4 5 6 7 8 9 10 
<?php $extension = "ffmpeg"; $extension_soname = $extension . "." . PHP_SHLIB_SUFFIX; $extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;  // load extension if(!extension_loaded($extension)) {  dl($extension_soname) or die("Can't load extension $extension_fullname\n"); } ?> 

安装 Mplayer 和 Mencoder

1 
yum install mplayer mencoder 

常见问题

常见问题及解决方案请参考这里:http://www.mysql-apache-php.com/ffmpeg-install.htm

自行编译安装 ffmpeg

安装依赖项

1 
yum install autoconf automake gcc gcc-c++ git libtool make nasm pkgconfig zlib-devel 

安装相应软件包

可以建立目录存放软件包

1 
mkdir ~/ffmpeg_sources 

注意:以下软件包请有选择的安装,如果不需要请在./configure时移除或关闭相关选项

安装 yasm

Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集。 x264 和 FFmpeg都使用Yasm.

1 2 3 4 5 6 7 8 
cd ~/ffmpeg_sources git clone --depth 1 git://github.com/yasm/yasm.git cd yasm autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean 

1 2 3 4 5 6 7 8 
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar zxf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean . ~/.bash_profile 

安装 x264

H.264 编码器。http://trac.ffmpeg.org/wiki/Encode/H.264

1 2 3 4 5 6 7 
cd ~/ffmpeg_sources git clone --depth 1 git://git.videolan.org/x264 cd x264 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make make install make distclean 

1 2 3 4 5 6 7 
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar jxf last_x264.tar.bz2 cd x264-snapshot-20130311-2245/ ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-shared make make install make distclean 

需要ffmpeg配置./configure --enable-gpl --enable-libx264

注:由于libx264的code有GPL信息,所以,支持libx264时,需要—enable-gpl,ffmpeg在license方面还是比我们国内的人更重视

安装 x265

H.265/HEVC编码器.http://trac.ffmpeg.org/wiki/Encode/H.265

1 2 3 4 5 6 
cd ~/ffmpeg_sources hg clone https://bitbucket.org/multicoreware/x265 cd ~/ffmpeg_sources/x265/build/linux cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make make install 

需要ffmpeg配置./configure --enable-gpl --enable-libx265

安装 libfdk_aac

AAC音频编码器,Fraunhofer AAC library

1 2 3 4 5 6 7 8 
cd ~/ffmpeg_sources git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac cd fdk-aac autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --enable-shared make make install make distclean 

需要ffmpeg配置--enable-libfdk_aac ,如果指定了--enable-gpl还要配置--enable-nonfree

安装 libmp3lame

Mp3音频编码器

1 2 3 4 5 6 7 
wget http://iweb.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar zxf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-shared --enable-nasm make make install make distclean 

需要ffmpeg配置--enable-libmp3lame

安装 libopus

Opus 音频编解码器

1 2 3 4 5 6 7 8 
cd ~/ffmpeg_sources git clone git://git.opus-codec.org/opus.git cd opus autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean 

1 2 3 4 5 6 7 
wget http://downloads.xiph.org/releases/opus/opus-1.0.3.tar.gz tar zxf opus-1.0.3.tar.gz cd opus-1.0.3 ./configure --prefix="$HOME/ffmpeg_build" --enable-shared make make install make distclean 

需要ffmpeg配置--enable-libopus

安装 libogg库

libogg是Ogg流库,libtheora、libvorbis需要libogg库,speex需要它。

1 2 3 4 5 6 7 8 
cd ~/ffmpeg_sources curl -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz tar xzvf libogg-1.3.2.tar.gz cd libogg-1.3.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean 

安装 libvorbis库

Vorbis音频编码器,需要libogg库。http://trac.ffmpeg.org/wiki/CompilationGuide/Centos#libogg

1 2 3 4 5 6 7 8 
cd ~/ffmpeg_sources curl -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz tar xzvf libvorbis-1.3.4.tar.gz cd libvorbis-1.3.4 LDFLAGS="-L$HOME/ffmeg_build/lib" CPPFLAGS="-I$HOME/ffmpeg_build/include" ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared make make install make distclean 

需要ffmpeg配置--enable-libvorbis

安装 libvpx

VP8/VP9视频编码器

1 2 3 4 5 6 7 
cd ~/ffmpeg_sources git clone --depth 1 http://git.chromium.org/webm/libvpx.git cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --enable-examples make make install make clean 

需要ffmpeg配置--enable-libvpx

编译安装 ffmpeg

1 2 3 4 5 6 7 8 
cd ~/ffmpeg_sources git clone --depth 1 git://source.ffmpeg.org/ffmpeg cd ffmpeg PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 make make install make distclean hash -r 

注:

  • 编译完成后ffmpeg,ffprobe,ffserver,lame,x264都可以使用。
  • 编译安装时可以参考Windows Build:http://ffmpeg.zeranoe.com/builds/
  • 如果还需要持续更新请保留ffmpeg_sources目录。

其它可选软件包

安装 OpenCORE AMR

1 2 3 4 5 
wget http://iweb.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz tar zxf opencore-amr-0.1.3.tar.gz ./configure --prefix="$HOME/ffmpeg_build" –enable-shared make make install 

需要ffmpeg配置--enable-libopencore-amrnb 和/或 --enable-libopencore-amrwb

安装 VisualOn AAC

注:github的tag和master版均无法autoconf,用zeranoe版代替

1 2 3 4 5 6 7 
wget wget http://ffmpeg.zeranoe.com/builds/source/external_libraries/vo-aacenc-0.1.3.tar.xz xz -d vo-aacenc-0.1.3.tar.xz tar xf vo-aacenc-0.1.3.tar cd vo-aacenc-0.1.3 ./configure --prefix="$HOME/ffmpeg_build"  make make install 

也可

1 
wget http://iweb.dl.sourceforge.net/project/opencore-amr/vo-aacenc/vo-aacenc-0.1.3.tar.gz 

需要ffmpeg配置--enable-libvo-aacenc

安装 VisualOn AMR-WB

注:github的tag和master版均无法autoconf,用zeranoe版代替

1 2 3 4 5 
wget http://ffmpeg.zeranoe.com/builds/source/external_libraries/vo-amrwbenc-0.1.2.tar.xz xz -d vo-amrwbenc-0.1.2.tar.xz tar xf vo-amrwbenc-0.1.2.tar cd vo-amrwbenc-0.1.2 ./configure --prefix="$HOME/ffmpeg_build" 

需要ffmpeg配置--enable-libvo-amrwbenc

安装 frei0r

先安装新版autoconf,这会覆盖掉系统中的旧版本哦

1 2 3 4 5 6 
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz tar zxf autoconf-2.69.tar.gz cd autoconf-2.69 ./configure --prefix="$HOME/ffmpeg_build"  make make install 
1 2 3 4 5 6 
wget http://files.dyne.org/frei0r/releases/frei0r-plugins-1.4.tar.gz tar zxf frei0r-plugins-1.4.tar.gz cd frei0r-plugins-1.4 ./configure --prefix="$HOME/ffmpeg_build"  make make install 

安装 gnutls

注意:/etc/ld.so.conf要加上lib64。并且不要使用yum remove gnutls gnutls-devel

首先安装nettle:

1 2 3 4 5 6 
wget http://www.lysator.liu.se/~nisse/archive/nettle-2.5.tar.gz tar zxf nettle-2.5.tar.gz cd nettle-2.5 ./configure --prefix="$HOME/ffmpeg_build" –enable-shared make make install 

然后安装gnutls新版:

1 2 3 4 5 6 7 
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.9.1.tar.xz xz -d gnutls-3.1.9.1.tar.xz tar xf gnutls-3.1.9.1.tar cd gnutls-3.1.9.1 PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig ./configure –enable-shared make make install 

安装 rtmpdump

1 2 3 4 5 
wget http://rtmpdump.mplayerhq.hu/download/rtmpdump-2.3.tgz tar zxf rtmpdump-2.3.tgz cd rtmpdump-2.3 make make install 

安装 schroedinger

注:先安装好orc库

1 2 3 4 5 6 7 
wget http://code.entropywave.com/download/orc/orc-0.4.17.tar.gz tar zxf orc-0.4.17.tar.gz cd orc-0.4.17 ./configure --prefix="$HOME/ffmpeg_build"  make make install /sbin/ldconfig 
1 2 3 4 5 6 
wget http://diracvideo.org/download/schroedinger/schroedinger-1.0.11.tar.gz tar zxf schroedinger-1.0.11.tar.gz cd schroedinger-1.0.11 PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig ./configure make make install 

安装 soxr

注:新版libsoxr貌似与当前ffmpeg不兼容,用旧版

1 2 3 4 5 6 7 8 9 10 
yum install -y xz wget http://hivelocity.dl.sourceforge.net/project/soxr/soxr-0.1.0-Source.tar.xz xz -d soxr-0.1.0-Source.tar.xz tar xf soxr-0.1.0-Source.tar cd soxr-0.1.0-Source ./go cd Release/ make make install /sbin/ldconfig 

安装 speex

音频编码解码器。需要安装libogg库

1 
yum install speex-devel 

1 2 3 4 5 6 
wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz tar zxf speex-1.2rc1.tar.gz cd speex-1.2rc1 ./configure --prefix="$HOME/ffmpeg_build"  make make install 

ffmpeg ./configure 添加 --enable-libspeex

安装 libfreetype

字体呈现库,使用drawtext http://ffmpeg.org/ffmpeg-filters.html#drawtext-1

1 
yum install freetype-devel 

ffmpeg ./configure 添加 --enable-libfreetype

安装 libsdl库

1 2 3 4 5 6 7 
wget http://www.libsdl.org/release/SDL-1.2.15.tar.gz tar zxf SDL-1.2.15.tar.gz cd SDL-1.2.15 ./configure --prefix="$HOME/ffmpeg_build"  make make install /sbin/ldconfig 

安装 theora

Theora视频编码器,需要需要libogg,libvorbis和libsdl库

1 2 3 4 5 6 
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2 tar zjf libtheora-1.1.1.tar.bz2 ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-examples --enable-shared --disable-sdltest --disable-vorbistest make make install make distclean 

ffmpeg ./configure 添加 --enable-libtheora

安装 twolame

1 2 3 4 5 6 7 8 
wget http://downloads.sourceforge.net/twolame/twolame-0.3.13.tar.gz tar zxf twolame-0.3.13 .tar.gz cd twolame-0.3.13 ./configure --prefix="$HOME/ffmpeg_build"  make make install /sbin/ldconfig 

安装 xvid

1 2 3 4 5 6 7 
wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz tar zxf xvidcore-1.3.2.tar.gz cd xvidcore cd build/generic ./configure --prefix="$HOME/ffmpeg_build"  make make install 

更新FFmpeg及相关组件

更新依赖项

删除旧文件,更新依赖项

1 2 
rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,yasm,ytasm} # yum install autoconf automake cmake gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel 

更新 x264

1 2 3 
cd ~/ffmpeg_sources/x264 make distclean git pull 

然后运行

1 2 3 4 
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static make make install make distclean 

更新 x265

1 2 3 4 
cd ~/ffmpeg_sources/x265 rm -rf ~/ffmpeg_sources/x265/build/linux/* hg update cd ~/ffmpeg_sources/x265/build/linux 

然后运行

1 2 3 
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make make install 

更新 libfdk_aac

1 2 3 
cd ~/ffmpeg_sources/libfdk_aac make distclean git pull 

然后运行

1 2 3 4 5 6 
cd fdk-aac autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean 

更新 libvpx

1 2 3 
cd ~/ffmpeg_sources/libvpx make clean git pull 

然后运行

1 2 3 4 5 
cd libvpx ./configure --prefix="$HOME/ffmpeg_build" --disable-examples make make install make clean 

更新FFmpeg

1 2 3 
cd ~/ffmpeg_sources/ffmpeg make distclean git pull 

然后运行

1 2 3 4 5 6 
cd ffmpeg PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 make make install make distclean hash -r 

还原所有本文安装内容

1 2 3 
rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,yasm,ytasm} # yum erase autoconf automake cmake gcc gcc-c++ git libtool mercurial nasm pkgconfig zlib-devel hash -r 

注:如安装其它软件包需要自行删除

自动安装shell

https://gist.github.com/gboudreau/f24aed76b4cc91bfb2c1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 
#!/bin/sh   # Based on instructions found here: http://wiki.razuna.com/display/ecp/FFMpeg+Installation+on+CentOS+and+RedHat#FFMpegInstallationonCentOSandRedHat-InstallX264   if [ "`/usr/bin/whoami`" != "root" ]; then  echo "You need to execute this script as root."  exit 1 fi   cat > /etc/yum.repos.d/centos.repo<<EOF [centos] name=CentOS-6 – Base baseurl=http://mirror.centos.org/centos/6/os/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 enabled=1 priority=1 protect=1 includepkgs=SDL SDL-devel gsm gsm-devel libtheora theora-tools libdc1394 libdc1394-devel libraw1394-devel EOF rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6   rpm -Uhv http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm yum -y update   yum -y install glibc gcc gcc-c++ autoconf automake libtool git make nasm pkgconfig yum -y install SDL-devel a52dec a52dec-devel alsa-lib-devel faac faac-devel faad2 faad2-devel yum -y install freetype-devel giflib gsm gsm-devel imlib2 imlib2-devel lame lame-devel libICE-devel libSM-devel libX11-devel yum -y install libXau-devel libXdmcp-devel libXext-devel libXrandr-devel libXrender-devel libXt-devel yum -y install libogg libvorbis vorbis-tools mesa-libGL-devel mesa-libGLU-devel xorg-x11-proto-devel zlib-devel yum -y install libtheora theora-tools yum -y install ncurses-devel yum -y install libdc1394 libdc1394-devel yum -y install amrnb-devel amrwb-devel opencore-amr-devel   cd /opt wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz tar xzvf xvidcore-1.3.2.tar.gz && rm -f xvidcore-1.3.2.tar.gz cd xvidcore/build/generic ./configure --prefix="$HOME/ffmpeg_build" && make && make install   cd /opt wget http://downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.gz tar xzvf libogg-1.3.1.tar.gz && rm -f libogg-1.3.1.tar.gz cd libogg-1.3.1 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && make && make install   cd /opt wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz tar xzvf libvorbis-1.3.4.tar.gz && rm -f libvorbis-1.3.4.tar.gz cd libvorbis-1.3.4 ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared && make && make install   cd /opt wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz tar xzvf libtheora-1.1.1.tar.gz && rm -f libtheora-1.1.1.tar.gz cd libtheora-1.1.1 ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-examples --disable-shared --disable-sdltest --disable-vorbistest && make && make install   cd /opt wget http://downloads.sourceforge.net/opencore-amr/vo-aacenc-0.1.2.tar.gz tar xzvf vo-aacenc-0.1.2.tar.gz && rm -f vo-aacenc-0.1.2.tar.gz cd vo-aacenc-0.1.2 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && make install   yum -y remove yasm cd /opt wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar xzfv yasm-1.2.0.tar.gz && rm -f yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && make install export "PATH=$PATH:$HOME/bin"    cd /opt git clone http://git.chromium.org/webm/libvpx.git cd libvpx git checkout tags/v1.3.0 ./configure --prefix="$HOME/ffmpeg_build" --disable-examples && make && make install   cd /opt git clone git://git.videolan.org/x264.git cd x264 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static && make install   export LD_LIBRARY_PATH=/usr/local/lib/:$HOME/ffmpeg_build/lib/ echo /usr/local/lib >> /etc/ld.so.conf.d/custom-libs.conf echo $HOME/ffmpeg_build/lib/ >> /etc/ld.so.conf.d/custom-libs.conf ldconfig   cd /opt git clone git://source.ffmpeg.org/ffmpeg.git cd ffmpeg git checkout release/2.2 PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" export PKG_CONFIG_PATH ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" \ --extra-libs=-ldl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvpx --enable-libfaac \ --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libvo-aacenc --enable-libxvid --disable-ffplay \ --enable-gpl --enable-postproc --enable-nonfree --enable-avfilter --enable-pthreads --arch=x86_64 && make install   # Test the resulting ffmpeg binary cp $HOME/bin/ffmpeg /usr/bin/ ffmpeg -v 

参考

原文:http://www.yaosansi.com/post/ffmpeg-on-centos

赚钱宝+星域CDN,如何革新云计算行业?

2015 年即将过去,很多行业在过去一年有爆发式的发展,比如云计算行业。尽管阿里、腾讯等几大巨头依旧瞩目,但是迅雷旗下的网心科技携赚钱宝和星域 CDN 等两大创新产品对云计算行业的强势搅局却更让人难忘。



赚钱宝的 “uber 模式 ” ,为何能大行其道?



今年 4 月 23 日,迅雷在北京发布 “ 会赚钱的 ” 智能硬件产品赚钱宝。赚钱宝究竟如何帮助为用户赚钱?简单说来,就是用户的闲置带宽通过迅雷赚钱宝收集起来,并产生相应的奖励-水晶,用户可以通过水晶矿场 App 查看收益情况,并通过微信红包提现。 根据媒体评测,在 10M 带宽的网络环境下,迅雷赚钱宝月均收益为 90 元。而根据迅雷赚钱宝公布的大数据来看, 在购买第一代迅雷赚钱宝的用户中,光是靠出租闲置带宽,就有 41.05% 的用户月收益在 80-100 元之间,超过 100 元月收益的用户则有 10.58% 。 来自迅雷官方的数据显示,一代产品从 2015 年 4 月份众筹至 6 月京东售卖,共获得了 120 万用户的预约支持,更是为所有用户带来了共计超过 2 亿元的收益。而二代产品仅推出市场月余,截止到目前,已吸引粉丝近 110 万。



而且,更为重要的是,在这个过程中,迅雷以赚钱宝为入口,构建了一个类似于 uber 共享经济模式,并实现三方共赢的局面。即用户通过赚钱宝赚钱,企业通过赚钱宝用户提供的带宽资源得以更低成本的使用 CDN 服务,而迅雷则在通过向企业提供 CDN 服务获得自己的收益。基本原理就是通过迅雷赚钱宝来收集用户的闲置带宽流量,并将这些闲置带宽流量加以利用,通过技术手段为企业提供价格更为合理的 CDN 服务。



实际上,这种迅雷赚钱宝这种类似于 “uber” 的共享经济模式,如果在早几年出现,很可能会面临夭折。其一是在几年前智能硬件产品的接受度低,赚钱宝推出的可能需要对用户进行较多的说服教育,而如今智能硬件产品已经大行其道,能够更容易被用户广泛接受和使用;第二是共享经济的概念在几年前也不普及,而如今由于 uber 和滴滴打车的大行其道,人们更能够接受这种共享经济的产品,通过赚钱宝利用家里闲散带宽流量来赚钱的理念也更容易被接受。更重要的是, 10m 乃至 100m 高速小区宽带的大规模普及,使得家庭用户的带宽资源不再紧张,从而能够有意愿通过迅雷赚钱宝把闲散的资源分享出去。



而且,不仅如此,赚钱宝这种产品可能不会从迅雷之外的企业公司里出现,这可能还由迅雷的企业基因决定。为什么会是迅雷用共享经济的模式去引领这个行业的发展?而不是别家。实际上,这与迅雷公司在过去十多年在 p2p 下载和网络内容分发方面的行业积累和技术优势有巨大的关系,而前腾讯云总裁陈磊的加入,更是迅雷能够迅速推出赚钱宝这一个创新的智能硬件产品的决定性力量。



赚钱宝+星域 CDN :颠覆 CDN 行业,改造环境?



在迅雷赚钱宝第一代产品上线推出两月之后,迅雷旗下网心科技又联手小米发布了星域 CDN 产品,喊出要重新定义 CDN 行业的口号,流量资费低至 0.10 元 /GB, 只有市场价格的三分之一不到,而带宽费用低至 9999 元 / 月 /GB, 也只有市场价格的二分之一。 迅雷赚钱宝和星域 CDN 的推出所带来行业的创新意义不言自明,更是颠覆了传统 CDN 乃至云计算行业的很多玩法。主要体现在两个方面:



第一,让 CDN 的价格回归到了合理的水平。 自从以超低价格上线星域 CDN 服务上线之后,就像一条鲶鱼,搅动这个行业发生剧烈的变化,特别是传统 CDN 厂商的纷纷调低价格。 为何星域 CDN 能够如此低价?网心科技 CEO 、迅雷联席 CEO 陈磊在钛媒体创新大会上表示,一是这个行业的价格本来就比较虚高,星域 CDN 让价格回到了合理的水平;第二是星域 CDN 通过创新的技术和服务降低了成本,其技术原理就是通过迅雷的 p2p 下载技术将使用赚钱宝的家庭用户作为无限网络节点,因此能够以较低的成本向企业用户提供 CDN 服务,这使得很多企业开始重新考虑新建 CDN 的必要性。特别是对于 视频、游戏等需要根据用户量的增长持续扩展 CDN 能力的公司来说,与其投入巨额的人力和物力自建机房,不如选择与星域 CDN 合作。实际上,截止今年 11 月,星域 CDN 已经成功吸引了 2686 家企业前往预约,并在接入客户群体中赢得了较好的口碑。



第二 ,真正让构建绿色数据中心成为了现实。 在过去,摆放成千上万台的服务器的数据中心每天的耗电量惊人,而且机房内还得配备数量众多的空调散热设备,不仅电费高昂,而且不够绿色环保,而早在几年前,很多电信运营商和 IDC 厂商就一直在寻求建立更加节能环保的数据中心的方案。显然,从更加环保节能的角度来讲,不建或少建数据中心可能是最佳选择。不过,可能很多 IDC 厂商怎么也想不到,迅雷可以通过推出一个赚钱宝这样的智能硬件产品,以共享经济的方式来达到不建或少建机房的目的。而迅雷官方数据显示,目前已经通过赚钱宝在全国范围内布建了 30 万个家庭节点,相当于为国家节省了 800 万度电,更进一步的说,相当于为一个百万人口的城市减排 6700 吨二氧化碳。从这一点上来看,不仅是对行业有颠覆意义,更是对社会的环保节能有积极的作用。



不过,完全依赖用户上传的带宽流量来进行网络极点布局来服务企业可能是最理想化的状态。特别是目前赚钱宝的用户量没有达到海量的情况下,显然还不可能,迅雷也在自建一部分机房来作为网络节点的补充以满足互联网企业客户所需。而就在最近,第二代产品迅雷赚钱宝 pro 已经开始再次预约发售,而为了进一步扩大赚钱宝的用户人群,迅雷还聘请当红小生 李治廷作为产品形象代言人。



可以预见的是,一旦迅雷赚钱宝的用户达到几百万甚至上千万的量级,网心科技极有可能化身成为国内最大的 CDN 服务提供商,并且基于平台上有众多赚钱宝用户,一旦开放出来,引入更多的应用和游戏,还能够形成另一个独立的商业生态系统。

快网严波:解读CDN降价背后的竞争新格局

CDN实际上并不是一个新词语,但是近期的热度却一直走高,一方面是很多市场新入者以及云计算巨头纷纷降价,另一方面,基于CDN诞生了很多赚钱的路由器。CDN降价真正到了关键点?宝宝类路由产品背后又体现了怎样的创新思维?为此,记者在中国系统架构师大会结束后专门采访了快网联合创始人严波,了解了他眼中当下CDN的竞争态势。

QQ截图20160128164422.jpg

降价不是市场竞争的常态化

竞争是市场发展的助推器,良性的市场竞争将会加速产业的推进,从媒体报道以及厂商端来看,今年CDN的参与者越来越多,包括一些云计算厂商。但是,CDN最核心的是规模效应,谁的资源多,带宽池大,做调度的时候得心应手,而且跨网的调度越精细,用户体验越好。实际上,云计算厂商切入CDN领域会遇到规模上的瓶颈,除非超大CP的云平台,调度能力和资源足够丰富。即便如此,由于他们是非独立第三方CDN厂商,客户大都是还是自己体系中的关联公司,暂时没有威胁到传统CDN厂商的持续增长。

关于竞争对手们掀起的降价潮,严波认为大部分是新进者,主要出于两方面原因:一方面是搏眼球,向业界证明自己的存在。另一方面是响应李克强总理“提速降费”的号召。尽管有些厂商推出了超低价,但都有各自的前提条件。根本原因在于,CDN的价格已经降低到了可见的范围内,行业整理利润率并不高,这些新进者的价格实际执行过程中会和传统CDN厂商差不多,甚至会略高。因此,客户应该理性地看待此次降价潮。同时严波强调,企业生存必须要有适当的利润,整个CDN行业才能良性发展,那些学toC业务模式烧钱抢客户的行为会砸了自己脚。

技术变革没有到来,微创新一直在进行

在大众创业、万众创新的引导下,越来越多的企业和开发者纷纷投入到产品创新过程中,但是,这仅仅是创新而不是变革。严波认为,CDN技术本身基本的架构和技术原理没有变化,无非是把用户经常访问的内容分发到全国各地或者全球,让用户可以更快地访问这些内容。

目前,在CDN技术各方面的改进和创新有很多,以“FastLive视频直播加速”为例,各种秀场、游戏直播、演唱会、体育赛事等,直播的时间越来越长,互动性要求高,以前网络直播延迟几十秒用户都觉察不到,但互动时就会大大影响用户体验。笔者深有体会,几年前看NBA比赛直播,经常遇到和其他朋友信息不同步的情况,体验会很差。另外,点播和直播的终端越来越丰富,对码流的要求也不同,小屏幕用小码流很清楚,但是大屏幕必须要大码流才能实现高清,因此,能不能针对不同终端推送适合的码流也是一个革新点。目前快网在为央视网等各种直播网站提供FastLive直播加速服务。

总之,CDN行业一直在做微创新,尚不存在第几代CDN产品的分别。

快网产品策略,安全是下一步重点

目前,从产品角度,快网拥有ClouDCDN、CloudTCP、CloudXNS、ClouDCache四款产品,也是目前快网对外销售的主要产品。在中国系统架构师大会上亮相的“NewDefend牛盾”云加速,是快网下一步发展的重点。在严波看来,未来将会有越来越多的设备接入互联网,对安全的要求越来越高,安全性始终是大家关注的核心点。

据悉,“NewDefend牛盾”云加速产品主要应用于中小企业网站、以及对网站安全要求非常高的国有企业和政府网站,特点是内容不多,访问量不大,但是对安全要求非常高,具体原理是:通过“NewDefend牛盾”将原站屏蔽在后面,用户访问的时候先到达“NewDefend牛盾”,然后访问后面的内容,即使前面有网络攻击等安全问题出现,“NewDefend牛盾”会提供相应的安全保护,这有点类似局域网中的防火墙。

客户选择CDN遵循三原则

好产品还需要过客户这一关,客户买账才是王道。从客户选型角度,严波认为有三点非常重要。第一、质量。对于技术负责人来讲,他们更关注快速稳定的用户访问,不能慢,不能断。第二,交付能力。起决定作用的是资源池,资源越大越好,在客户有大需求时,CDN厂商能否快速地交付也成为客户考虑的重点。小型或刚起步的CDN厂商部署需要很长时间,短时间内满足不了客户需求。第三价格,对于商务负责人来讲,更关注成本问题。

典型案例解析

9月3日的大阅兵,央视网做了全程直播,而背后提供直播加速的就是快网。目前央视网是全国最大电视媒体在线直播平台。由于地位的特殊性,对直播的要求非常高,在直播产品上也有很多业内独特的地方。比如互动、时移、回看、多码流自适应、点播等。很多新颖的功能极大地提升了用户体验。央视网经过多方面的考虑,最终选择了快网“FastLive直播加速”。

总之,越来越多的企业进入CDN领域,并实现了更多创新性的改进对这个行业是个利好,但是也需要有更合理的市场竞争机制,让整个CDN行业良性发展,这需要像快网这样的行业第一梯队起到更好的引领示范作用。

一名CDN老兵的分享

大家好,我是网宿科技的郭文强。

很高兴在这里和大家分享一些CDN行业的经验,先简单地介绍下我自己~

我是08年加入网宿的,目前担任网宿CDN产品总监,主要负责企业应用加速、网站加速几条线的CDN加速产品。

在CDN架构设计和数据分发领域积累了几年的工作经验,我也算是一个CDN行业里的老兵了。今天我就以一个老兵的身份和大家来分享自己在这个行业的一些经验,欢迎随时拍砖和提问交流:)下面我就正式开始哈。

08年我刚加入网宿的时候,互联网的发展还远不如现在,有很多体验的制约问题,进入网宿后,我们就在着手来解决网络体验糟糕的问题。

当时国内CDN也处于很早期的阶段,一开始我们也遇到很多坑,早期CDN技术是以空间换时间的技术,通过靠近用户端的缓存来换取网络传输时间的减少,只能做静态内容加速。

但2008年的时候,Web2.0已经很普及了,许多个性化的数据是需要跟源站进行交互的,当时国内网络环境不是很好,这些交互数据都要跨越互联网上最遥远的距离(你在电信,我在网通),体验就会特别差。对于这个问题国内CDN厂商都没有比较好的解决办法。

传统动态加速的方案采用双线机房或BGP方式来解决,这样的方式只能在一定程度上缓解跨运营商访问的问题,对于长肥骨干网的传输低效问题没有比较好的解决方法。

再一个,当时路由和传统传输协议也都比较古老,无法适应动态数据的高效传输。我们针对这些问题进行逐个分析,在传输协议、路由算法、动态应用等方面仔细琢磨,在10年5月推出了一个动态加速技术。

这个技术是通过智能路由探测获得最佳访问路径,改造传统TCP协议的拥塞控制、重传算法等技术最终实现整体传输速度的提升,它可以解决动态数据在国内网络传输的问题。当时解决了很多电商网站体验不好的问题,因为电商网站的搜索、放购物车,验证码这些都是动态数据,体验不好,对购买的转换率影响还是挺大的。

QQ截图20160128164116.jpg

这是动态加速的一个产品图。网宿WSA通过在全国CDN各个节点均部署专用的服务器组成WSA加速平台,用户请求通过网宿全球负载均衡中心解析接入网宿WSA加速平台,平台自动进行动静态内容分离加速。静态文件如图片通过智能缓存由WSA边缘节点就近直接响应给用户,动态文件如查询通过网宿DAA动态加速技术实现快速与源站交互获取响应,通过智能动静态分离加速实现全站加速,提升用户访问体验。

12年随着移动互联网的兴起,移动网络它比固网的传输问题更大,我们有一个经验数据,互联网传输的70%时延是出现在移动网络,固网传输只占30%。而且和PC不一样,移动终端更复杂,性能、屏幕大小区别太大。所以对企业来说,移动端又多很多更难搞的问题,比如电商图片需要针对不同终端做多种样式,工作量大、存储管理需求。

所以在这个需求上,我们又开始考虑在动态加速解决方案上,增加移动端的很多个性化需求,帮源站解决终端适配、对移动网络协议针对性的协议优化,根据不同网络制式和终端的网络情况自动适配算法,解决到移动端的传输问题。

到2013年,IPv4地址分配耗尽,又出现新的问题,怎么让网站和用户之间在IPV4与IPV6双向兼容,很多网站需要一个低成本的解决方案。所以我们在用户和网站之间搭建了一个智能转换的平台,源站不需要做任何事情,只要接入这个平台,让IPV4或IPV6的用户都能自由的访问IPV4或IPV6的网站。

所以可以说是,最初的一个动态加速,在适应互联网变化的需求,不断的在思考怎么解决动态数据在网络传输中的各种问题。

动态数据需要和源站进行交互,需要源站的数据库来产生。很多大公司,比如BAT在数据库上投入了大量的资源,对数据库进行优化,来不断的减少数据库计算的时间。

但从我们和客户的实际交流中会发现,有很多银行、证券、家电制造业的传统企业,它是做不到像BAT一样投入很多的资源来去做数据库的优化,所以他们在数据库的计算上遇到的问题就更大。就迫切需要一种办法来解决数据库计算时间过长的问题。

最后我们想到了异步的方式,可以将数据库响应时间对页面加载时间的影响减到零。这个技术,我们叫动态流传输,我们也为这个技术在中国与美国都申请了专利。

除了不断的去改善动态数据的传输速度,另外,保证网站内容的安全也是非常重要的一点。网站内容安全涉及到多个方面,比如盗链、劫持和攻击,针对这些问题,我们利用时间来做时间戳防盗链,利用HTTPDNS来防劫持,通过流量清洗和高防集群来防攻击。

但是对于篡改,CDN只能解决CDN内部和CDN到源站两块,要实现端到端全程的防篡改是比较困难的,所以我们会建议客户通过HTTPS来解决篡改。其实我们从服务客户的经验来看,也发现越来越多的客户开始采用HTTPS协议,来提高网站安全性。

https协议比普通的http协议流量大,而且因为要加密解密,所以传输会更慢一些。早期,很多客户为了保证安全评级,是宁愿牺牲网站访问体验,不给https做CDN加速的。但是发现不做加速,网站用户访问体验很差,这对于很多网站来说是致命的,你安全是保障了,但是用户干脆不用了。那怎么办呢。

2011年,针对这个问题我们就想了一个办法:给客户开发个加密客户端,让客户通过客户端对私钥进行加密,私钥通过加密后上传到网宿CDN节点,加密的密码掌握在客户自己手上,部署过程由客户通过后台自主实现。

同时,这个过程中,为了打消客户的安全顾虑,增强CDN系统本身的安全性,我们申请并且通过了全球最严格的PCI DSS认证。

但是,所谓道高一尺,魔高一丈,Openssl协议在安全运作多年后在2014年爆出发像业界有名“心脏出血”漏洞等事件,我们就在思考,现在的网络发展太快了,而且爆发出来的攻击也越来越多,私钥部署在CDN系统上,尽管他是加密的,但还是会有风险的。

而且也不段有客户从这个角度给我们提更高的需求,所以我们又开始想一个更安全的办法来解决HTTPS的传输问题。怎么可以不拿私钥,又能提供CDN加速给客户,保证网站的访问体验。

于是我们做了一个叫做 “无证书驻留HTTPS加速方案”,简单地说,就是实现了客户不用提供证书给我们,也能够实现HTTPS加速。

这是无证https加速的一个原理图。

QQ截图20160128164158.jpg

它的具体实现是:



1A:用户发起https请求,进行ssl握手,公钥加密客户端生成随机密码后发往CDN节点。



1B:CDN节点与私钥服务器建连,通过加密的方式将客户端发来的公钥加密的随机密码发往源站的私钥服务器,私钥服务器通过私钥解密获得随机密码,然后再将随机密码通过加密返回给CDN节点。

2A:CDN节点和终端用户双方都拥有随机密码,即可以正常通信发送加密数据。



2B:CDN节点回源请求则再与源站真实服务器建立https连接获取网站内容。

这对于很多顾虑将https证书提供给第三方的银行啊,金融支付的企业来说,就可以更放心的来做CDN加速。

最后,想分享一个做CDN的感悟。区别于做别的产品,CDN相对是一件满寂寞的事情,为什么,服务太靠后了,大家感知不到,而且现在很多新的创业公司,新技术、领先、智能硬件各种,都能吸引很多的眼球。CDN不是,它一定是一个跟随性的业务。

一定是等某一个互联网业务起来了,CDN再去为它服务,解决它带来的传输问题,让它能发展好,从这个层面上来说,做CDN不是一件吸引眼球的事情,很寂寞。

即使技术很厉害,也很难被人了解。这两点也是网宿一直在坚持的。也是网宿能做到今天很重要的一点。

好,谢谢大家,我的分享到这里。接下来是互动时间,看看大家有什么问题,可以交流一下~

问答环节:

问:除了https,CDN还有其他手段来对抗运营商劫持和dns劫持么?



答:dns劫持可以采用HTTPDNS的方式来解决,运营商的劫持一般发生在小运营商。



我们统计了下,全国大约有190多家小运营商,在其中的160家中网宿都有节点,保证网宿的客户不受劫持影响,另外三十多家我们通过HTTPDNS来解决。



同时,我们跟全国dns服务管理员维护着比较好的关系,当我们的客户出现DNS被投毒和劫持的时候,我们可以协助解决。



所以,CDN也是一个符合二八定律的行业,花20%的投入就能解决80%的问题,剩下的20%的问题需要花额外80%的投入才能解决。



例如,为了 应对DNS攻击,我们将我们的dns服务能力提升到10亿qps。

虽然我们有大量的加速域名,但正常情况下我们的dns请求数不到20万qps,为了应对攻击我们也投入巨大,愿意为保障客户投入更多的资源和成本。

问:网宿有没有在研究P2P的数据下载加速?类似迅雷星域那种?



答:1、P2P技术我们一直在CDN里头在使用,P2P技术的好处在是针对大文件的传输优化上是非常好的,尤其是像视频类大文件类的传输,我们一直都在视频传输方案、下载的传输方案上都有所使用。但它并不适用于全场景,比如网站加速、图片类。



2、大规模的P2P面临着复杂的管理问题:上行带宽使用过多会造成链路层面的拥塞,对控制能力要求很高。内容管控面临风险。篡改用户内容相对容易。信息安全方面,用户端的抗攻击能力也肯定不如CDN节点。



最后,用户端的网络环境和终端能力都是相对不稳定的,P2P节点服务会受限于家庭端能力和网络环境,而且P2P节点多,对调度能力是非常大的挑战,所以P2P节点相对于CDN节点,它服务的稳定性和调度效率还有待实践考证。

对于企业级客户而言,对服务质量、安全和稳定要求都是很高的,所以P2P的服务模式,目前来看还有待验证。

问:现在的研究和应用情况如何?



答:现在的应用和研究情况,您指的是我们的还是迅雷的?如果是我们的:对于目前我们服务的客户而言,我们认为CDN现有的IDC节点的服务方式是最可靠并且是最稳定安全的,所以我们目前采取的是这种方式。P2P只能作为有限的补充,我们不认为P2P方式能够占据太大的比重。而针对家庭端越来越大的重度应用需求,我们更倾向的做法是社区云的方式,将CDN节点下沉至社区。

问:如果源站在国内,通过用海外cdn节点,能解决海外用户访问体验? 另外一些国际大公司网站,他们是多站点,还是一个源站+cdn?



答:基本上国际大公司网站都是主备源站+CDN的模式,当然也有国际大公司在国内设立中文站+CDN服务

问:最后我们想到了异步的方式,可以将数据库响应时间对页面加载时间的影响减到零。这个技术,我们叫动态流传输。这个是否可以解释一下,具体解决的是哪个场景,加速后效果区别?



答:举个例子,电商的订单页面,源站数据库处理时间是5秒,内容传输10秒,如果不用这个方案,加速后,内容传输时间变为5秒,用了这个方案后,整体时间可压缩到5.1秒。

问:阿里云等公有云的CDN有跟网宿合作吗?



答:像七牛、金山、联想、UCLOUD、腾讯等云厂商跟网宿都有合作。我们通过和这些公有云厂商合作积累了非常多的公有云服务经验,你要不要也来试下。

问:10亿qps是什么解决方案?用服务器累么?



答:首先是提升单机能力,采用Intel DPDK和多队列网卡,我们可以让DNS服务器的万兆网卡跑满,在这基础上再做一些服务器集群,分区DNS等等。

2016 亚太CDN峰会拟邀请单位名单

2016 亚太CDN峰会拟邀请单位名单,包括云服务提供商腾讯云、阿里云、百度云、金山云、迅雷云、七牛云、网易云、亚马逊AWS、乐视云、Ucloud等,专业第三方CDN服务提供商蓝汛、网宿科技、世纪互联、Akamai、Limelight、帝联科技、北京快网等

云服务提供商 腾讯云、阿里云、百度云、金山云、迅雷云、七牛云、网易云、亚马逊AWS、乐视云、Ucloud等
专业第三方CDN服务提供商 蓝汛、网宿科技、世纪互联、Akamai、Limelight、帝联科技、北京快网等
电信运营商 全国各地电信IPTV运营商
通信服务提供商 华为、中兴、烽火等
广电运营商 歌华有线、东方有线、江苏有线、天威视讯、吉视传媒、陕西广电等
OTT视频服务提供商 iCNTV、国广东方、GiTV、东方明珠、华数TV、芒果TV、南方传媒、爱奇艺、优酷土豆等
垂直类排名网站 去哪儿网、新浪微博、多玩游戏网、汽车之家、起点中文网、蚕豆网等
家庭游戏应用平台 中兴九城、完美世界、奇珀市场
当贝市场 沙发管家 爱家TV等
智能家居与物联网平台 QQ物联,阿里智能,海尔智能家庭创新中心,中国电信智能家庭运营中心,紫光物联等
VR/AR产业 爱奇艺、暴风魔镜、腾讯MIG、百度未来商店等
移动应用平台及服务提供商 小沃科技、咪咕视讯、PP助手、360手机助手、腾讯应用宝等

国内外CDN服务提供商大全,含CDN网站地址

国内外CDN厂商列表100强,包括蓝汛、网宿科技、世纪互联、Akamai、Limelight、帝联科技、北京快网、腾讯云、阿里云、百度云、金山云、迅雷云、七牛云、网易云、亚马逊AWS、乐视云、Ucloud等等传统专业CDN也有云CDN服务提供商

CDN序号 国内CDN服务商域名 国内CDN服务商
1 chinanetcenter.com 网宿CDN
2 ChinaCache.com 蓝汛CDN
3 Dnion.com 帝联CDN
4 Fastweb.com.cn 快网CDN
5 Shatacloud.com 沙塔CDN
6 Xycdn.com 网心CDN
7 Fastcache.com.cn 速网CDN
8 72e.net 亿动CDN
9 Qy.com.cn 群英CDN
10 Qcloud.com 腾讯云CDN
11 Yaocdn.com 万根CDN
12 Yscdn.hs.com.cn 华数CDN
13 Wdcdn.com 万德CDN
14 Ofidc.com 奥飞CDN
15 Plcdn.cn 宝腾CDN
16 727idc.com 新世纪CDN
17 Aliyun.com 阿里云CDN
18 Chinaspeeds.com 思必达CDN
19 Cdnbest.com 帮腾CDN
20 Verycdn.com 云端CDN
21 Cdnzz.com 格安CDN
22 Cloud.360.cn 奇虎CDN
23 win-man.com 云漫CDN
24 Ctyun.cn 电信CDN
25 Qiniu.com 七牛CDN
26 Lesucdn.com 乐速云CDN
27 100dns.com 亿讯CDN
28 51cache.com 华云CDN
29 Upyun.com 又拍云CDN
30 Cdnway.com 南天CDN
31 Jiasule.com 创宇知道CDN
32 Baidu.com 百度云CDN
33 Yunfancdn.com 云帆CDN
34 Linkidc.com 零刻数据CDN
35 Zoneidc.com 纵横数据CDN
36 Diycdn.com CDN
37 123cdn.com 思海CDN
38 Cdnplus.com CDN
39 Linkwww.com 指南针联网CDN
40 Yiqikuai.com 一起快CDN
41 Kwww.com 上海快网CDN
42 u1w.cn 优易互联CDN
43 Ebaidu.net 八度CDN
44 Powercdn.com 动力在线CDN
45 Huawei.com 华为CDN
46 Zte.com 中兴CDN
47 Fiberhome.com.cn 烽火CDN
48 Chinacdn.com CDN
49 Dns110.com 博铭CDN
50 Tingyun.com 听云CDN
51 China-cdn.net 炫彩CDN
52 Landui.com 蓝队CDN
53 Enkj.com 亿恩CDN
54 Yjindun.com 云金盾CDN
55 Shimai.cc 世迈CDN
56 Hkcdn.net 好快网CDN
57 Edong.com 欧网CDN
58 92game.net CDN
59 Jiasulo.com 砖石网络CDN
60 Baiyunqianrong.com 思羽CDN
61 Placdn.com 盾网CDN
62 Cnhlj.com 亿林CDN
63 Pow.net.cn 世信互联CDN
64 Iaiyun.com 爱云CDN
65 Appexnetworks.com 华夏创新CDN
66 Zxway.cn 知心伟业CDN
67 Daidc.com 海量CDN
68 Syhhidc.com 恒昊互联CDN
69 Now.cn 时代互联CDN
70 Longcdn.com 神之脉CDN
71 Eccom.com 华讯CDN
72 Henghost.com 恒创CDN
73 Bonree.com 博睿宏远CDN
74 Ucloud.cn 优刻德CDN
75 Uspeed.com.cn 优速CDN
76 Letvcloud.com 乐视云CDN
77 Ruijie.com.cn 锐杰CDN
78 Powerise.tv 创智CDN
79 Oneidc.net 壹互联CDN
80 West.com.cn 西部数码CDN
81 Asdtv.com 未来云CDN
82 H3c.com.cn 华三CDN
83 Temobi.com 融创天下CDN
84 Avit.com.cn 佳创视讯CDN
85 Cloudgate.com 云捷CDN
86 Yovole.com 有孚CDN
87 Viewgood.com 远古CDN
88 sibore.com 视博网媒CDN
89 Ruiboyun.com 云视睿博CDN
90 Hugedata.com 汇吉递特CDN
91 Linktom.com 互联互通CDN
92 999-cdn.com CDN
93 Cstor.cn 云创CDN
94 Idcs.cn 天互CDN
95 Grandcloud.com 盛大云CDN
96 Ksyun.com 金山云CDN
97 Bokecc.com 梦之窗CDN
98 Quklive.com 趣看CDN
99 Cmsoft.10086.cn 中移CDN
100 capitalcloud.net 首云汇金CDN
101 Polyv.net 保利威视CDN
102 Bairuitech.com 佰锐CDN
103 baofengcloud.com 暴风CDN
104 cybercloud.com.cn 视博云CDN
105 xst365.com 星视通CDN
106 Wsview.com 云宇CDN
107 smvp.cn 石山CDN
108 Suirui.com 随锐CDN
109 Woan.cm.cn 沃安CDN
110 Ku6ms.com 酷6CDN
111 sobeycloud.com 索贝云CDN
112 skygrande.com 云雅CDN
113 nanoyun.com 新锐天博CDN
114 Onecloud.com 亦云CDN
115 573v.cn 遨游讯海CDN
116 Tsytv.com.cn 天山云CDN
Sinnet.com.cn 光环新网CDN

国外CDN服务提供商大全,包括Akamai、CDNetworks、Edgecast、Limelight、CloudFlare、amazon

1 Akamai.com Akamai
2 CDNetworks.com KDDI
3 Edgecast.com Edgecast
4 Limelight.com Limelight
5 CloudFlare.com CloudFlare
6 Xycdn.com ProCDN
7 fastly.com fastly
8 aws.amazon.com CloudFron
9 Cachefly.com Cachefly
10 Cdn77.com CDN77
11 cdnify.com CDNify
12 cdnsun.com CDNsun
13 cdnvideo.com CDNvideo
14 highwinds.com Highwinds
15 Incapsula.com Incapsula
16 internap.com Internap
17 keyCDN.com KeyCDN
18 Leaseweb.com Leaseweb
19 Level3.com Level3
20 maxcdn.com MaxCDN
21 gnenix.com GNENIX
22 Quantil.com QUANTIL
23 tatacommunications.com TATA
24 xcdn.cn XCDN

盘点国内常用 CDN 公共库加速服务

百度公共CDN为站长的应用程序提供稳定、可靠、高速的服务。包含全球所有最流行的开源JavaScript库。



更快更稳定:百度公共DNS拥有和百度搜索一样的基础网络、基础设施以及系统架构。



纯净无劫持:作为中国最大的流量公司,百度是DNS劫持的最大受害者。百度做公共DNS的目的一方面在于为广大网民提供一个纯净安全的流量环境,另外一方面也想通过产品的力量来制约劫持乱象。

安全防护:百度公共DNS的另外一个附加功能是安全防护。依托百度安全搜索技术,如果您所访问的网站存在病毒、木马风险,我们将实时予以拦截和提示,有效保证使用者的上网安全。



CDN亲和:百度公共DNS拥有遍布全国的递归出口节点。当查询请求未命中主缓存时,我们会将请求调度到离用户最近的递归节点来进一步查询。因此不会影响到CDN的调度进度。另外一方面,我们正在积极实施edns-client-subnet,该技术会大幅提升CDN调度精度,相信CDN厂商会喜欢。

又拍云JS库CDN服务



 

又拍云存储是杭州纬聚网络有限公司旗下项目,成立于2005年6月,主要专注于海量小文件的存储与分发及图片云计算领域。提供的两大核心服务:静态文件云存储、CDN加速处理。



“做静态资源分发的又拍云 ‘云分发’ 推出动态作图”,这个表述听起来有些拗口。简单说,就是国内云存储和 CDN 服务商又拍云(产品品牌名现改为 “UPYUN”)。



UPYUN推出的 “云分发” 是一项专注于图片、音频、视频等静态文件的 CDN 服务。



UPYUN “云分发” 可以理解为是将 UPYUN 自身的服务器替换为开发者服务器,其他一切条件基本相同。而所谓 “动态作图” 的概念,包括了两层含义:一是,开发者无需像使用传统 CDN 一样,在上传文件前先做出对应的缩略图版本,“云分发” 可以动态地对原图文件进行调取和处理。二是,UPYUN “云分发” 在各个 CDN 节点缓存的缩略图文件,可以与开发者服务器上的文件实现版本同步。



新浪云计算CDN公共库



浪云计算是新浪研发中心下属的部门,主要负责新浪在云计算领域的战略规划,技术研发和平台运营工作。主要产品包括 应用云平台Sina App Engine(简称SAE)。



AE是Sina App Engine的简称,新浪研发中心于2009年8月开始内部开发,并在2009年11月推出,SAE是新浪云计算战略的核心组成部分。



SAE选择在国内流行最广的Web开发语言PHP作为首选的支持语言,Web开发者可以在Linux/Mac/Windows上通过SVN或者Web版在线代码编辑器进行开发、部署、调试,团队开发时还可以进行成员协作,不同的角色将对代码、项目拥有不同的权限。



SAE平台安全分为SAE应用安全和SAE账号安全两个部分,SAE应用安全又分为数据安全和代码安全两部分,SAE账号安全分为管理安全和消费安全两部分。

SAE安全实践有两种隔离方法,分为沙箱隔离和服务隔离,其中,沙箱隔离分为PHP沙箱、Python沙箱、Java沙箱;服务隔离又分为存储类服务(MySQL)、计算类服务(Image)。



SAE安全实践的访问安全也分为两类,一类是对内访问安全,一类是对外访问安全,对内访问安全包括验证方式、网络控制;对外访问安全包括验证方式、网络控制、防火墙。



七牛云存储 开放静态文件CDN



像 Google Ajax Library,Microsoft ASP.net CDN,SAE,Baidu,Upyun 等 CDN 上都免费提供的 JS 库的存储,但使用起来却都有些局限,因为他们只提供了部分 JS 库。但七牛云存储提供一个尽可能全面收录优秀开源库的仓库,并免费提供 CDN 加速服务。



七牛云存储是由七牛提供的在线存储服务,通过云端接口向企业客户提供网上无限存储空间,和传统的云存储服务(如 Amazon S3)不同,七牛云存储还增加了上传下载传输加速以及富媒体云端处理特性.



目前七牛已经拥有数千家客户,你会发现其中有很多都是像知乎、Weico、Camera360、美图秀秀、蝉游记和Vida等UGC(用户产生内容)类产品,尤其是在图片社交领域。这是因为,除了我在前面所说的“云存储”比传统方案更节省成本外,七牛云存储还有一个独一无二的特性――支持用户将文件从客户端直传到云服务器中。



常见的云存储上传文件流程一般如下: 用户 =>应用服务器 =>云存储提供商 这样多了一次上传的流程,和本地存储相比,会相对慢一些。 而七牛提供了客户端自传的功能,流程可以改成: 用户 =>七牛 =>应用服务器 用户直接上传到七牛的服务器,通过DNS智能解析,七牛会选择到最近的最合适的ISP服务商节点,速度会比原先快很多,上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如key)post回应用服务器,应用服务器进行保存即可。

360网站卫士CDN前端公共库

 

托管在360众多的全国CDN节点上,覆盖电信、联通、移动等主流运营商线路,您可以在自己的网页上直接通过script标记引用这些资源,让网站访问速度瞬间提速!



360 CDN是360网站卫士中一项网页加速功能,可防止CC、DDos攻击,本身以安全为首任的360,其CDN商品也声称具有防跨站、防注入、防篡改,防挂马等功能,尤其是加速设置中可自行设置缓存内容,网站速度不快的站长建议使用360 CDN,360网站加速因为多节点的配置使得其在国内加速效果不错。



360网站安全检测服务(webscan.360.cn)是国内最大的免费网站安全检测产品,独有漏洞检测、漏洞修复和后门识别查杀等功能,目前已经为14亿个网站页面进行过安全检测,发现漏洞7600多万个,为近百万家网站提供了全面的安全评估服务。此外,广大站长可以同时部署免费的360网站卫士,既可以有效防范各类黑客攻击,更能够为网站访问提供CDN加速、云安全防护等实用功能。



360的步伐现在是越来越快了。各种技术和提供的服务更新的速度是飞快的。提供了大多数的前端js库,还在自己的服务器上面缓存了Google的前端公共库和免费字体库,这个算是其他国内的cdn公共库没有的。

国内5种主要的CDN市场,你都了解吗?传统专业CDN、云CDN提供商、代理CDN厂商、自建的CDN、创新型CDN

国内CDN市场将迎来更加激烈的竞争,当下国内CDN市场主要包括5种类型:

1传统的专业CDN提供商

主要包括蓝汛通讯、网宿科技和帝联科技等,通过企业自身建设的服务器,提供专业的CDN服务;



网宿科技是国内领先的互联网业务平台提供商。网宿科技通过与国内外各大基础电信运营商合作,形成了跨运营商的全球互联网业务平台,IDC、CDN节点近百个,拥有带宽峰值可达600G。网宿依托丰富的IDC资源和强大的研发力量,已建立覆盖全国的CDN网络,自建的研发中心在近几年先后成功地研发了数据中心管理平台、CDN技术2.0加速平台和Myview2.0 流量可视平台、Web加速平台、流媒体分布加速平台、高速下载平台、速通VPN管理平台等,其中速通VPN管理平台被认定为“国家高新技术成果转化项目”;

 

帝联是专业的CDN服务商,为传统互联网、移动互联网、企业应用提供最具专业性的CDN加速服务,提升用户的网络体验度,最终使企业获得用户的青睐,增加用户粘度的过程中得到收入的转化。帝联科技在全国各主要城市拥有250多个节点,带宽储备突破2500G,网络节点设备超过6500台,通过自主研发的EasyCDN网络加速技术,实现在互联网动静态页面、文件传输过程中的上传下载与分发、流媒体视频点播与直播等应用方面的高品质访问,从而帮助客户改善最终用户的互联网访问体验。

 

北京蓝汛是中国领先的专业CDN服务提供商。是一家完全拥有自主产权的 CDN 服务商。凭借 16 年的积累,拥有每天 96 亿次网页展示、每天 9.6 亿移动和互联网终端客户、每天 9.7 亿次视频及多媒体文件传输等海量承载能力的 CDN 平台。建立了较为成熟的研发团队,结合产品与市场结合,推出了满足客户需求的多种产品,从网站加速、移动加速、企业内网/应用加速再到视频直播/点播加速,覆盖互联网、金融、广电/媒体、政府、传统行业、快销、教育行业等,提升了各种商业环境网络的速度。

2传以阿里云、腾讯云、UPYUN为代表的云CDN提供商

阿里CDN服务器原先主要用于淘宝图片的分发,在全国32省(市、区)均有服务器,有200多个节点,在一线城市运营商均有机房,甚至在外国也有30余个节点分布,以提供国外用户的加速服务。

 

腾讯云CDN国内节点达到400+个,分布在6个地区,28个省份,20+个运营商,带宽总量超过20T。2014年腾讯云CDN已覆盖香港和美国节点,2015年将扩大海外资源分布,支持全面的海外的加速。

 

UPYUN 依托超大规模的处理集群,提供图片缩略图、音视频转码等服务。让用户轻松享用大规模云端处理能力。CDN服务作为UPYUN的核心优势,依赖于全球130个CDN节点,未来UPYUN也将在CDN节点拓展方面继续投资。

3以Ucloud、七牛为代表的代理CDN厂商



UCloud推出北美节点加速服务后,迅速扩展至全球37节点。其中北美13节点,南美2个,欧洲8个,亚太地区11个,南非2个,澳洲1个。意味着UCloud已率先推出国内CDN厂商、云服务厂商中海外加速节点全球覆盖率最高的分发方案。UCloud应移动互联网时代的CDN服务也同样具备如下特征:1.满足高速访问需求,即由云计算发展而来;2.满足全球访问需求,在全球部署节点;3.满足中立第三方原则,规避潜在竞争和站队;4.服务统一,给予初创企业平等的服务待遇;5.价格透明,适合初创企业的服务价格。

 

作为国内领先的一站式数据管理服务厂商。七牛将牛多家CDN服务商整合到我们的数据服务生态上来,通过持续引入国内外主流CDN,来提升访问体验。七从最早的在线数据存储、数据访问加速、图片音视频等富媒体数据处理,再到近期推出的一系列第三方数据处理服务,比如色情图片识别功能(鉴黄云服务)等七牛已经拥有了20多万家用户,范围覆盖各行业:新型移动互联网,例如知乎网、36Kr、美图秀秀、饿了么、足记等;传统互联网,例如网易、顺丰科技、平安、大众点评网、汽车之家等;转型中的传统企业厂商,例如步步高、OPPO、中兴、海康威视等;新兴硬件,例如乐蛙科技。每天上传文件达到5亿个。

4互联网企业自建的CDN平台

百度在全国建设100多个CDN节点,除了用于自身搜索引擎业务外,还为用户提供云加速服务,CDN节点在京津冀、东部和南部沿海、华中、四川等地区覆盖较密。

 

优酷作为国内最顶尖的视频服务提供商,其对于CDN的运用主要集中在自身在线视频直播及点播业务,其境外主要覆盖北美、港澳台、日韩、新加坡、澳洲和英国,境内主要覆盖北上广深以及长三角、珠三角地区。

 

搜狐也自建了167Gbps的CDN,共有29个节点,1000多台服务器,主要用于自身页面加速,国际上主要覆盖美国和亚洲。

 

5以迅雷为代表的创新型CDN提供商

以迅雷为代表的创新型CDN提供商,其主要特点通过P2P的技术和众筹智能硬件的模式来扩展节点,实现无限节点的CDN服务模式。简单来说,就是通过智能硬件收集家庭宽带中闲置的流量,然利用这些流量和硬件节点,建立起一个结构庞大、覆盖面极广的CDN节点网络。这是共享经济在CDN领域的体现。

 

技术创新可以说是迅雷CDN服务的砝码之一,也是迅雷重新定义CDN的开始,主要表现在以下几点:



一.无限结点



迅雷让普通家庭用户分享自己的闲置带宽,通过集中优化后再输送给企业,企业用以提升用户体验,在这个过程中,用户得到了实实在在的收益,迅雷实现了十万级的节点布局,企业也可以在提升服务质量的情况下,大幅缩减成本。



二.星域调度



实现对海量信息和数据的实时处理,并通过星域调度打造”无限节点式内容分发网络”.使用户可实现住宅小区内拉取内容数据,让CDN传输距离近至一公里,速度更快,稳定性更佳。



三.动态防御



主要体现在两个方面:一是有效防止DDOS攻击,二是动态防盗链。



四.弱网加速



在偏远地方,如乡村、酒店等,网络信息弱的情况下,获取信息时容易出现断网、网速慢等现象。得益于迅雷的无限节点,用户可以通过近距离的节点获取信息,从而得到更优的网络服务体验。