随着网站业务的不断发展,用户的规模越来越大;介于中国无比蹩脚复杂的网路环境;南电信;北联通;中间竟然只用一条链路进行互联通信!有研究表明,网站访问延迟和用户流失率正相关,网站访问速度越慢,用户越容易失去耐心而离开。为了提高更好的用户体验,留住用户,网站需要加速网站访问速度。如今主要的手段只有使用CDN和反向代理了;此时网站的架构应该是这样的:

  1、使用CDN和缓存服务器;CDN和反向代理的基本原理都是缓存数据,区别就在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;CDN的网络环境很复杂;所谓的多重负载均衡架构模型;不过它们一般会使用DNS作为全局负载均衡器;高效,并且能够根据客户端的源IP地址,来判断客户端的来源地区;将客户端的请求分配制本地负载均衡器;CDN架构图如下:从下图中可以看到,第一层GSLB和第二层GSLB都有各自的域组,第一层GSLB通过区域设置,将整个服务池分为电信的服务池和联通的服务池,第二层GSLB通过区域设置,将电信的服务池分为各省的服务池。这里的服务池就是提供相同业务的所有POP节点的组合,各省的服务池包含两个POP节点,POP节点也是GSLB在调度配置中所认识到的虚拟服务器.GSLB通过负载均很策略最终返回一个POP节点地址,用户直接访问POP节点来获取网站缓存内容。

而反向代理则部署在网站的中心机房中,当用户请求到达中心机房中后,首先访问的服务器就是反向代理服务器,如果反向代理服务器ui中缓存着用户请求的资源,就将其直接返回给用户。使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户的访问速度,另一方面也减轻了后端服务器的负载压力;

  2、分布式数据库;分布式数据库是网站数据拆分的最后手段,只有在表单数据规模非常庞大的时候才使用;

  3、服务器推送;将应用程序服务器;以及缓存服务器全部推送到运营商机房中;

  4、NoSQL以及搜索引擎的引入;随着网站的业务越来越复杂,对数据的存储和检索需求也越来越复杂,这时网站就必须得引入一些非关系型数据库技术如NoSQL(MongoDB,对于大数据量、髙并发、弱事务的互联网应用, MongoDB则是一个如瑞士军刀般的利器。尽管我不认同MongoDB会在所有场合完全取代MySQL,但我相信它完全可以满足Web 2.0和移动互联网应用的数据存储需求。MongoDB内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,其开箱即用的特性也大大降低了中小网站的运维成本),以及非数据库查询技术如搜索引擎;NoSQL和搜索引擎对可伸缩的分布式特性具有更好的支持。因此,此时的架构模型就如下图所示: 喜欢的话就点个赞呗;

Nginx 反向代理配置:

