当前标签: 架构设计 《大型网站技术架构》读书笔记2014-10-09 20:22:10 请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)《大型网站技术架构 —— 核心原理与案例分析》 李智慧著。 很赞的一本专业书籍,推荐业内人士阅读。 下面是我的读书笔记,思维导图很大,可以下载或单独打开查看。 大型网站技术架构 一、大型网站架构演化 发展历程 1 初始阶段 所有资源共用服务器 2 应用、数据服务分离 出现文件服务器和数据库服务器 3 使用缓存 静态 或 可缓存的内容 本地缓存 如方法缓存、数据缓存等 分布式缓存服务器 Squid Varnish Memcached 4 应用服务器集群 对动态请求的改善 可持续增加服务器 负载均衡调度,按策略分发 5 数据库读写分离 配置主从、数据更新同步、实现读写分离 6 使用反向代理和CDN加速网站响应 可以从距离自己最近的网络提供商机房获取数据 7 分布式文件系统、数据系统 对文件、图片等数据的访问采用分布式的方式 8 使用NoSQL和搜索引擎 NoSQL 搜索引擎 非数据库形式的搜索方式 9 业务拆分 按业务、技术等将网站拆分为多个,独立开发、维护和部署 10 分布式服务 将共用的业务提取出来,独立部署。 由可复用的业务连接数据库 设计误区 一味追随大公司解决方案 合适自身的,才是最好的 为了技术而技术 企图用技术解决所有问题 业务问题,要优先通过业务设计来解决 二、大型网站架构模式 分层 横向分层 如视图、应用、服务、数据等层次 注意严格遵守约束 禁止跨层调用 逆向调用 分割 纵向分层 按业务、功能、服务等进行分割 封装成高内聚低耦合的模块单元 分布式 分布式应用和服务 系统分割后,按应用、模块分布式部署 分布式静态资源 独立域名和服务器 分布式数据和存储 分布式计算 集群 即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务 可灵活增加服务器,替换故障机器 缓存 CDN、反向代理、本地缓存、分布式缓存 异步 多线程共享内存队列 消息队列 分布式消息队列 冗余 冗余备份、灾备 自动化 自动化部署、监控、报警、失效恢复 新浪微博 系统架构 分为基础服务、平台服务、应用服务和API 四部分 底层:为基础服务层,提供数据库、缓存、存储、搜索等服务 中间层:是平台服务和应用服务,按服务模块划分 API、各类客户端(Web端、手机端)、第三方应用等 同步推模式改为异步推拉结合的模式 多级缓存策略 多个数据中心 一系列的自动化工具 四、网站的高性能架构 性能测试指标 响应时间 并发数 同时提交请求的用户数目 对应的有网站在线用户数和网站系统用户数(可能最大用户数量) 吞吐量 单位时间内系统处理的请求数量 TPS、HPS、QPS等 性能计数器 描述服务器或操作系统的一些数据指标 系统负载、对象与线程数、CPU使用、IO指标 Web前端性能优化 【参考】《构建高性能Web站定》 【参考】《高性能网站进阶指南》 【参考】《高扩展网站的50条原则》 异步操作 用户请求的数据发送给消息队列后立即返回 任何可以晚点做的事情都应该晚点再做 五、网站的高可用架构 可用性度量 2/3/4/5个9的可用性标准 可用性考核 对团队、每个工程师的考核可以采用故障分 集群的Session管理 Session复制 几台服务器之间同步Session 消耗大量内存和网络资源只适合集群规模较小的情况 Session绑定 总是将某个IP的请求发到某台服务器 但如果该台服务器宕机了,Session就丢失了 较少使用 用Cookie记录Session 每次请求,将Cookie中的Session数据发给服务器 大小受限,要求客户端支持Cookie Session服务器 独立部署的Session服务器统一管理Session 实际是将应用服务器的状态分离 分为有状态、无状态服务器 预发布验证 网站发布时,先发布到预发布机器上 预发布服务器没有配置在负载均衡服务器上,外部用户无法访问 测试通过后代码同步到其它对外服务器上 代码控制 主干开发,分支发布 便于管理和控制,利于持续集成 分支有bug,修复,merge回主干 分支开发,主干发布 优势:主干上的代码永远是最新发布的版本 各个分支独立进行,互不干扰。可以使不同发布周期的开发在同一应用中进行 有利于不同开发周期,不同发布时间的多个项目 或 组件 目前开发大型网站常见的代码控制方式 自动化发布 选周四为发布日 有问题可以周五挽回错误 火车发布模型 灰度发布 用于用户测试,即在部分服务器上发布新版本,其余服务器保持老版本 监控用户操作行为,收集报告 AB测试 没有发现问题,逐步发布更多的服务器,直到全部 发现问题,回滚这部分更新的服务器 六、网站的伸缩性架构 物理分离 增加服务器 数据库、缓存、静态资源 纵向分离和横向分离 负载均衡 Http重定向负载均衡 DNS域名解析负载均衡 反向代理负载均衡 IP负载均衡 数据链路层负载均衡 LVS 负载均衡算法 轮询 加权轮询 随机 最少连接 源地址散列 分布式缓存 Memcached访问模型 数据存储服务器集群 划分主从数据库 Cobar 分布式关系数据库访问代理 NoSQL 七、网站的可扩展架构 分布式消息队列 分布式服务,可复用的业务平台 拆分,模块独立部署 Web Service与企业级分布式服务 可扩展的数据结构 使用NoSql的ColumnFamily(列族)设计 数据结构随意扩展。【思考】类似JSON 开放平台建设网站生态圈 十三、大型网站典型故障 写日志也会引发故障 log文件迅速增加,消耗磁盘 设置日志输出级别Warn,关闭某些第三方库的日志输出 高并发访问数据库引发的故障 某条SQL被首页调用,频繁执行 高并发情况下锁引发的故障 缓存引发的故障 当缓存不仅是改善性能,而是成为网站架构的一部分时,对缓存的管理要提升到服务器级别 应用启动不同步引发的故障 大文件读写独占磁盘引发的故障 滥用生产环境引发的故障 不规范的流程引发的故障 不好的编程习惯引发的故障 ![]() 1 C6 架构系列——架构设计思想和分层 2 C6 架构系列——Maven多模块划分和结构 3 C6 架构系列——MVC模式和领域驱动设计(DDD)的结合 4 C6 架构系列——Maven模块划分和依赖设计 5 《大型网站技术架构》读书笔记 6 REST和RESTFul Web Service学习知识整理 7 C6 架构重构,针对高并发、高可用和多前端 8 C6架构重构 - service-cache模块(基于Simple-Spring-Memcached) 9 C6架构重构 - service-search模块 一(Lucene基础技术探讨) 10 Java B2C商城系统(2009版)介绍 分享到: 《大型网站技术架构》读书笔记大型网站技术架构,读书笔记《大型网站技术架构 —— 核心原理与案例分析》 李智慧著。 很赞的一本专业书籍,推荐业内人士阅读。 下面是我的读书笔记,思维导图很大,可以下载或单独打开查看。 |
粤ICP备14060523号 Copyright @2014 -唯心六艺软件 |