如何设计大型互联网系统架构
1、互联网系统面临的技术挑战
高并发、大流量
高可用
海量数据
用户分布广泛、网络环境复杂
安全环境恶劣
需要变化快速、发布频繁
渐进式发展
2、主要的架构模式
2.1、横向分层
将系统横向拆分成多个子系统,比如视图层、应用逻辑层、公共服务层、存储层等,每一层职责单一,可根据每一层的特性进行优化和扩展。
2.2、纵向分割
将一个复杂的系统的每一层按不同的功能进行拆分,拆分后的每一个模块的功能相对单一,更利于维护,也可按需扩容,提升系统的并发能力。
2.3、分布式集群
将每个模块都部署在多台服务器上,并通过负载均衡将每一个模块都构建成一个集群,提升系统的并发及处理大数据量的能力。静态资源、服务、存储、计算、数据都可以实施分布式部署方案。
2.4、缓存
缓存是提升系统性能最简单有效的手段,比如CDN、反向代理、本地缓存、远程缓存。
将数据存储在离访问者更近或者访问速度更快的地方,减少网络开销、IO开销、计算开销。
2.4、异步
异步就是将模块间的直接调用改为消息驱动,可以解除模块间的耦合,提升系统的可用性、加快系统响应速度、消除并发访问高峰。
2.5、冗余
分布式部署其实就是实现的冗余,应用系统多台服务器互为冗余,现在很多存储技术实现了复本,就是对数据的一种冗余。冗余可以提升系统的可用性,数据安全性、数据读取的并发能力。
2.6、自动化
自动化运维主要是通过自动化的系统监控、部署、节点的管理,提升系统的可用性,在系统压力达到一定的阈值可以自动扩容,系统某个服务器或者进程出现故障,可自动剔除。
2.7、安全
安全是为了保护系统的用户的数据和财产安全,保障系统的稳定性,主要手段包含身份认证、数据加密、防XSS、SQL注入功能、风控管理等。
3、架构演化历程
互联网业务呈现一种渐进式发展过程,系统架构也需要不断演化。
评论