系统伸缩性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18497495/article/details/54313916

系统伸缩性,是指在不改变系统软硬件设计,仅仅通过新增服务器的情况下,就能提升系统的处理能力。

系统成为大型的,分为2种,一种是开始就设计成大型的,例如12306网站,设计之初就要考虑能并发处理多少请求,要存储多少数据。 另外一种是从小系统慢慢演化成大型系统的,例如google、淘宝,一开始只是几台服务器,然后随着业务的增长系统不断演化。

在演化成长型的系统中,最重要的技术手段就是集群。当系统具备可伸缩性,那么随着业务量的增长,可以向服务器集群中添加服务器,从而是系统的业务处理能力也相应增长,而不需要去修改系统的架构。


系统伸缩性设计可分为2类。

一类是根据功能进行物理分离来实现伸缩,一类是按单一功能做集群实现伸缩。(当然很多时候是同时运用这2种方式)

系统初期一般是根据功能进行分离,例如最开始整个系统就跑在一台服务器上,随着发展,将数据库分离处理单独运行在服务器上,接着将缓存分离出来单独运行,然后是静态资源分离出来。根据功能分离一般又分为2种情况,纵向分离(例如系统前端、后端、数据库分别部署扩展),  横向分离(例如,登录流程、搜索流程、购物车流程分别部署扩展)。


将系统根据不同功能进行分离,可以分割到很小的粒度,但是当业务发展到一定程度,再小的粒度规模靠一台服务器也难以承受,这是就要根据单一功能做集群了。当一头牛拉不动车的时候,不要尝试去寻找一头更强壮的牛,而是用两头牛来拉车。 集群中的关键技术就是负载均衡,

负载均衡产品分为软件和硬件、开源和商用产品。

负载均衡的实现分成2个部分:

1、根据负载均衡算法,从集群中选择一台合适的主机。

2、将请求转发到这台主机。

第一部分:轮询、加权轮询、随机、加权随机、散列、最少连接, 等等。

第二部分:HTTP重定向、DNS域名解析定向、ip重定向、链路层重定向,等等。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页