• 由网站构架演变说起


    前段时间看见了篇好文 大型网站架构演变和知识体系,讲述了一个简单网站到一个大型复杂网站构架演变的过程:

    架构演变第一步:物理分离webserver和数据库;

    架构演变第二步:增加页面缓存;涉及到了这些知识体系:
    前端页面缓存技术,例如squid,如想用好的话还得深入掌握下squid的实现方式以及缓存的失效算法等。

    架构演变第三步:增加页面片段缓存;涉及到了这些知识体系:
    页面片段缓存技术,例如ESI等,想用好的话同样需要掌握ESI的实现方式等。

    架构演变第四步:数据缓存;涉及到了这些知识体系:
    缓存技术,包括像Map数据结构、缓存算法、所选用的框架本身的实现机制等。

    架构演变第五步: 增加webserver;涉及到了这些知识体系:
    负载均衡技术(包括但不限于硬件负载均衡、软件负载均衡、负载算法、linux转发协议、所选用的技术的实现细节等)、主备技术(包括但不限于ARP欺骗、linux heart-beat等)、状态信息或缓存同步技术(包括但不限于Cookie技术、UDP协议、状态信息广播、所选用的缓存同步技术的实现细节等)、共享文件技术(包括但不限于NFS等)、存储技术(包括但不限于存储设备等)。

    架构演变第六步:分库;涉及到了这些知识体系:
    这一步更多的是需要从业务上做合理的划分,以实现分库,具体技术细节上没有其他的要求;
    但同时随着数据量的增大和分库的进行,在数据库的设计、调优以及维护上需要做的更好,因此对这些方面的技术还是提出了很高的要求的。

    架构演变第七步:分表、DAL和分布式缓存 ;涉及到了这些知识体系:
    分表更多的同样是业务上的划分,技术上涉及到的会有动态hash算法、consistent hash算法等;
    DAL涉及到比较多的复杂技术,例如数据库连接的管理(超时、异常)、数据库操作的控制(超时、异常)、分库分表规则的封装等;

    架构演变第八步:增加更多的webserver;涉及到了这些知识体系:
    到了这一步,随着机器数的不断增长、数据量的不断增长和对系统可用性的要求越来越高,这个时候要求对所采用的技术都要有更为深入的理解,并需要根据网站的需求来做更加定制性质的产品

    架构演变第九步:数据读写分离和廉价存储方案;涉及到了这些知识体系:
    数据读写分离要求对数据库的复制、standby等策略有深入的掌握和理解,同时会要求具备自行实现的技术;
    廉价存储方案要求对OS的文件存储有深入的掌握和理解,同时要求对采用的语言在文件这块的实现有深入的掌握。

    架构演变第十步:进入大型分布式应用时代和廉价服务器群梦想时代;涉及的知识体系非常的多,要求对通信、远程调用、消息机制等有深入的理解和掌握,要求的都是从理论、硬件级、操作系统级以及所采用的语言的实现都有清楚的理解。
    运维这块涉及的知识体系也非常的多,多数情况下需要掌握分布式并行计算、报表、监控技术以及规则策略等等。

     其中文章中提到的知识点:

     Squid中文权威指南

    ESI应对Web动态内容的挑战 

    缓存技术 

    ASP.NET 2.0的缓存技术简介 

  • 相关阅读:
    Spring 多数据源 @Transactional 注解事务管理
    Spring 多数据源 @Transactional 注解事务管理
    Spring 与 SpringMVC 容器父子关系引出的相应问题
    Spring 与 SpringMVC 容器父子关系引出的相应问题
    Mongodb 备份 还原 导出 导入 等批量操作
    Mongodb 备份 还原 导出 导入 等批量操作
    关于WEB-INF目录不提供外部访问及JSP引用 js,css 文件路径问题
    关于WEB-INF目录不提供外部访问及JSP引用 js,css 文件路径问题
    svn工具的使用问题总结
    svn工具的使用问题总结
  • 原文地址:https://www.cnblogs.com/nikytwo/p/1343291.html
Copyright © 2020-2023  润新知