分布式系统的发展历程

571 篇文章 3 订阅
571 篇文章 6 订阅

1.单点集中式web应用

很多中小型企业的中小型项目都是基于这样的架构,架构很简单,一般后台管理应用为主,比如CRM,OA系统等。数据库以及war包都是部署在同一台服务器上的,文件上传也是上传到本台节点。
特点:所有资源都部署在同一台电脑上,并发量小,适用于小项目。便于发布,运维工作量小。不利于扩展,项目会越做越大,war包体积也会越来越大。如果服务器宕机了,整个应用都无法访问,必须人工恢复。

2.应用服务与文件服务以及数据库单独部署

随着时间的推移,数据库以及文件的数据量增加,那么服务器的容量是有限的,原有架构已经不足以支撑,此时必须要把web应用与数据库还有文件服务拆分为三个独立的服务,以此来避免存储瓶颈。
特点:三个服务单独部署,不同服务器宕机,其他的仍然可以使用。

3.引入缓存改善读取性能

当请求并发量上去后,单台tomcat不足以支撑应用的时候,此时我们引入缓存来增加用户读取效率,把大量用户的请求引导至缓存中,而写操作仍然直接写到数据库中。
特点:把数据库中的一部分数据放入缓存,减少数据库压力,提高并发能力,减少数据库压力。

4.引入集群,使得web服务器多机负载均衡

目的是为了减少单台服务器的压力,可以部署每台tomcat来减少单台tomcat的压力,也以此作为分流,常见手段nginx+lvs,需要注意的是,要把有状态session改成无状态session,使用redis或者spring-session
特点:多台服务器构成负载均衡,减少单机的负载压力,避免单机心有余而力不足的情况发生。

5.数据库读写分离

读写请求分离,互相不影响。
连接池提供的连接数是一定的,往往用户的读请求远远大于写请求,他们会相互竞争,在这个时候往往写请求操作就进行不了,出现了数据库存储瓶颈。
特点:数据库读写分离,提高数据库的存储性能。

6.提供反向代理以及CDN加速服务

目的是可以加速网站的访问速度,尤其加速静态资源,因此可以不必向我们的服务器读取静态数据。

7.分布式文件系统和分布式数据库

分库分表,经统计与监测后数据对某些表有大量的请求的时候,为了减少压力,我们需要做分库分表。
根据业务竖向拆分或者横向拆分数据库表,常见拆分user表,order表。
竖向拆分:比如order表中某些字段经常访问,那就把这些字段归在一个表,其他不经常访问的字段归在另外一个表,也就是主表和从表,并使用外键关联
横向拆分:根据某个时间点或者业务点来拆分,比如3个月内的订单数据放在order_a中,3个月-1年内的数据放在order_b中,1年-3年的数据放在order_c中,3年前的订单数据放在order_d中,这样拆分每张表的数据体积减少,增加查询效率。当然除了根据时间还能根据地域来做拆分,具体要根据各自的业务进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值