辛星网站构架师笔记第三篇

下面大家跟着辛星来认识一下Nginx把,它是一个跨平台的服务器,但是它和传统的服务器不同的是,它不依赖于线程处理请求,它有自己的扩展性更强的驱动(异步)架构,因此它更加适合在高流量的网站。而且它还可以作为一个负载均衡器,它可以在内部直接支持Rails和PHP程序的,而且它也可以作为一个HTTP代理服务器对外进行服务。Nginx使用C语言写成。

我们上一节介绍了LVS,那么两者的区别是什么呢?第一点就是因为lvs的工作方式简单,它只是负责请求的分发,而且工作在网络的第四层,因此其负载能力强,不会产生流量,所以效率相当高。而且由于它工作在第四层,也就导致了它可以基本支持所有的应用。但是它不能完全的判断节点故障。

而Nginx工作在第七层,它主要是对HTTP应用实施分流策略,比如可以根据域名、结构等来操作,但是LVS是无法实现类似的功能的,因此也就决定了Nginx的使用的场合远远多于LVS。而且Nginx对网络的依赖性很小,只要ping的通,就可以实现负载均衡。而且Nginx可以通过判断服务器处理网页的状态码、超时等来检测服务器内部的故障,并且它可以根据返回错误的请求重新发送该请求到另一个节点上。

下面再说使用把,由于Nginx的安装和配置以及测试都很简单,因为它有相应的错误日志进行提示,但是LVS的安装、配置、测试就往往需要花费很长的时间了,因为LVS对网络的依赖性很强,很多时候会因为网络问题导致配置失败。

说了这么多,对于小型网站,也就是每日的PV(page view页面浏览数量)小于100万的网站,Nginx 是基本能搞定的,如果机器较多,那么可以使用DNS轮询。LVS通常适合用于构建大型网站或者提供重要服务且机器较多的时候。

其实Nginx不仅有负载均衡的功能,还可以用它来作为一个缓存软件来使用,不过它在缓存方面就不是那么专业了,下面我们来认识一下Nginx的缓存方式把。

目前Nginx已经支持类似Squid的缓存功能,Nginx缓存是把URL以及相关组合当做Key,然后用MD5编码哈希后把数据文件保存到硬盘上,所以,Nginx支持任意的URL连接,也可以支持404、301、302等非200状态的代码。目前官方的Nginx缓存服务只能Wie指定的URL或者状态码设置过期时间,并不支持Squid的PURGE命令来手动清楚指定的缓存页面,我们可以使用第三方的Nginx模块来清除指定的URL缓存。

Nginx的缓存服务功能主要有proxy_cache相关的命令集和fastcgi_cache相关的命令集组成,前者用于反向代理,对后端的源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。最新版的Nginx已经比较完善了,再加上第三方模块,就完全可以取代Squid了。而且功能上,Nginx已经具备缓存加速、清除指定URL缓存的功能,在性能上,Nginx对多核CPU的利用率比其他的开源软件也要好很多。

Squid是应用较早的开源软件,具有传统代理、文件缓存等该功能,不过设置比较复杂,Squid仍然是当今互联网上应用最多的缓存服务器,大多工作在cdn上。而Varnish是一个新兴的软件,设计简单,更加适合当今互联网的应用,很多公司采用了这个软件,Varnish是基于内存的缓存,效率比基于硬盘的存储高一些。而Nginx的缓存是由一个模块来实现的,这个模块还在不断的完善中。在网站架构中,Nginx一般用作反向代理,也就是静态文件使用Nginx会提高不少效率。

Nginx还是一个优秀的HTTP服务器,那么对于它的使用和配置,我们这里就不多说了,我放到我的教程里去写,给大家一个全面的解读。

总结:Nginx不仅仅是一个HTTP服务器,它还同时拥有负载均衡的作用,还可以用作反向代理服务器,这也使得它受到了更多人的青睐。

时间: 2024-11-08 15:17:03

辛星网站构架师笔记第三篇的相关文章

辛星网站构架师笔记第五篇即缓存详解

前面我们介绍了缓存技术,但是对于单纯的使用缓存技术是不够的,还需要掌握一下对于提高网站的性能.减轻因为大量访问而给后台应用带来巨大压力的应用技术,也就是缓存技术. 首先说一下什么是缓存吧,缓存一般也就是成为cache,系统的缓存和硬件设备的缓存作用一样,用来暂时存放需要处理的数据,因为我们知道,从缓存读取的速度要远远高于从硬盘读取的速度,所以缓存服务器存储的数据越多,后台应用服务器的压力就越小,性能也就会越高. 而网站缓存的目的就是为了提高网站的性能,加快访问速度,合理的缓存某种类型的数据,可以

