FastDFS为什么要结合Nginx,第1张

为什么选择Nginx

Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:

在高连接并发的情况下,Nginx是Apache服务器不错的替代品:

Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型

Nginx作为负载均衡服务器:

Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务 Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多

作为邮件代理服务器:

Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Lastfm 描述了成功并且美妙的使用经验

Nginx 是一个 [#installation 安装] 非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs 非常少的服务器:

Nginx 启动特别容易, 并且几乎可以做到724不间断运行,即使运行数个月也不需要重新启动 你还能够 不间断服务的情况下进行软件版本的升级

FastDFS为什么要结合Nginx?

我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。其使用非常简单。

FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题假设Tracker服务器将文件上传到了192168180,文件ID已经返回客户端,这时,后台会将这个文件复制到192168130,如果复制没有完成,客户端就用这个ID在192168130取文件,肯定会出现错误。这个fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。

Nginx在过去的10年里,作为Web服务器行业里的新生代迅速崛起。Nginx由俄罗斯工程师Igor Sysoev编写,2004年10月4日发布了第一个公众版本:101。Apache一直占据Web服务器行业的第一,但自2008年开始,它的市场份额在潜移默化的转移到Nginx身上。直至今日,据Netcraft的统计显示,全世界排名前100万的网站中有超过27%的网站在使用Nginx作为Web服务器。Nginx迅速在一向稳定的Web服务器行业崛起并站稳跟脚

1 、静态HTTP服务器

Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、)通过HTTP协议展现给客户端。

2、反向代理服务器

客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

3、负载均衡

当网站访问量非常大,将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡,并能使用3种自带策略及2种第三方策略。

(1)RR(默认,每个请求按时间顺序逐一分配到不同的后端服务器)

(2)权重(指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况)

(3)ip-hash(以上配置会将请求轮询分配到应用服务器,也就是一个客户端的多次请求,有可能会由多台不同的服务器处理(若存在登录session时则需要重复登录)。ip-hash根据客户端ip地址的hash值将请求分配给固定的某一个服务器处理)

(4)fair(第三方 按后端服务器的响应时间来分配请求,响应时间短的优先分配)

(5)url_hash(第三方 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法)

4、虚拟主机

有的网站访问量大,需要负载均衡。有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将wwwacom和wwwbcom两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

1、IO多路复用epoll

2、轻量级

3、CPU亲和(affinity)

4、sendfile

在 Linux 系统中,使用nginx 做动静分离是用来提高性能和网站的可用性

动静分离的原理是将网站的静态内容(例如图像,CSS 文件和 JavaScript 文件)与动态内容(例如由后端 Web 应用程序生成的内容)分开存储和传输。

这样做可以提高网站的整体性能,因为它可以让您的 Web 服务器专注于处理动态内容,而另一台服务器专注于传输静态内容。这有助于减少 Web 服务器的负载,并有助于提高网站的响应速度和可用性。

除此之外,还有别的方案吗?

当然有,除了做动静分离,还有其他一些方法可以提高网站的性能和可用性。例如,可以使用内容分发网络(CDN)来传输静态内容,以减少对 Web 服务器的负载。

您还可以使用缓存来减少对后端数据库的访问,从而提高性能。

此外,您还可以使用服务器集群来扩展您的网站的处理能力,以应对高流量。

总之,要提高网站的性能和可用性,您可以根据您的具体情况来选择适合您的方案。

内容分发网络(CDN)是一种分布式网络,它将网站的内容存储在许多不同的服务器上,并从最近的服务器向用户发送内容。这与传统的网站架构不同,其中所有内容都存储在单个服务器上,并由该服务器直接向用户发送。CDN 可以提高网站的性能和可用性,因为它可以减少对单个服务器的负载,并使内容更快地传递给用户。CDN 通常用于传输静态内容,例如图像,视频和音频文件。

使用 CDN 的方式取决于您的网站架构。如果您的网站使用传统的服务器端技术(例如 PHP 或 ASPNET),则可以在您的 Web 服务器上安装 CDN 插件。该插件会将您的静态内容存储在 CDN 上,并在向用户发送内容时从 CDN 获取内容。如果您的网站是基于静态网站生成器或静态托管平台构建的,则可以通过将您的内容存储在 CDN 上来启用 CDN。此外,您还可以通过配置您的域名解析记录来将流量路由到 CDN。总之,使用 CDN 的方式因您的网站架构而异,您需要根据您的具体情况来选择适合您的方法。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » FastDFS为什么要结合Nginx

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情