系统架构

用户头像
Zzzz
关注
发布于: 2020 年 10 月 18 日

集群

大型互联网应用,必然会有巨大的访问量,单一的机器资源有限,承受不了过多的访问请求,所以采用多台的机器构成集群,把用户的请求合理地分散到每台机器上,防止单台机器上面的应用崩溃。

作用:系统的吞吐量提高

解决的问题:单台机器资源、性能有限的问题。

 

负载均衡

随着应用的集群部署,同时也带来了一个难题,就是如何把用户的请求,合理的分发到不同的机器上面了。不同的机器可能性能也有高低,如果采用比较平均的策略,可能对性能比较好的机器来说,就有些浪费了;有的机器可能宕机了,用户请求就不能转发到这台机器上面了。负载均衡就是来解决这些问题的,,这就是负载均衡的作用。

作用:采用合适的负载均衡策略,把用户请求合理地分发到不同的应用实例上。

解决的问题:避免单个应用实例接收过多用户请求,另外的应用实例没有或过少请求的问题。

 

分布式(微服务)

把庞大的系统拆分为多个子系统,每个子系统可以独立开发、部署。

作用:业务功能解耦;服务可用性提升

解决的问题:庞大的系统代码量大,每编译构建一次,耗费大量的时间;业务功能耦合大, 比如A、B两个不相关的功能,A功能出现问题,导致整个系统的不可用,B功能受牵连。

 

数据库读写分离

把数据库分为主库及从库,其中主库负责写,从库提供读功能。

作用:提升数据库的性能

解决的问题:读写都操作主库,很容易产生瓶颈。互联网应用大都是读多写少,读会先成为瓶颈,进而影响写性能。

 

缓存

普通的关系型数据库类似Mysql、Oracle等,读写磁盘的性能相对来说都是比较消耗资源,耗时大,可以通过采用把热点数据存放在Redis等高性能数据库,提升服务响应的速度。

作用:提升服务响应速度,减轻数据库压力。

解决的问题:服务响应慢,数据库压力过大导致崩溃的问题。

 

消息队列

消息队列简单来说就是一个队列,把消息放入队列中,然后按先进先出的顺序进行处理。例如A系统生产消息,放入队列中,B、C、D系统谁需要,谁就可以去订阅消费,不需要A系统去分别调用B、C、D系统,同时等待它们的回应,以及处理B、C、D系统崩溃时的异常情况。

作用:系统解耦;削峰;

解决的问题:系统耦合大;高并发访问量导致应用崩溃;

用户头像

Zzzz

关注

还未添加个人签名 2018.09.17 加入

还未添加个人简介

评论

发布
暂无评论
系统架构