I:单点集中式
小型项目使用,采用PHP/JSP+MYSQL,所有资源都放在一台小型服务器上。

特点:应用程序、数据库和文件等所有资源都在一台服务器上,并且访问请求量较少
Ⅱ:应用服务和数据服务拆分
数据量增加,单台服务器性能及存储空间不足,需要将应用与数据分离,并发处理能力与存储空间获得很大改善。

特点:应用程序、数据库和文件分别部署在独立的服务器上,访问请求量较少
(16G内存服务器可抗1000-2000的并发量,当超过此范围,应进入下一步架构)
III:使用缓存改善性能
缓存:本地缓存与远程分布式缓存,本地缓存可使访问速度加快,但缺点是缓存数据量有限,且会与应用程序争用内存。

特点:数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力。
(遵循二八法则,服务器百分之八十的时间在读数据,另外百分之二十是写数据,因此缓存服务器来抗住百分之八十的读数据压力)
IV:应用服务器集群
集群是系统解决高并发,海量数据问题的常用手段,通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈。

特点:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力上限的问题。
V:数据库读写分离
数据库写入、更新的这些操作部分数据库链接得资源竞争非常激烈,导致系统变慢,而系统80%是读操作,20%是写操作。

特点:数据库层进行读写分离(主、从)设计,解决数据库层的处理能力问题。
(Mysql单台数据库的并发300-700,当达到1000时时需要做读写分离的)
VI:反向代理和CDN加速

特点:采用CDN和反向代理加快系统的访问速度。
(许多静态文件可用反向代理直接获取)
VII:分布式文件系统和分布式数据库

特点:数据库采用分布式数据库,文件系统采用分布式文件系统。
随着业务的发展,最终数据库读写分离也将无法满足需求,需要采用分布式数据库与分布式文件系统来支撑。分布式数据库是数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用,更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上。
VIII:互联网架构形态

特点:将业务进行拆分,做分布式部署,当有某一业务系统宕掉后,不影响其他业务,确保业务的稳定运行,并将影响减低到最低限度。
(Zookeeper负责分布式系统的协调)
网友评论