互联网系统的架构演进之路
分类:知识大全作者:互联网王者 发布时间:2019-04-15 09:48:08阅读:5.2万+ 属地:未知
一、单机架构(初级)
这是最初的系统,只要一台服务器就够了,将web服务、数据库服务、静态资源都存储在这台服务器上。此时请求流量很小,服务器没有任何压力。
二、服务器拆分
当一台服务器已经撑不住的时候,需要拆分服务器,将web服务、数据库服务、静态资源分开部署,一般情况下至少3台服务器,web服务、数据库服务、静态资源都存储在各自的服务器上。
三、引入缓存
引入缓存模块,比如squid服务器或者市场上的cdn服务,将静态资源或者热门信息都放入缓存,减轻数据库和web服务器压力。还可以使用Memcached和Redis等内存数据库提供缓存数据服务,当然引入缓存也会有缓存带来的问题,比如一致性、缓存击穿、缓存雪崩等问题需要去处理。
四、数据库服务集群(读写分离)
由于关系数据库无法支持高并发,所以在系统压力进一步的增加下,需要部署数据库集群,一般情况下,先部署两台数据库服务器,一台为写数据,一台为读数据,配合业务系统做到读写分离,提供数据库响应性能。由于大部分互联网系统都是读的压力大于写的压力,所以后期需要部署读的数据库服务器集群,让写的数据库服务器出现瓶颈的时候,及时部署写的数据库服务器集群,这里需要很多成熟的数据库中间件去支撑,系统开发就变得容易。
五、web服务集群
当一台web服务器支撑不了的时候,就需要部署web服务器集群了,也就是负载均衡,可以通过Nginx或者云平台提供的工具进行反向代理和负载均衡配置,提供web服务集群,支撑更加庞大的系统流量和并发量。
六、数据库分表
但是随着用户数量的增长,数据库的当表已经满足不了如此巨大的数据量或者读写性能已经严重有问题的时候,只能才取分表。分表就是同时创建N个相同的表,存储不同范围的数据,比如将1-100000000的用户数据存储在user01表中,100000000-199999999的用户数据存储在user02表中,以此类推,程序读取的时候注意从哪个表中读就行了,其他数据表按照类似操作。
七、业务垂直拆分
当业务越来越多,只能按照业务垂直拆分了,分别架构每一个业务的web服务器集群、数据库集群、缓存集群,以减小整个系统的压力。
八、服务化(SOA或微服务)
单体系统有单体系统的局限,无论做了多大的集群,都只是支撑流量,而系统的复杂度是随业务直线上升的,无法对市场的变化起到该有的灵敏,所以系统到了最后某个阶段都得做服务化,通过服务化进一步提升系统的性能,降低系统的复杂度。
服务化可以是SOA架构和微服务架构,各有特色。一般SOA系统通常使用RPC(远程过程调用)或消息队列来实现服务之间的通信,微服务架构则更多地采用HTTP和RESTful API来实现服务之间的通信。
十、地域(机房)分流
服务化架构是应用系统的最后一步拓展。在应用系统方面几乎已经可以满足所有的业务需求了。再进一步是地域(机房)分流,通过dns等手段,将一定地域内用户流量固定在此地域部署的系统,这样通过部署多个地域级别的系统,可以进一步减轻整个系统的压力,提供更好的响应速度。
声明:本文内容版权归原作者所有,未经授权,禁止转载!
声明:本站仅提供内容存储、展示服务,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的虚假信息,谨防诈骗。如发现有害或侵权内容,可联系本站删除!
- 上一篇:图片幻灯片插件viewer的使用方法
- 下一篇:有书房,还要守书房