前几天简单介绍了“前后台分离”的架构设计原则,有水友问:能不能顺便介绍一下“动静分离”的架构设计原则?今天花点时间谈谈。动静分离架构的设计原则是什么?动静分离是指静态页面和动态页面解耦分离,使用不同的系统来承载相应流量的架构设计方法。什么是静态页面?静态页面是指互联网架构中几乎不变(或者说变化频率很低)的页面,例如:主页和其他html页面如js/css和其他样式文件如jpg/apk等资源文件。用配套的技术架构加速,例如:CDNnginxsquid/varnish什么是动态页面?动态页面是指互联网架构中不同用户在不同场景访问的不同页面,例如:百度搜索结果页面淘宝商品列表页面快递个人订单中心页面这些页面,不同用户不同场景访问,会动态生成不同的页面。动态页面有配套的技术架构,如:分层架构服务架构数据库,缓存架构架构,如何实现动静分离架构?静态页面和动态页面解耦分离,使用不同的系统来承载相应的流量架构。如下所示。静态页面访问路径短,访问速度快,而动态页面访问路径长,几毫秒,访问速度比较慢(数据库访问,网络传输,业务逻辑计算),几十毫秒甚至数百毫秒,对架构可扩展性的要求更高静态页面和动态页面通过不同的域名来区分由于静态页面访问速度快,动态页面生成速度慢,是否可以将原本需要动态生成的站点生成在推进并使用静态页面加速技术访问?没错,这就是互联网架构中的“Pagestatic”优化技术。什么是页面静态技术?比如下图,58同城的帖子详情页本来就需要动态生成:客户端访问/detail/12348888x.shtml详情页;web-server层从RESTful接口解析出postid为12348888;服务通过DAO层组装SQL访问数据库;最终获取数据,组装html返回给浏览器;而“静态页面”意味着帖子12348888x。页面相关加速技术加速:在这种情况下,访问速度会大大提高,访问时间会减少,用户体验会提高。静态页面适用于哪些业务场景?凡是倒闭的建筑设计都是耍流氓。并不是所有的业务场景都适合静态页面。滥用此技术会降低系统性能。静态页面适用于:数据总量不大,生成的静态页面数量不多。举个例子:快狗打车的城市页面只有几百个,可以利用这个优化,提前生成几百个城市的“静态页面”即可;有些二手车商家只有几万辆的二手车库存,你也可以提前生成几万辆的二手车静态页面;像58同城这样的信息化业务,亿级帖子,不适合静态化(文件比较碎片化,访问速度慢);简单总结动静分离是指静态页面和动态页面的解耦和分离,利用不同系统承载流量的架构设计方法;“页面静态化”是一种优化技术,为原本需要动态生成的站点提前生成静态站点;数据总量小、静态页面数量少的业务,非常适合“页面静态”优化;一分钟不长,希望大家有所收获。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文