辛星网站架构师笔记第四篇

本节我们了解一下web服务器,要说到web服务器,恐怕还不能不提一下大名鼎鼎的Apache,这个神一样的服务器仍然占据着至少一半的市场.Apache原来用于小型或者是实验性的Internet网络,后来逐步扩展到各种系统中去,对linux的支持近乎完美.Apache可以支持SSL技术,支持多态虚拟主机.而且它是以进程为基础的结构,而进程比线程使用更多的系统资源,因此不适用于多处理器环境. 如果网站的访问量很大,那么每天的日志文件也会很大,这时候可以使用Apache自带的rotetelogs来对日志

辛星网站构架师笔记第一篇

说道网站的硬构架,首先说到的就是机房的选择,然后就是宽带的大小,然后就是服务器的划分,服务器通常分为图片服务器.页面服务器.数据库服务器.应用服务器.日至服务器等等.而对于网站的软架构,首先可以有框架的选择,然后还有逻辑的分层. 对于网站优化,第一要考虑的就是html静态化,对于一个大型的网站来说,使用一套高效的CMS是很重要的,第二要考虑的就是图片服务器分离,因为图片服务器是最消耗资源的,第三个要考虑的就是数据库集群和库表散列,第四个就是缓存,首先就是软件层的缓存,比如apache的缓存模块和

辛星网站构架师笔记第二篇

LVS是基于Linux系统的服务器集群解决方案,它的目标就是创建一个具有较好的扩展性.较好的可靠性.较高的性能的一个体系,很多商业的集群产品,都是基于LVS技术来实现的. LVS的核心就是通过一组服务器来进行负载均衡,通过前端的负载调度器,把请求无缝的调度到真实的服务器上,那么这样的话客户端是感受不到的.它的伸缩性就是在集群中加入或者删除节点来实现,通过检测节点或者服务进程的故障并且正确的设置来达到系统的高可用性,由于这个负载调度是在Linux内核中完成的,因此被称之为Linux 虚拟服务器,也

辛星漫谈构架师之魂

构架师是一个比较特殊的岗位,虽然也有"构架师已死"的言论,但是毫无疑问,很多公司还是有构架师这个岗位的.架构师还是蛮重要的,往往他们的高度决定了公司的技术高度,特别是中小型公司,而他们的决策也往往会直接决定了团队的开发模式和工作量的大小. 如果把职场必做战场,那么构架师就可以理解为"将军"或者"元帅",所谓"千军易得,良将难求",也有"一将无能,累死千军"的说法.构架师也是形形色色的,我们从几个角度去研究研

UI-Day01--讲师笔记(三)

视图编程入门 一.学习目标: 1. 掌握UI视图编程框架 2. 掌握应用程序的生命周期 3. 掌握视图基类UIView的基本使用 4.掌握UIWindow的作用 5. 掌握iOS开发中坐标位置关系 6. 掌握基础控件UILabel基本用法 二.主要内容: 1.认识UI [问]什么是UI? [答]UI全称User Interface(用户接口) 通过UI我们和程序进行交互,传入我们的请求,反馈运行的结果. 如果仅限于iOS程序,看得见,摸得着的部分都是UI. 类比Mac UI:鼠标,键盘,显示器,

[前端笔记]第三篇:JavaScript

JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.代码存放位置 JavaScript代码应该存放在: HTML的head中 HTML的body代码块底部(推荐) 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已

linux学习笔记 第三篇

hostwww.baidu.com (查看百度的IP地址) 路由器的作用是:(NAT:network accesstansfrom)地址转换 gateway网关 1.   路由器主要功能是用来作NAT(dnat目的地地址转换snat原地址转换) eg :在没有设定网关之前,linux系统下的真机和虚拟机之间是不能够相互ping通的,因为它们不在一个网段内 2.网关 路由器上和自己处在同一个网段的那个ip 3.设定网关 systemctl stopNetworkManager  //先关闭服务才能

C++primer(第四版)复习笔记—第三篇: 类和数据抽象

数据抽象:是指定义数据和函数成员的能力: 封装:是指从常规访问中保护类成员的能力. 接口:成员函数定义了类的接口.通过将定义类所用到的数据和成员函数设置维为private来封装类. 第十二章: 类 1. 构造函数的初始化式只在构造函数的定义中而不是声明中指出. 2. 使用构造函数的初始化列表与在构造函数体中对类的成员变量进行赋值的区别:本质就在于前者是对变量进行初始化,而后者是对变量进行赋值. 理解:构造函数的执行分为两个阶段:先初始化阶段,再是普通计算阶段. 在初始化阶段构造函数将调用类类型的