文章目录
架构演进
一、开发环境与生产环境
1.1 开发环境
平时在写代码时,大多都在是Win10/Win7/Mac,这些系统都可以称呼为开发环境,会为了更高效的开发应用程序,会安装很多很多的软件,导致操作系统不安全,稳定性降低。
1.2 生产环境
在生产环境中,操作系统不会采用Win10/Mac,这种操作系统相对不安全,生产环境是要面向全体用户的,一般会采用专业的操作系统。
大多市面上使用的都是基于Linux的操作系统,当然还有Windows版本的服务器操作系统,如Windows 2003 service等等。
由于Linux内核版本完全对外开源,市场占用率大,所以第一步要学会如何使用Linux操作系统。
二、Web1.0&Web2.0阶段
2.1 Web1.0阶段
在Web1.0阶段,由于带宽不足,这时的项目大多是内容少,用户量不多,甚至有一些项目不需要对外开放,对安全性和稳定性的要求不高。
单体架构就足以应对。
单体架构 |
---|
![]() |
2.2 Web2.0阶段
随之到来的Web2.0阶段,实现了ADSL拨号上网,宽带提速,最高可以达到8M,用户量也就不断增加,一些门户网站也开始活跃,项目就需要考虑安全性和稳定性。
在基于上面的单体架构图中,无法满足Web2.0对项目的需求。
可以选择在单体架构的基础上去搭建集群。
在搭建集群之后,可以提升项目的稳定性,提升并发能力,避免单点故障。
单体架构搭建集群 |
---|
![]() |
2.3 搭建集群后的问题
用户的请求到底要发送到哪台服务器上。如何保证请求平均的分发给不同的服务器,从而缓解用户量增加的压力。
项目中,如果用户登录成功了,将用户的标识放到Session域中,在搭建集群之后,Session数据共享问题。
由于用户量增加,热点数据被查询的频率增高,数据库压力骤增,甚至导致数据库宕机。
在搜索一些数据时,会使用where content like '%#{xxx}%'查询条件,会导致索引失效,检索速度极慢。
- 为了解决上述的问题,需要使用到三门技术。
Nginx - 解决用户请求平均分发。
Redis - 解决数据