少量用户:单机系统
万级用户:数据库与应用分离
十万级用户:使用缓存改善性能;应用服务集群化
百万级用户:使用反向代理和CDN加速响应;数据库读写分离
千万级用户:使用分布式文件系统和分布式数据库系统
亿级用户:使用搜索引擎、NoSQL、消息队列与分布式服务
架构的重要程度
需求
价值
原则
实践
工具
性能测试方法
- 性能测试:系统设计之初的目标
- 负载测试:不断的加大测试压力,使系统某项或多项指标达到边界值,找到系统最佳运行的指标数据
- 压力测试:最大的并发请求能力
- 稳定性测试:系统持续的,长期的运行数据指标
系统性能优化的分层思想
机房与骨干网络性能优化:
- 异地多活的多机房架构
- 专线网络与自主CDN建设
服务器与硬件性能优化:
- 使用更优的CPU、磁盘、内存、网卡,对软件的性能优化可能是数量级的,有时候远远超过代码和架构的性能优化
操作系统性能优化:
- 系统某些指标设置,比如关闭transparent huge pag
虚拟机性能优化:
- 比较典型的,Java垃圾回收器,并发回收器CMS,G1回收器
基础组件性能优化:
- jetty代替jboss,性能提升非常大
软件架构性能优化:
- 缓存
- 异步
- 集群
软件代码性能优化:
- 遵循面向对象的设计原则与设计模式编程,避免“烂代码”
- 并发编程,多线程与锁
- 资源复用,线程池与对象池
- 异步编程,生产者消费者
- 数据结构,数组、链表、hash表,树
高可用架构
- 可用性度量
- 可用性指标
- 故障分
- 高可用架构
- 负载均衡
- 备份与失效转移
- 消息队列隔离
- 限流与降级
- 异地多活
- 高可用运维
- 自动化部署
- 自动化监控
- 自动化测试
- 预发布测试
系统安全架构
Web攻击:
- XSS攻击:第三方脚本攻击
- SQL注入攻击
- CSRF攻击:跨站点攻击
Web防护:
- 过滤消毒
- SQL参数绑定
- 验证码
- Web防火墙
加密:
- 单项散列加密:比如用户登录密码,不可逆向解密
- 对称加密
- 非对称加密:比如https,加密公钥,解密私钥
信息过滤反垃圾:
- 分类算法:贝叶斯算法,通过对邮件内容,判断是否为垃圾邮件
- 布隆过滤器