没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
【架构】浅谈 Web 网站架构演变过程
我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该
系统具备的功能:
用户模块:用户注册和管理
商品模块:商品展示和管理
交易模块:创建交易和管理
网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如
t
o
m
ca
t
、
j
e
tt
y
、
j
b
oo
s
,然后直接使用
J
S
P
/
s
e
r
v
l
e
t
技术,或者使用一些开源的框架如
m
a
v
e
n
+
s
p
r
i
n
g
+
s
t
r
u
c
t
+
h
i
b
e
r
n
a
t
e
、
m
a
v
e
n
+
s
p
r
i
n
g
+
s
p
r
i
n
g
m
v
c
+
m
y
b
a
t
i
s
;最后
再选择一个数据库管理系统来存储数据,如
m
y
s
q
l
、
s
q
l
s
e
r
v
e
r
、
o
r
ac
l
e
,然后通过
J
D
B
C
进行数据库的连接和操作。
把以上的所有软件都装载同一台机器上,应用跑起来了,也算是一个小系统了。此时系统结果如下:
随着网站的上线,访问量逐步上升,服务器的负载慢慢提高,在服务器还没有超载的时候,我们应该就要做好准备,提升网站的负
载能力。假如我们代码层面已难以优化,在不提高单台机器的性能的情况下,增加机器是一个不错的方式,不仅可以有效地提
高系统的负载能力,而且性价比高。
增加的机器用来做什么呢?此时我们可以把数据库,web服务器拆分开来,这样不仅提高了单台机器的负载能力,也提高了容灾
能
力。
应用服务器与数据库分开后的架构如下图所示:
随着访问量继续增加,单台应用服务器已经无法满足需求了。在假设数据库服务器没有压力的情况下,我们可以把应用服务器从
一台变成了两台甚至多台,把用户的请求分散到不同的服务器中,从而提高负载能力。多台应用服务器之间没有直接的交互,他
们都是依赖数据库各自对外提供服务。著名的做故障切换的软件有
k
ee
p
a
l
i
v
e
d
,
k
ee
p
a
l
i
v
e
d
是一个类似于
l
a
y
e
r
3
、
4
、
7
交换机制
的软件,他不是某个具体软件故障切换的专属品,而是可以适用于各种软件的一款产品。
k
ee
p
a
l
i
v
e
d
配合上
i
p
v
s
a
dm
�可以做负
载均衡,可谓是神器。
往期关于架构文章可以关注微信公众号:Java后端,后台回复 技术博文 获取。
我们以增加了一台应用服务器为例,增加后的系统结构图如下:
系统演变到这里,将会出现下面四个问题:
1.
用户的请求由谁来转发到到具体的应用服务器
2.
有什么转发的算法
3.
应用服务器如何返回用户的请求
4.
用户如果每次访问到的服务器不一样,那么如何维护session的一致性
我们来看看解决问题的方案:
第一个问题即是负载均衡的问题,一般有5种解决方案:
1、http重定向。HTTP重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均衡服务器,服务器根据算法要
求用户重定向,用户收到重定向请求后,再次请求真正的集群
优点:简单。
缺点:性能较差。
2、DNS域名解析负载均衡。DNS域名解析负载均衡就是在用户请求DNS服务器,获取域名对应的IP地址时,DNS服务器直接给出
负载均衡后的服务器IP。
优点:交给DNS,不用我们去维护负载均衡服务器。
缺点:当一个应用服务器挂了,不能及时通知DNS,而且DNS负载均衡的控制权在域名服务商那里,网站无法做更多的改善和更强
大的管理。
3、反向代理服务器。在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服
务
器。常用的apache,nginx都可以充当反向代理服务器。
优点:部署简单。
缺点:代理服务器可能成为性能的瓶颈,特别是一次上传大文件。
4、IP层负载均衡。在请求到达负载均衡器后,负载均衡器通过修改请求的目的IP地址,从而实现请求的转发,做到负载均衡。优
点:性能更好。
缺点:负载均衡器的宽带成为瓶颈。
5、数据链路层负载均衡。在请求到达负载均衡器后,负载均衡器通过修改请求的mac地址,从而做到负载均衡,与IP负载均衡不
一样的是,当请求访问完服务器之后,直接返回客户。而无需再经过负载均衡器。
第二个问题即是集群调度算法问题,常见的调度算法有10种。
1、rr 轮询调度算法。顾名思义,轮询分发请求。
优点:实现简单
缺点:不考虑每台服务器的处理能力
2、wrr 加 权 调 度 算 法 。我们给每个服务器设置权值weight,负载均衡调度器根据权值调度服务器,服务器被调用的次数跟权值
成正比。
优点:考虑了服务器处理能力的不同
3、sh 原地址散列:提取用户IP,根据散列函数得出一个key,再根据静态映射表,查处对应的value,即目标服务器IP。过目标
机器超负荷,则返回空。
4、dh
目
标地址散列:同上,只是现在提取的是目标地址的IP来做哈希。优
点:以上两种算法的都能实现同一个用户访问同一个服务器。
5、lc 最少连接。优先把请求转发给连接数少的服务器。
优点:使得集群中各个服务器的负载更加均匀。
剩余12页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1904
- 资源: 3909
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ASCII American Standard Code for Information Interchange
- 一个chm格式的 SQL 函数手册-SQL语言手册文档
- 计算当前月份的天数和剩余天数
- 基于ARM的指令调度和延迟分支
- 基于Vue和TypeScript的极简聊天应用设计源码 - HasChat
- 基于Vue2全家桶和Zcool数据的图片收集网站设计源码 - cool-picture
- 基于C和C++的二维绘制工具设计源码 - DrawPro
- Object.defineProperty 的 IE 补丁object-defineproperty-ie-master.zip
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功