当前标签: 架构设计

《大型网站技术架构》读书笔记

2014-10-09 20:22:10

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)


《大型网站技术架构 —— 核心原理与案例分析》 李智慧著。

很赞的一本专业书籍,推荐业内人士阅读。

下面是我的读书笔记,思维导图很大,可以下载或单独打开查看。

大型网站技术架构.jpeg



   大型网站技术架构  一、大型网站架构演化    发展历程      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被首页调用,频繁执行    高并发情况下锁引发的故障    缓存引发的故障      当缓存不仅是改善性能,而是成为网站架构的一部分时,对缓存的管理要提升到服务器级别    应用启动不同步引发的故障    大文件读写独占磁盘引发的故障    滥用生产环境引发的故障    不规范的流程引发的故障    不好的编程习惯引发的故障


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


《大型网站技术架构》读书笔记

大型网站技术架构,读书笔记

《大型网站技术架构 —— 核心原理与案例分析》 李智慧著。 

很赞的一本专业书籍,推荐业内人士阅读。 

下面是我的读书笔记,思维导图很大,可以下载或单独打开查看。

颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件