- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网站架构:负载均衡(下)
硬件负载均衡功能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。因而软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有Nginx,Lvs,HaProxy等。本文参考大量文档,部分为直接拷贝,参考出处文末。
二、Ngnix负载均衡
Ngnix是一款轻量级的Web服务器/反向代理服务器,工作在七层Http协议的负载均衡系统。具有高功能、高并发、低内存使用等特点。是一个轻量级的Http和反向代理服务器。Nginx使用epoll and kqueue作为开发模型。能够支持高达 50,000 个并发连接数的响应。
操作系统:Liunx,Windows(Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows)
开发言语:C
并发功能:官方支持每秒5万并发,实际国内一般到每秒2万并发,有优化到每秒10万并发的。具体功能看应用场景。
2.1.特点
1.模块化设计:良好的扩展性,可以通过模块方式进行功能扩展。
2.高牢靠性:主控进程和worker是同步实现的,一个worker消灭问题,会马上启动另一个worker。
3.内存消耗低:一万个长连接(keep-alive),仅消耗2.5MB内存。
4.支持热部署:不用停止服务器,实现更新配置文件,更换日志文件、更新服务器程序版本。
5.并发力量强:官方数据每秒支持5万并发;
6.功能丰富:优秀的反向代理功能和机警的负载均衡策略
2.2.功能
2.2.1基本功能
支持静态资源的web服务器。
http,smtp,pop3协议的反向代理服务器、缓存、负载均衡;
支持FASTCGI(fpm)
支持模块化,过滤器(让文本可以实现压缩,节省带宽),ssl及图像大小调整。
内置的健康检查功能
基于名称和ip的虚拟主机
定制访问日志
支持平滑升级
支持KEEPALIVE
支持url rewrite
支持路径别名
支持基于IP和用户名的访问把握。
支持传输速率限制,支持并发数限制。
2.2.2扩展功能
2.2.3功能
Nginx的高并发,官方测试支持5万并发连接。实际生产环境能到2-3万并发连接数。10000个非活跃的HTTP keep-alive 连接仅占用约2.5MB内存。三万并发连接下,10个Nginx进程,消耗内存150M。淘宝tengine团队测试结果是“24G内存机器上,处理并发恳求可达200万”。
2.3架构
2.3.1Nginx的基本工作模式
一个master进程,生成一个或者多个worker进程。但是这里master是使用root身份启动的,由于nginx要工作在80端口。而只要管理员才有权限启动小于低于1023的端口。master次要是担任的作用只是启动worker,加载配置文件,担任系统的平滑升级。其它的工作是交给worker。那么当worker被启动之后,也只是担任一些web最简约的工作,而其他的工作都是有worker中调用的模块来实现的。
模块之间是以流水线的方式实现功能的。流水线,指的是一个用户恳求,由多个模块组合各自的功能依次实现完成的。比如:第一个模块只担任分析恳求首部,其次个模块只担任查找数据,第三个模块只担任压缩数据,依次完成各自工作。来实现整个工作的完成。
他们是如何实现热部署的呢?其实是这样的,我们前面说master不担任具体的工作,而是调用worker工作,他只是担任读取配置文件,因而当一个模块修改或者配置文件发生变化,是由master进行读取,因而此时不会影响到worker工作。在master进行读取配置文件之后,不会马上的把修改的配置文件告知worker。而是让被修改的worker连续使用老的配置文件工作,当worker工作完毕之后,直接当掉这个子进程,更换新的子进程,使用新的规章。
2.3.2Nginx支持的sendfile机制
Sendfile机制,用户将恳求发给内核,内核依据用户的恳求调用相应用户进程,进程在处理时需要资源。此时再把恳求发给内核(进程没有直接IO的力量),由内核加载数据。内核查找到数据之后,会把数据复制给用户进程,由用户进程对数据进行封装,之后交给内核,内核在进行tcp/ip首部的封装,最终再发给客户端。这个功能用户进程只是发生了一个封装报文的过程,却要绕一大圈。因而nginx引入了sendfile机制,使得内核在接遭到数据之后,不再依靠用户进程赐予封装,而是本人查找本人封装,削减了一个很长一段时间的铺张,这是一个提升功能的核心点。
以上内容摘自网友发布的文章,简约一句话是资源的处理,直接通过内核层进行数据传递,避开了数据传递到应用层,应用层再传递到内核层的开销。
目前高并发的处理,一般都接受sendfile模式。通过直接操作内核层数据,削减应用
原创力文档


文档评论(0)