系统架构文档
文档编号
文档状态草案、秘密
系统架构方案编写人
编写日期
最后修订周汉仓2011年03月01日
系统架构文档
系统架构文档
修改记录
日期
2011/3/1修改人周汉仓编写初稿修改内容
系统架构文档
目
1. 录
2.
3. 概述........................................................................................................................................... 1编写目的....................................................................................................................... 11.1. 系统架构图................................................................................................................... 11.2. 系统架构说明........................................................................................................................... 2系统模块说明............................................................................................................... 33.1. 3.1.1. squid 视频和图片加速................................................................................... 33.1.2. lvs/nginx负载................................................................................................. 33.1.1. haproxy 负载均衡........................................................................................... 33.1.4. Resin(tomcat)/nginx(apache)web服务............................................................ 33.1.5. Interface 数据接口........................................................................................... 33.1.6. Nfs 视频存储..................................................................................................... 33.1.7. Mysql 数据库.................................................................................................... 3数据流说明................................................................................................................... 33.1. 访问流程........................................................................................................... 33.2.1. 流程说明........................................................................................................... 33.2.2. 数据库的应用和维护................................................................................................... 33.1. 3.3.1. mysql 架构图.................................................................................................... 33.3.2. mysql 常用引擎的特点..................................................................................... 3关于mysql replicateion .................................................................................... 33.3.3. 3.3.4. mysql 的维护.................................................................................................... 3常见问题(FAQ ).................................................................................................................... 4
1. 概述
1.1. 编写目的
1,本文档的编写目的是给公司推荐个人在web 流媒体服务方案上的系统架构建议。
1.2. 系统架构图
标注:
1,在图中的流程线不代表tcp 连接,而是代表我想表达的数据传输的方向。
2,数据双向传输的我用红色线标注。
3,方框不一定代表要使用一台服务器,或者一个应用不一定代表要使用一台服务
器,可以一个服务器放置不同的应用。也可以多个服务器放置相同的应用
4,虚线的存在是因为交错的线路比较多,我提供虚线便于我们能比较好的看清楚
图中线路的走向。
2. 系统架构和说明
我们系统中有下面7个应用层,下面是对相应的应用进行一个介绍:
2.1. 系统模块说明术
Squid 语说明只是作为视频和图片的加速分布在我们机房各个点
Lvs 负载均衡
Haproxy
Resin(tomcat)/ngnix(apache)
web 服务
Interface 数据接口
Nfs 视频存储
Mysql 数据库对外提供给用户接入,提供一个虚拟ip 进行前端系统的负载均衡第二层代理和系统负载均衡,相对其他代理具有搞并发和可用性Web 服务池,提供web 服务的应用程序,tomcat 处理动态程序,ngnix 提供静态页面和视频处理写入和读取数据接口一个存放视频文件的存储用来存放各种数据的数据库
2.1.1squid 提供视频图片加速
现在对视频和图片的加速虽然出现一些其他相应的工具,但是相对来说在稳定和工具成熟度上来说squid 是最稳定,在完全熟悉相应的配置结构之后,经过优化,对视频和图片加速squid 是最强大的。
2.1.2lvs/nginx负载均衡:
在现在的系统服务中,我们面对我们的客户,我们提供一个高可用性,可扩展行的web 服务,我们在前端一般使用相应的负载均衡,现在负载均衡有多种解决方案,lvs 是相对非常成熟也最常用的方式,但是在web 服务中,我们有时候也采用nginx 作为前端负载均衡的方式解决。只是nginx 在解决负载均衡的时候配置方案和nginx 的代理形式有比较大的相似性,但是经过长时间的应用这个解决方案简单,并且稳定。相对lvs 维护也要简便很多。并且nginx 的并发处理也非常不错。但是nginx 处理的方式是和代理模式相同。但是在安全性喝处理大并发,高可用性,安全性,提供除虚拟ip 之外的透明访问上,上lvs 有不可替代的能力,ngnix 相对来说只是一个代理负载均衡的工具。
2.1.3. :haproxy 负载均衡
HAProxy 提供高可用性、负载均衡以及基于TCP 和HTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G 的并发。HAProxy 特别适用于那些负载特大的web 站点,这些站点通常又需要会话保持或七层处理。HAProx y 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web 服务器不被暴露到网络上。其支持从4层至7层的网络交换,即覆盖所有的TCP 协议。就是说,
如果说在功能上,能以proxy 反向代理方式实现Haproxy 甚至还支持Mysql 的均衡负载。
WEB 均衡负载,这样的产品有很多。包括Nginx ,ApacheProxy ,lighttpd ,Cheroke 等。但要明确一点的,Haproxy 并不是Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或
动态(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http 服务。
2.1.4R esin(tomcat)/nginx(apache):2.1.4R
我们提供web 服务一般都是采用相应的服务应用程序resin(tomcat)作为java 的解析是大多数公司采用的方案,nginx 和apache 就是相应的对静态文件进行处理,结合两者一起提供web 服务是现在比较有效率高并发的解决方式。
3.1.5I nterface 数据读取和写入接口:
在现在高数据量的并发读取写入的情况下面,对数据的读写处理能力是一个非常重要的应用,现在基本每个公司都有开发相应的接口进行数据的的读写分离,以满足对单个数据库的压力的减少,并且更加能方便数据的维护。这里当然不只是简单的读写分离,包括中间缓存层(memcached 等想类似的技术)。当然写了接口,将来在一些应用上还可以用oracle 等其他相应的数据库。
3.1.6N fs 视频存储(图片存储)
在流媒体服务提供的时候我们会有大量的视频文件,数据的增加都是有一个非常大的快速增加,这个时候我们会需要非常大的存储,以前一般公司都是使用一些存储(NETAPP )来进行存放大批量的文件,但是现在因为服务器性能发展迅速,基本很多公司都已经开始用普通服务器对小容量(10T )存储进行替代,nfs 存储服务器基本可以使用性能比较优异的服务器进行替代。在构架图中使用了2个存储进行备份,以前存储使用的是单台(成本),磁盘采用的raid5的结构方式,但是现在使用两台高性能的服务器,每台服务器都采用相同容量的硬盘,比如单台10T ,每台服务器都使用raid0的方式,进行时时备份。那么就算是任何一台机器出现问题可以及时的切换的另外一个机器而不影响服务,而采用单台存储的时候,却可能因为硬件的问题(不一定是硬盘)导致服务中断。在成本和服务上都有一个比较好的提升。
3.1.7mysql 数据库
现在提供web 服务的的数据库有许多,采用较多的有mysql 和mssql ,但是经过经过大量的应用和发展,mysql 占据了主流,它比较于mssql 来说有非常多的优点。
1,mysql 是免费的,这是最大的优点
2,mysql 有多种引擎,可以使用不同的引擎提供不同的服务,自由度非常大,mysiam
引擎提供web 服务相对非常快速的select 和insert 。在性能上远超mssql 。Innodb 引擎同样支持事物数据的处理,提供高可靠性和高安全性数据的处理。
3,mysql 的replicateion 和cluster 的迅速发展让mysql 更加强大。在数据的分布式处理
上比其他数据库走在前列。
2.2. 系统数据流程说明
2.2.1访问流程:
2.2.2流程说明:
1,客户(client )通过对域名或者手机客户端指定对我们lvs 服务器进行发送请求。2,lvs 对请求进行相应的分配给后面的web 服务器,也就是realserver 。
3,realserver 得到请求对请求提供相应的服务。
4,在提供服务的时候要通过interface 对数据库进行读写操作。
3. 数据库的应用和维护(mysql )
1,mysql 架构图
2,mysql 常用引擎的特点(Myisam &&innodb )
引擎使用的选择我们根据我们应用情况来进行选择,如果要对数据进行事物处理和数据表之间进行相关性结构的数据我们选择innodb 引擎,其他的我们可以选择Myisam 引擎。下面介绍中Myisam 数据的限制其实已经在5.0之后进行很好的解决,现在上千万上亿条数据在Myisam 中处理相对来说也是非常高效的。如果要使用全文索引等情况那就只能使用Myisam 引擎,在选择上我们可以比较大的自
由度。
3, 关于mysql replicateion
系统架构文档
MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器(Master),而一个或多个其它服务器充当从服务器(Slave),利用该特性实现读写分离,是很多大型网站常用的数据库架构。MySQL 的replication 的配置相对于Oracle 来说,要简单的多。并且容易维护和备份,保证数据的安全和完整性是非常好的方案。
4,mysql 的维护
1,MYSQL 服务的安装/配置的通用性;
2,数据的安全和完整性
3,系统的升级和数据迁移方便性;
4,备份和系统快速恢复;
5,根据数据服务器硬件的情况和数据存储方式等对数据库应用进行相应的优化。
4. 常见问题(FAQ )
1,lvs 负载均衡配置和服务
2,interface 对数据库读写分离服务
3,视频信息存储方式
4,服务器机房分布和系统结构方式
系统架构文档
文档编号
文档状态草案、秘密
系统架构方案编写人
编写日期
最后修订周汉仓2011年03月01日
系统架构文档
系统架构文档
修改记录
日期
2011/3/1修改人周汉仓编写初稿修改内容
系统架构文档
目
1. 录
2.
3. 概述........................................................................................................................................... 1编写目的....................................................................................................................... 11.1. 系统架构图................................................................................................................... 11.2. 系统架构说明........................................................................................................................... 2系统模块说明............................................................................................................... 33.1. 3.1.1. squid 视频和图片加速................................................................................... 33.1.2. lvs/nginx负载................................................................................................. 33.1.1. haproxy 负载均衡........................................................................................... 33.1.4. Resin(tomcat)/nginx(apache)web服务............................................................ 33.1.5. Interface 数据接口........................................................................................... 33.1.6. Nfs 视频存储..................................................................................................... 33.1.7. Mysql 数据库.................................................................................................... 3数据流说明................................................................................................................... 33.1. 访问流程........................................................................................................... 33.2.1. 流程说明........................................................................................................... 33.2.2. 数据库的应用和维护................................................................................................... 33.1. 3.3.1. mysql 架构图.................................................................................................... 33.3.2. mysql 常用引擎的特点..................................................................................... 3关于mysql replicateion .................................................................................... 33.3.3. 3.3.4. mysql 的维护.................................................................................................... 3常见问题(FAQ ).................................................................................................................... 4
1. 概述
1.1. 编写目的
1,本文档的编写目的是给公司推荐个人在web 流媒体服务方案上的系统架构建议。
1.2. 系统架构图
标注:
1,在图中的流程线不代表tcp 连接,而是代表我想表达的数据传输的方向。
2,数据双向传输的我用红色线标注。
3,方框不一定代表要使用一台服务器,或者一个应用不一定代表要使用一台服务
器,可以一个服务器放置不同的应用。也可以多个服务器放置相同的应用
4,虚线的存在是因为交错的线路比较多,我提供虚线便于我们能比较好的看清楚
图中线路的走向。
2. 系统架构和说明
我们系统中有下面7个应用层,下面是对相应的应用进行一个介绍:
2.1. 系统模块说明术
Squid 语说明只是作为视频和图片的加速分布在我们机房各个点
Lvs 负载均衡
Haproxy
Resin(tomcat)/ngnix(apache)
web 服务
Interface 数据接口
Nfs 视频存储
Mysql 数据库对外提供给用户接入,提供一个虚拟ip 进行前端系统的负载均衡第二层代理和系统负载均衡,相对其他代理具有搞并发和可用性Web 服务池,提供web 服务的应用程序,tomcat 处理动态程序,ngnix 提供静态页面和视频处理写入和读取数据接口一个存放视频文件的存储用来存放各种数据的数据库
2.1.1squid 提供视频图片加速
现在对视频和图片的加速虽然出现一些其他相应的工具,但是相对来说在稳定和工具成熟度上来说squid 是最稳定,在完全熟悉相应的配置结构之后,经过优化,对视频和图片加速squid 是最强大的。
2.1.2lvs/nginx负载均衡:
在现在的系统服务中,我们面对我们的客户,我们提供一个高可用性,可扩展行的web 服务,我们在前端一般使用相应的负载均衡,现在负载均衡有多种解决方案,lvs 是相对非常成熟也最常用的方式,但是在web 服务中,我们有时候也采用nginx 作为前端负载均衡的方式解决。只是nginx 在解决负载均衡的时候配置方案和nginx 的代理形式有比较大的相似性,但是经过长时间的应用这个解决方案简单,并且稳定。相对lvs 维护也要简便很多。并且nginx 的并发处理也非常不错。但是nginx 处理的方式是和代理模式相同。但是在安全性喝处理大并发,高可用性,安全性,提供除虚拟ip 之外的透明访问上,上lvs 有不可替代的能力,ngnix 相对来说只是一个代理负载均衡的工具。
2.1.3. :haproxy 负载均衡
HAProxy 提供高可用性、负载均衡以及基于TCP 和HTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G 的并发。HAProxy 特别适用于那些负载特大的web 站点,这些站点通常又需要会话保持或七层处理。HAProx y 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web 服务器不被暴露到网络上。其支持从4层至7层的网络交换,即覆盖所有的TCP 协议。就是说,
如果说在功能上,能以proxy 反向代理方式实现Haproxy 甚至还支持Mysql 的均衡负载。
WEB 均衡负载,这样的产品有很多。包括Nginx ,ApacheProxy ,lighttpd ,Cheroke 等。但要明确一点的,Haproxy 并不是Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或
动态(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http 服务。
2.1.4R esin(tomcat)/nginx(apache):2.1.4R
我们提供web 服务一般都是采用相应的服务应用程序resin(tomcat)作为java 的解析是大多数公司采用的方案,nginx 和apache 就是相应的对静态文件进行处理,结合两者一起提供web 服务是现在比较有效率高并发的解决方式。
3.1.5I nterface 数据读取和写入接口:
在现在高数据量的并发读取写入的情况下面,对数据的读写处理能力是一个非常重要的应用,现在基本每个公司都有开发相应的接口进行数据的的读写分离,以满足对单个数据库的压力的减少,并且更加能方便数据的维护。这里当然不只是简单的读写分离,包括中间缓存层(memcached 等想类似的技术)。当然写了接口,将来在一些应用上还可以用oracle 等其他相应的数据库。
3.1.6N fs 视频存储(图片存储)
在流媒体服务提供的时候我们会有大量的视频文件,数据的增加都是有一个非常大的快速增加,这个时候我们会需要非常大的存储,以前一般公司都是使用一些存储(NETAPP )来进行存放大批量的文件,但是现在因为服务器性能发展迅速,基本很多公司都已经开始用普通服务器对小容量(10T )存储进行替代,nfs 存储服务器基本可以使用性能比较优异的服务器进行替代。在构架图中使用了2个存储进行备份,以前存储使用的是单台(成本),磁盘采用的raid5的结构方式,但是现在使用两台高性能的服务器,每台服务器都采用相同容量的硬盘,比如单台10T ,每台服务器都使用raid0的方式,进行时时备份。那么就算是任何一台机器出现问题可以及时的切换的另外一个机器而不影响服务,而采用单台存储的时候,却可能因为硬件的问题(不一定是硬盘)导致服务中断。在成本和服务上都有一个比较好的提升。
3.1.7mysql 数据库
现在提供web 服务的的数据库有许多,采用较多的有mysql 和mssql ,但是经过经过大量的应用和发展,mysql 占据了主流,它比较于mssql 来说有非常多的优点。
1,mysql 是免费的,这是最大的优点
2,mysql 有多种引擎,可以使用不同的引擎提供不同的服务,自由度非常大,mysiam
引擎提供web 服务相对非常快速的select 和insert 。在性能上远超mssql 。Innodb 引擎同样支持事物数据的处理,提供高可靠性和高安全性数据的处理。
3,mysql 的replicateion 和cluster 的迅速发展让mysql 更加强大。在数据的分布式处理
上比其他数据库走在前列。
2.2. 系统数据流程说明
2.2.1访问流程:
2.2.2流程说明:
1,客户(client )通过对域名或者手机客户端指定对我们lvs 服务器进行发送请求。2,lvs 对请求进行相应的分配给后面的web 服务器,也就是realserver 。
3,realserver 得到请求对请求提供相应的服务。
4,在提供服务的时候要通过interface 对数据库进行读写操作。
3. 数据库的应用和维护(mysql )
1,mysql 架构图
2,mysql 常用引擎的特点(Myisam &&innodb )
引擎使用的选择我们根据我们应用情况来进行选择,如果要对数据进行事物处理和数据表之间进行相关性结构的数据我们选择innodb 引擎,其他的我们可以选择Myisam 引擎。下面介绍中Myisam 数据的限制其实已经在5.0之后进行很好的解决,现在上千万上亿条数据在Myisam 中处理相对来说也是非常高效的。如果要使用全文索引等情况那就只能使用Myisam 引擎,在选择上我们可以比较大的自
由度。
3, 关于mysql replicateion
系统架构文档
MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器(Master),而一个或多个其它服务器充当从服务器(Slave),利用该特性实现读写分离,是很多大型网站常用的数据库架构。MySQL 的replication 的配置相对于Oracle 来说,要简单的多。并且容易维护和备份,保证数据的安全和完整性是非常好的方案。
4,mysql 的维护
1,MYSQL 服务的安装/配置的通用性;
2,数据的安全和完整性
3,系统的升级和数据迁移方便性;
4,备份和系统快速恢复;
5,根据数据服务器硬件的情况和数据存储方式等对数据库应用进行相应的优化。
4. 常见问题(FAQ )
1,lvs 负载均衡配置和服务
2,interface 对数据库读写分离服务
3,视频信息存储方式
4,服务器机房分布和系统结构方式