从集中到分布:应对数据量和并发量的指数级增长。 从单点到集群:通过冗余设计提升可用性和扩展性。 从通用到专用:针对不同场景选择最优技术(如 NoSQL 替代关系型数据库)。 从单体到微服务:通过解耦提升系统灵活性和开发效率。
这一历程体现了技术驱动业务发展的核心思想,每一步演进都是为了解决特定阶段的瓶颈问题。
1 初始阶段的网站架构
- 特点:单一服务器部署,应用、数据库、文件资源集中在一台机器上。
- 适用场景:用户量小,功能简单。
- 示例:早期个人博客或小型企业官网。
2 应用服务和数据服务分离
-
演进原因:随着用户增长,单台服务器性能不足。
-
方案:
- 应用服务器:处理业务逻辑。
- 数据库服务器:独立存储数据。
- 文件服务器:存储静态资源(如图片)。
-
优势:提升资源利用率和系统稳定性。
3 使用缓存改善网站性能
-
核心目标:减轻数据库压力,加速数据访问。
-
实现方式:
- 本地缓存:如 Ehcache,存储在应用服务器内存。
- 分布式缓存:如 Redis、Memcached,独立部署缓存集群。
-
典型场景:高频读取的热点数据(如商品详情页)。
4 使用应用服务器集群改善并发处理能力
-
演进原因:单台应用服务器无法支撑高并发请求。
-
方案:
- 负载均衡:通过 Nginx、HAProxy 将请求分发到多台应用服务器。
- 横向扩展:动态增加服务器节点应对流量高峰。
-
优势:提高系统吞吐量和容错能力。
5 数据库读写分离
-
核心目标:解决数据库 I/O 瓶颈。
-
方案:
- 主从复制:主库处理写操作,从库处理读操作。
- 数据同步:通过 Binlog 实现主从数据一致性。
-
挑战:延迟问题需通过业务层补偿(如异步队列)。
6 使用反向代理和 CDN 加速网站响应
-
反向代理:
- 功能:缓存静态资源、SSL 卸载、安全过滤。
- 工具:Nginx、Apache Traffic Server。
-
CDN(内容分发网络) :
- 原理:将静态资源分发到全球边缘节点。
- 优势:减少用户访问延迟,降低服务器带宽压力。
7 使用分布式文件系统和分布式数据库系统
-
分布式文件系统:
- 场景:存储海量文件(如图片、视频)。
- 技术:HDFS、FastDFS、Amazon S3。
-
分布式数据库:
- 场景:分库分表解决单库容量和性能瓶颈。
- 技术:MySQL Sharding、TiDB。
8 使用 NoSQL 和搜索引擎
-
NoSQL:
- 特点:高扩展性、灵活数据模型。
- 适用场景:非结构化数据存储(如用户行为日志)。
- 技术:MongoDB、Cassandra。
-
搜索引擎:
- 功能:支持复杂查询和全文检索。
- 技术:Elasticsearch、Solr。
9 业务拆分
-
核心思想:将单体应用拆分为独立子系统。
-
实现方式:
- 垂直拆分:按业务功能划分(如订单系统、支付系统)。
- 水平拆分:同一业务模块分多实例部署。
-
优势:降低耦合度,提升开发与部署效率。
10 分布式服务
-
演进目标:解决服务间调用复杂性和资源复用问题。
-
技术方案:
- 微服务架构:每个服务独立开发、部署、扩展。
- 服务治理:通过注册中心(如 ZooKeeper、Nacos)管理服务发现与熔断。
- RPC 框架:如 Dubbo、gRPC。
-
典型应用:大型电商平台(如淘宝、京东)。
演化逻辑总结
- 从集中到分布:应对数据量和并发量的指数级增长。
- 从单点到集群:通过冗余设计提升可用性和扩展性。
- 从通用到专用:针对不同场景选择最优技术(如 NoSQL 替代关系型数据库)。
- 从单体到微服务:通过解耦提升系统灵活性和开发效率。
这一历程体现了技术驱动业务发展的核心思想,每一步演进都是为了解决特定阶段的瓶颈问题。