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

大型Web网站架构演变之9大阶段

发布时间:2019-05-11 13:50:04 所属栏目:建站 来源:程序猿的内心独白
导读:副标题#e# 前言 我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 正文 阶段一、单机构建网站 网站的初期,我们经常会在

负载均衡器根据请求的目的IP地址,找出该IP地址最近使用的“服务器组”,注意,并不是具体某个服务器,然后采用最少连接数从该组中挑出具体的某台服务器出来,把请求转发之。若该服务器超载,那么根据最少连接数算法,在集群的非本服务器组的服务器中,找出一台服务器出来,加入本服务器组,然后把请求转发。

3、集群请求返回模式问题

1)、NAT

负载均衡器接收用户的请求,转发给具体服务器,服务器处理完请求返回给均衡器,均衡器再重新返回给用户。

2)、DR

负载均衡器接收用户的请求,转发给具体服务器,服务器出来玩请求后直接返回给用户。需要系统支持IP Tunneling协议,难以跨平台。

3)、TUN

同上,但无需IP Tunneling协议,跨平台性好,大部分系统都可以支持。

4、集群Session一致性问题

1)、Session Sticky

Session sticky就是把同一个用户在某一个会话中的请求,都分配到固定的某一台服务器中,这样我们就不需要解决跨服务器的session问题了,常见的算法有ip_hash算法,即上面提到的两种散列算法。

  • 优点:实现简单;
  • 缺点:应用服务器重启则session消失。

2)、Session Replication

Session replication就是在集群中复制session,使得每个服务器都保存有全部用户的session数据。

  • 优点:减轻负载均衡服务器的压力,不需要要实现ip_hasp算法来转发请求;
  • 缺点:复制时网络带宽开销大,访问量大的话Session占用内存大且浪费。

3)、Session数据集中存储

Session数据集中存储就是利用数据库来存储session数据,实现了session和应用服务器的解耦。

  • 优点:相比Session replication的方案,集群间对于宽带和内存的压力大幅减少;
  • 缺点:需要维护存储Session的数据库。

4)、Cookie Base

Cookie base就是把Session存在Cookie中,由浏览器来告诉应用服务器我的session是什么,同样实现了session和应用服务器的解耦。

  • 优点:实现简单,基本免维护。
  • 缺点:cookie长度限制,安全性低,带宽消耗。

值得一提的是:

  • Nginx目前支持的负载均衡算法有wrr、sh(支持一致性哈希)、fair(lc)。但Nginx作为均衡器的话,还可以一同作为静态资源服务器。
  • Keepalived + ipvsadm比较强大,目前支持的算法有:rr、wrr、lc、wlc、lblc、sh、dh
  • Keepalived支持集群模式有:NAT、DR、TUN
  • Nginx本身并没有提供session同步的解决方案,而Apache则提供了session共享的支持。

解决了以上的问题之后,系统的结构如下:

阶段四、数据库读写分离化

上面我们总是假设数据库负载正常,但随着访问量的的提高,数据库的负载也在慢慢增大。那么可能有人马上就想到跟应用服务器一样,把数据库一份为二再负载均衡即可。

但对于数据库来说,并没有那么简单。假如我们简单的把数据库一分为二,然后对于数据库的请求,分别负载到A机器和B机器,那么显而易见会造成两台数据库数据不统一的问题。那么对于这种情况,我们可以先考虑使用读写分离和主从复制的方式。

(编辑:西安站长网)

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

热点阅读