大型可扩展系统架构—新浪网动态应用平台实践介绍
童剑先生用深入浅出的语言和生动的实例,向与会者介绍了系统架构师在平台设计和优化上
的关注重点,分享了10 个方面的架构与设计经验。"高可用、低成本、可扩展",三个简单
词汇,概括了架构师在设计时的最高原则所在。
1、系统架构
新浪网动态应用平台分为内外网部分。
外网由4/7 层交互机、前端app 集群、前端cache 集群组成。
内网由数据库集群、memcache 集群、存储集群、开发环境、代码内容发布系统、实时监控
系统、统一配置管理系统组成
2、性能和可扩展性
多机房分布体系(广州、北京);
机房间用专线/VPN;
MYSQL 、VFS 存储同步;
4、开源使用
新浪使用了LAMP、memcached、squid+cache、heartheat+DRBD、Xen、cfengine、bind
DNS+Mon、HAPROXY 等开源项目。
5、架构设计
(1)借鉴成功经验(Memcached、MingleFS)
(2)使用成熟的软件
除非别无选择才去自己开发代码,自己开发代码也许容易,但长期维护很不容易、深入了解
你所使用的成熟的软件,用好它!
(3)一定程度的底层封装和隔离
(4)简单=高效
不要过于追求完美,够用就好;循序渐进的开发过程,分阶段达成目标;简单 ( 结构设计 +
实现方法 ) = 高效 ( 开发过程 + 故障排查 );简单是指:简单的体系结构、更少的系统单
元、更少的处理流程、更少的代码编写。
6、标准化配置
(1)运行环境配置
(2)资源配置
a) 软件包、版本、路径、用户
b) 常用配置文件统一管理
c) apache 和squid 日志记录每个请求执行时长,mysql 打开慢日志
7、约定与限制
(1)基本的约定
(2)必要的限制
8、监控报警
(1)原则:详细的感知运行状况,一定程度的自动控制和修复行为
(2)统计分析
a) www 日志
b) mysql 日志
c) 错误日志
d) 应用程序日志
(3)监控
a) 可用性(ping/port/磁盘..)
b) 容量(带宽、磁盘、CPU..)
c) 质量(响应速度、成功率..)
d) 异常(进程/访问量..)
(4)主动处理尝试
1) 拒绝恶意访问IP 地址
2) 暂停或重启服务
(5)报警
9、关于性能
(1)在保证高可用的前提下追求高性能
(2)程序开发语言使用
如果性能瓶颈不在CPU,就用解释性语言
(3)服务器软件的合理使用
每个软件都有最合适的环境,如Nginix/lighttpd
适合高并发高IO 的服务
(4)影响性能的软硬件环境
a) 硬件:各种应用场景中常见的硬件性能瓶颈和导致的后果现象
b) 软件:事件处理模型,请求处理时长,内存使用,磁盘使用。
(5)网络服务的性能指标
每秒请求数、并发量、网络吞吐量
(6)性能分析
a) 不看表面现象,治本
b) 给系统整体把脉。
10、容量规划
(1)日常情况合理的使用率
a) 负载小于CPU 的核心数,如单CPU 核应该小于4
b) 各项资源使用率在40%以下,峰值情况下不高于80%
(2)使用率超过60%就应该引起注意
a) 分析是正常的业务增长还是不合理的使用
b) 分析是否为异常的用户访问,是否遭受攻击
c) 分析是否业务优化