大型网站技术架构核心原理与案例分析 读书笔记
大型网站核心架构要素
- 性能
- 可用性
- 伸缩性
- 扩展性
- 安全性
一、性能
从浏览器导数据库,影响用户请求的所有环节都可以进行性能优化。
- 浏览器端:浏览器缓存、页面压缩、页面布局、减少cookie等手段;CDN和反向代理服务器
- 应用服务器:本地缓存和分布式缓存;异步消息队列;集群;代码层面使用多线程、改善内存管理等。
- 数据库:索引、缓存、SQL优化都比较成熟;NoSQL
衡量指标:响应时间、TPS、系统性能计数器等
二、可用性
网站高可用的主要手段是冗余。
三、伸缩性
衡量架构伸缩性的主要标准是是否可以使用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供与原来无差别的服务。集群中可容纳的总的服务器数量是否有限制。
- 应用服务器集群,使用合适的负载均衡设备就可以不断添加服务器
- 缓存服务器集群,新加入的服务器可能导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。需要改进缓存路由算法。
- 关系型数据库支持数据复制,主从热备等机制,但很难做到大规模集群伸缩性。因此必须在数据库外实现,通过路由分区等手段将部署有多个数据库的服务器组成集群。
- NoSQL数据库产品通常对伸缩性支持良好
四、扩展性
扩展性是对新业务而言的。是否很容易上线新产品,而不必或很少改动既有业务功能。
网站可伸缩架构的主要手段是事件驱动架构和分布式服务。
事件驱动架构通常利用消息队列实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的矗立着作为消费者从队列中获取消息进行处理。通过这种方式将消息生产者和消费者分离,可以透明地增加消息生产者任务或消费者任务。
分布式服务则是将业务和可复用服务分离,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响。可复用服务升级变更时,也可以通过提供多版本服务对应用实现透明升级,不需要强制应用同步变更。
大型网站为了保持市场地位,还会吸引第三方开发者,调用网站服务,使用网站数据开发周边产品,形成所谓的“生态”。
五、安全性
针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。
网友评论