云也不是全能全有的,有些东西还是要考虑。
我记得之前有个高手说,在云计算时代,传统的架构优化几板斧,包括什么负载均衡、数据缓存之类再也用不上了,因为云基本提供了一切。
果真如此吗?
云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。云其实是网络、互联网的一种比喻说法。云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。通俗地讲,提供资源的网络为云,云中的资源就像自来水和电,取用方便,价格低廉。只不过,它不是通过自来水管道和电线传输,而是互联网传输。没有云之前,IT资源像单台发电机的电;有了云之后,就是发电厂的电了。
对于架构设计来说,云可利用的特性是伸缩性(即弹性)和分布性。
1)伸缩性,是指云上的计算资源,可非常方便的扩充或缩减,按需购买即可。
2)分布性,由于云计算采用了虚拟化技术,计算资源可能由多个个体通过网络整合而成,比如存储设备,天然具有分布式的特性。尤其是当前所谓的分布式云据说正成为趋势(分布式云由多个不同的云节点组成,这些云节点是为了提高速度而分布在不同的位置,距离用户更近的云可以给予用户更快的响应速度、规格也各不相同,比如根据云的客户数量而不同)。分布性代表并发性比较好;如果存在冗余节点的话,还不容易出现单点故障,可靠性也比较好(像阿里云的关系型数据库服务rds就提供了高可用架构选项)。当然,后面这句话是我瞎编的,纯属个人理解,并没有什么出处。
除了这2个特性,云并没有说天然就具备负载均衡、数据缓存这些功能。所以如果系统对并发性、负载压力、可用性等有要求,即使是打算将系统部署在云上,架构设计仍然要考虑负载均衡、数据缓存,数据库主从复制、读写分离。在阿里云上,负载均衡、数据缓存这些都是可选件,可以购买。
下面是一些架构设计图。有些是阿里云官方的,有些是洒家的。
1、读写分离架构
2、高并发架构
3、高可用架构
4、高可用 + 读写分离架构
读写分离一定程度上可提高反应速度,改良并发性。