加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

负载均衡层设计方案之负载均衡技术总结篇

发布时间:2019-09-27 22:05:56 所属栏目:建站 来源:Java高级互联网架构
导读:1、概述 通过前面文章的介绍,并不能覆盖负载均衡层的所有技术,但是可以作为一个引子,告诉各位读者一个学习和使用负载均衡技术的思路。虽然后面我们将转向业务层和业务通信层的介绍,但是对负载均衡层的介绍也不会停止。在后续的时间我们将穿插进行负载

#开启gzip压缩服务, gzip on;#gzip压缩是要申请临时内存空间的,假设前提是压缩后大小是小于等于压缩前的。例如,如果原始文件大小为10K,那么它超过了8K,所以分配的内存是8 * 2 = 16K;再例如,原始文件大小为18K,很明显16K也是不够的,那么按照 8 * 2 * 2 = 32K的大小申请内存。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。 gzip_buffers 2 8k;#进行压缩的原始文件的最小大小值,也就是说如果原始文件小于5K,那么就不会进行压缩了 gzip_min_length 5K;#gzip压缩基于的http协议版本,默认就是HTTP 1.1 gzip_http_version 1.1;# gzip压缩级别1-9,级别越高压缩率越大,压缩时间也就越长CPU越高 gzip_comp_level 5;#需要进行gzip压缩的Content-Type的Header的类型。建议js、text、css、xml、json都要进行压缩;图片就没必要了,gif、jpge文件已经压缩得很好了,就算再压,效果也不好,而且还耗费cpu。 gzip_types text/HTML text/plain application/x-javascript text/css application/xml;

http返回数据进行压缩的功能在很多场景下都实用:

a、 如果浏览器使用的是3G/4G网络,那么流量对于用户来说就是money。

b、 压缩可节约服务器机房的对外带宽,为更多用户服务。按照目前的市场价良好的机房带宽资源的一般在200RMB/Mbps,而服务器方案的压力往往也来自于机房带宽。

c、 不是Nginx开启了gzip功能,HTTP响应的数据就一定会被压缩,除了满足Nginx设置的“需要压缩的http格式”以外,客户端(浏览器)也需要支持gzip(不然它怎么解压呢),一个好消息是,目前大多数浏览器和API都支持http压缩。

  • Nginx中的rewrite(重写)技术

Nginx的强大在于其对URL请求的重写(重定位)。Nginx的rewrite功能依赖于PCRE Lib,请一定在Nginx编译安装时,安装Pcre lib。

下面是一段rewrite的示例:

  1. #示例1:location ~* ^/(.+)/(.+).(jpg|gif|png|jpeg)$ { 
  2.  rewrite ^/orderinfo/(.+).(jpg|gif|png|jpeg)$ /img/$1.$2 break; 
  3.  root /cephclient; 
  4. }#location在不进行大小写区分的情况下利用正则表达式对$url进行匹配。当匹配成功后进行rewrite重定位。#rewrite进行重写url的规则是:regex表达式第一个括号中的内容对应$1,regex表达式第二个括号中的内容对应$2,以此类推。#这样重定位的意义就很明确了:将任何目录下的文件名重定位到img目录下的对应文件名,#并且马上在这个location中(注意是Nginx,而不是客户端)执行这个重写后的URL定位。#示例2:server { 
  5.  。。。。 
  6.  。。。。 
  7.  location ~* ^/orderinfo/(.+).(jpg|gif|png|jpeg)$ { 
  8.  rewrite ^/orderinfo/(.+).(.+)$ /img/$1.$2 last; 
  9.  } 
  10.  location / { 
  11.  root /cephclient; 
  12.  } 
  13. }#在server中,有两个location位置,当url需要访问orderinfo目录下的某一个图片时,rewrite将重写这个url,#并且重新带入这个url到server执行,这样“location /”这个location就会执行了,并找到图片存储的目录。 
  • Nginx的图片处理模块

http_image_filter_module 是nginx的图片处理模块,是使用nginx进行静态资源和动态资源分开管理的关键引用技术。通过这个模块可以对静态资源进行缩放、旋转、验证。

需要注意的是,http_image_filter_module模块所处理的缩率图片是不进行保存的,完全使用节点的CPU性能进行计算,使用节点的内存进行临时存储。所以如果要使用http_image_filter_module进行图片处理,一定要根据客户端的请求规模进行nginx节点的调整。并且当站点的PV达到一定的规模时,一定要使用CDN技术进行访问加速、对图片的访问处理手段进行规划。

由于我们在之前涉及Nginx的文章中,并没有详细讲解Nginx的图片处理模块,只是说了要进行介绍,所以这里我给出一个较为详细的安装和配置示例:

nginx的http_image_filter_module模块由GD library进行支持,所以要使用这个图片处理模块,就必须进行第三方依赖包的安装:

  1. yum install gd-devel 

然后,Nginx要进行重新编译:

  1. configure --with-http_image_filter_modulemake && make install 

使用图片处理模块的配置示例:

  1. location ~* /(.+)_(d+)_(d+).(jpg|gif|png|ioc|jpeg)$ { set $h $3; set $w $2; 
  2.  rewrite /(.+)_(d+)_(d+).(jpg|gif|png|ioc|jpeg)$ /$1.$4 break; 
  3.  image_filter resize $w $h; 
  4.  image_filter_buffer 2M; 

其中关于正则表达式的语法和已经介绍过的rewrite的语法就不再进行介绍了,主要看http_image_filter_module相关的属性设置:

  1. image_filter test:测试图片文件合法性 
  2. image_filter rotate:进行图片旋转,只能按照90 | 180 | 270进行旋转 
  3. image_filter size:返回图片的JSON数据 
  4. image_filter resize width height:按比例进行图片的等比例缩小,注意,是只能缩小,第二缩小是等比例的。 
  5. image_filter_buffer:限制图片最大读取大小,没有设置就是1M;根据不同的系统最好设置为2M—3M 
  6. image_filter_jpeg_quality:设置jpeg图片的压缩比例(1-99,越高越好) 
  7. image_filter_transparency:禁用gif和png图片的透明度。 
  • 和Nginx类似的其他技术/软件

目前行业内也有很多与Nginx解决同类问题的软件,他们分别是Apache基金会的 Apache HTTP Server、淘宝开源的Tengine、Haproxy、包括Windows 下运行的IIS,也支持反向代理 。

这里笔者再次重点提到Tengine,建议各位读者有时间的时候可以使用一下,这个对Nginx进行了深度再开发的软件。

3-2、LVS技术

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读