因用户量、访问量、数据量等不同,系统架构被分为了多个发展阶段,为了解决不同阶段业务所带来的不同的技术问题,就有了以下系统架构演化历程。
从单体到微服务,文字过于苍白,上图对比
1初始阶段
业务发展初期,为了更快速满足客户需求,将所有业务功能模块都放在一个系统中来实现。
优点就是快速响应,优先抢占市场份额。
在单体阶段一般会使用到的网站架构模式是:分层模式
1.1分层模式
定义:将系统在横向维度上切分成几个部分,每部分的职责单一,上层对下层的依赖和调用组成一个完整的系统。
栗子:7层的网络通信协议;计算机硬件、操作系统和应用系统;MVC三层架构等
原因(为什么要分层):分层结构对网站支持高并发和向分布式方向发展至关重要
约束:层次之间禁止 跨层次调用,逆向调用。
建议:在网站规模还很小的时候应该采用分层的架构。
一般单体的分层架构:
分层如分工,为的就是各施其职,但如何落地到开发层面呢?
通过按业务功能模块进行分包分层开发
这样做的目的是能更好的应对架构的演化过程,降低升级改造难度、风险、成本等。后续只需要对不同的业务模块进行抽离,即可实现业务拆分。
1.2部署方式
通常服务器操作系统使用linux,前端使用nginx部署、业务端使用tomcat部署、数据存储为MySQL数据库、文件存储(如:FastDFS)。
这时网站架构如图:
随着业务的发展,越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足,当单台服务器无法满足业务发展所需时,此时就要做业务的垂直拆分了??为时尚早!垂直拆分将在后续讲到。这时应该按层进行分离,前端、应用和数据做分离,也称为横向拆分,这也是为什么一开始要做分层的原因。
2横向拆分阶段
按层进行分离,也成为横向拆分。拆分后需要分别部署到四台服务器,但这四台服务器对硬件资源的要求各不相同,前置和应用服务器需要处理大量的业务逻辑,因此需要更快功能强大的CPU资源;数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;文件服务器需要存储大量用户上传的文件,因此需要更大的硬盘。
这时网站架构如图:
不同特性的服务器独立使用一台服务器,使得网站的并发处理能力和数据存储空间得到了很大的改善,支持网站业务进一步发展。但是随着用户逐渐增多,网站又一次面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验受到影响。这时需要对网站架构进一步优化。
3缓存改善网站性能阶段
加入本地缓存EhCache和Redis缓存服务器用于提升数据访问速度,降低数据库服务器的访问压力。
3.1缓存模式
定义:将数据存放在距离计算最近的位置以加快处理速度。
目的