上次系列一说到了数据库读写分离,下面接着讲解。数据库
使用反向代理和CDN加速网站响应后端
随着网站业务不断发展,用户规模愈来愈大,因为运营商复杂的网络链路,不一样地区的用户访问网站时速度差异极大。有相关研究代表,网站访问延迟和用户流失率正相关。为了提供更好的用户体验,留住用户,网站须要加速访问速度,主要手段有反向代理和CDN,以下图所示:缓存
CDN和反向代理的基本原理都是缓存:服务器
CDN部署在运营商的机房,所以用户在请求网站服务时,能够从距离本身最近的网络提供商机房获取数据。微信
反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,若是反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。网络
使用CDN和反向代理目的都是为尽早把请求数据返回给用户,一方面加快用户访问速度,另外一方面减缓后端服务器的负载压力。架构
使用分布式文件系统和分布式数据库系统分布式
单一的服务器性能再强大都没法知足持续增加的业务需求。数据库通过读写分离拆分后,从一台服务器拆分红两台服务器,可是随着网站业务的发展依然不能知足业务需求,这时须要使用分布式数据库;文件系统也须要使用分布式文件系统,以下图所示:微服务
架构相对之前其实更为精简。分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模很是庞大的时候才用到。一般状况下网站更经常使用业务分库,将不一样业务的数据部署在不一样的物理服务器上。
使用NoSQL和搜索引擎
网站业务又变复杂了,对数据存储和检索的需求也愈来愈复杂,网站须要采用一些非关系数据库技术好比NoSQL和非数据库查询技术如搜索引擎,以下图所示:
NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具备更好的支持。应用服务器则经过一个统一数据访问模块访问各类数据,减轻应用程序管理诸多数据源的麻烦。
业务拆分
大型网站为了应对日益复杂的业务场景,经过使用分而治之的手段将整个网站业务分红不一样的产品线。如淘宝网站会将首页、商铺、订单、买家、卖家等拆分红不一样的产品线,分归不一样的业务团队负责。
具体到技术实现上,也会根据产品线划分,将一个网站拆分红许多不一样的应用,每一个应用独立部署。应用之间能够经过一个超连接创建关系,即在首页上的导航连接每一个都指向不一样的应用地址,也能够经过消息队列进行数据分发。使用最多的仍是经过访问同一个数据存储系统来构成一个关联的完整系统,以下图所示:
分布式微服务
随着业务拆分愈来愈小,存储系统愈来愈庞大,应用系统的总体复杂度成指数级增长,数据库的访问量更加可观。
既然每一个应用系统都须要执行许多相同的业务操做,好比用户管理、商品管理等,那么能够将共同业务提取出来,独立部署。由这些可复用的业务连接数据库提供共同业务服务,而业务系统只须要管理用户界面,经过分布式服务调用共同业务完成具体业务操做。以下图所示:
这几天你们被拉入新春红包保障群(不知道跟淘宝有什么关系),每天开会开到半夜,公众号越写越短了。。下次写写中间件:缓存、消息队列、搜索引擎。
前天机械群友给我发了两张照片,是他在厂区旁边拍的,颇有感触,咱们生活都不易,只有尽本身最大能力保障家人的生活,共勉。
最后推广一波个人公众号:机械猿,欢迎关注。
历史推文连接:
本文分享自微信公众号 - 机械猿(on_ourway)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。