user                              nobody nobody;
worker_processes                  4;
worker_rlimit_nofile              51200;error_log                         logs/error.log  notice;pid                               /var/run/nginx.pid;events {use                             epoll;worker_connections              51200;
}http {server_tokens                   off;include                         mime.types;proxy_redirect                off;proxy_set_header              Host $host;proxy_set_header              X-Real-IP $remote_addr;proxy_set_header              X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size          20m;client_body_buffer_size       256k;proxy_connect_timeout         90;proxy_send_timeout            90;proxy_read_timeout            90;proxy_buffer_size             128k;proxy_buffers                 4 64k;proxy_busy_buffers_size       128k;proxy_temp_file_write_size    128k;default_type                    application/octet-stream;charset                         utf-8;client_body_temp_path           /var/tmp/client_body_temp 1 2;proxy_temp_path                 /var/tmp/proxy_temp 1 2;fastcgi_temp_path               /var/tmp/fastcgi_temp 1 2;uwsgi_temp_path                 /var/tmp/uwsgi_temp 1 2;scgi_temp_path                  /var/tmp/scgi_temp 1 2;ignore_invalid_headers          on;server_names_hash_max_size      256;server_names_hash_bucket_size   64;client_header_buffer_size       8k;large_client_header_buffers     4 32k;connection_pool_size            256;request_pool_size               64k;output_buffers                  2 128k;postpone_output                 1460;client_header_timeout           1m;client_body_timeout             3m;send_timeout                    3m;log_format main                 '$server_addr $remote_addr [$time_local] $msec+$connection ''"$request" $status $connection $request_time $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';open_log_file_cache               max=1000 inactive=20s min_uses=1 valid=1m;access_log                      logs/access.log      main;log_not_found                   on;sendfile                        on;tcp_nodelay                     on;tcp_nopush                      off;reset_timedout_connection       on;keepalive_timeout               10 5;keepalive_requests              100;gzip                            on;gzip_http_version               1.1;gzip_vary                       on;gzip_proxied                    any;gzip_min_length                 1024;gzip_comp_level                 6;gzip_buffers                    16 8k;gzip_proxied                    expired no-cache no-store private auth no_last_modified no_etag;gzip_types                      text/plain application/x-javascript text/css application/xml application/json;gzip_disable                    "MSIE [1-6]\.(?!.*SV1)";upstream varnish  81 {least_connserver                        172.16.100.103:81 weight=1 max_fails=2;server                        172.16.100.104:81 weight=1 max_fails=2;server                        172.16.100.105:81 weight=1 max_fails=2;  }server {listen                        80;server_name                   www.firefox.com;# config_apps_beginroot                          /data/webapps/htdocs;access_log                    /var/logs/webapp.access.log     main;error_log                     /var/logs/webapp.error.log      notice;location / {location ~* ^.*/favicon.ico$ {root                      /data/webapps;expires                   180d;break;}if ( !-f $request_filename ) {proxy_pass                http://varnish 81;break;}}error_page                    500 502 503 504  /50x.html;location = /50x.html {root                        html;}}server {listen                        8088;server_name                   nginx_status;location / {access_log                  off;deny                        all;return                      503;}location /status {stub_status                 on;access_log                  off;allow                       127.0.0.1;allow                       172.16.100.71;deny                        all;}}}转自:http://www.cnblogs.com/xiaocen/p/3726763.html

如何构建日均千万PV Web站点(二) 之~缓存为王~相关推荐

  1. 《构建可扩展的Web站点》书评

    谈到Web站点,或者俗称的"网站",想必很多程序员朋友都不陌生.很多朋友也正是从纯粹HTML的"网页制作"对计算机产生了兴趣,随后开始涉及后台的"网站 ...

  2. WEB站点之 吞吐率、吞吐量、TPS、性能测试

    一.吞吐率 我们一般使用单位时间内服务器处理的请求数来描述其并发处理能力.称之为吞吐率(Throughput),单位是 "req/s".吞吐率特指Web服务器单位时间内处理的请求数 ...

  3. 从零开始的Nginx [ 8 ] --- nginx 的性能优化:ab接口压力测试工具,tomcat企业运维,WEB站点部署,项目上线

    文章目录 nginx 性能优化 1.当前系统结构瓶颈 2.了解业务模式 3.性能与安全 4.系统与nginx性能优化 1.文件句柄 2.设置方式 3.系统全局性修该和用户局部性修改 4.进程局部性修改 ...

  4. 构建高性能WEB站点笔记二

    构建高性能WEB站点笔记 因为是跳着看的,后面看到有提到啥epoll模型,那就补充下前面的知识. 第三章 服务器并发处理能力 3.2 CPU并发计算 进程 好处:cpu 时间的轮流使用.对CPU计算和 ...

  5. 千万PV级别WEB站点架构设计

    高性能与多级容灾WEB站点架构: 容灾要求: 接入层容灾.逻辑层容灾.数据层容灾 数据层包括: NoSQL集群.MySQL集群.分布式文件存储.日志采集分析与存储 过载保护: 接入层过载保护.业务逻辑 ...

  6. 《构建高性能web站点》随笔 无处不在的性能问题

    前言– 追寻大牛的足迹,无处不在的"性能"问题. 最近在读郭欣大牛的<构建高性能Web站点>,读完收益颇多.作者从HTTP.多级缓存.服务器并发策略.数据库.负载均衡. ...

  7. SSL应用系列之二:为Web站点实现SSL加密访问

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jeffyyko.blog.51cto.com/28563/141322 上一节中 ...

  8. 构建高性能WEB站点笔记三

    构建高性能WEB站点笔记三 第10章 分布式缓存 10.1数据库的前端缓存区 文件系统内核缓冲区,位于物理内存的内核地址空间,除了使用O_DIRECT标记打开的文件以外,所有对磁盘文件的读写操作都要经 ...

  9. 《构建高性能Web站点》观后感

    最近琐事繁忙,做了一个项目,累死3个搓澡工.所以读书也就少多了,深深表示遗憾,以后得增加阅读和学习.最近走马观花的看了一本<构建高性能Web站点>(郭欣 著).做一下简单的记录,一方面方便 ...

最新文章

  1. Android Studio引入.so文件的正确姿势 以及调用.so 文件时报错has text relocations 解决
  2. java中byte、short、char、boolean实际都是按照int处理的!
  3. 深入探索android热修复技术原理_打卡活动:技术书籍书单
  4. 我这么认真地问问题,你为啥不回答???
  5. 老李分享:《Linux Shell脚本攻略》 要点(二)
  6. Java中实时监控目录下文件变化的两种实现方法介绍
  7. 手挽手带你学VUE:四档 Vue-cli3 Vuex Vue-router
  8. 别人:OpenCV学习笔记(一)——安装配置、第一个程序(http://blog.csdn.net/yang_xian521/article/details/6894228)...
  9. 计算机设备管理器驱动,驱动技巧:解决设备管理器中声卡驱动安装不正确的问题...
  10. java dwg转pdf_java实现CAD图纸文件DWG格式转为PDF格式
  11. 水晶报表繁体转简体心得:之一 RPT文件篇
  12. [PC]极品飞车2 特别版
  13. 那些入行的Python工程师们还好吗?
  14. fcpx字幕功能详细使用教程
  15. Dialog使用时has leaked window...that was originally added here错误
  16. 对话 Apache 巨咖 - 如何做好一个开源项目?
  17. 豆瓣2018年度电影榜单
  18. AUC的是如何计算的
  19. 学习CMake(一)
  20. Windows自动隐藏任务栏bat脚本

热门文章

  1. 洛谷P2904 [USACO08MAR]跨河River Crossing 动态规划
  2. Shared——The best front-end hacking cheatsheets — all in one place.
  3. Scala入门之函数编程
  4. RTEMS文件系统(4):系统调用开发信息(上)
  5. SQL server2008 无法启动调试存储过程
  6. 一片很好的关于感情的文章
  7. autocad三维汇报,bim汇报,视图汇报方法
  8. activeMQ Jms Demo
  9. 开源中国 Maven 库
  10. IOS Singleton单例模式用法