一、传统架构及痛点

传统的网站产品应用架构,所有资源部署在应用服务器本地存储或挂载的数据存储区,对于动静态资源不作分离, 产品架构如下图所示:

该架构存在诸多问题:

● 系统性能会随着系统访问量的增长而受到限制甚至遭遇瓶颈;

● 静态资源访问量巨大时,占用出口带宽,影响动态请求响应;

● 用户请求分散时,回源距离长,影响用户体验(单纯使用CDN仍然需要回源拉取)。

二、CDN+OSS架构方案:

该架构充分利用到“OSS带宽/流量成本低、独立响应、存储空间无上限”的特点,结合CDN分发网络,实现资源动静分离,支持海量用户访问。

优化后产品架构如下图所示:

1、适用场景

● 静态文件存储量大,文件数量多,文件体积较大,服务器存储空间不够;

● 静态文件访问量大,占用带宽负载或服务器负载,I/O问题导致用户访问卡顿;

● 用户分布较为分散,分布在全国各地、各运营商;

● 对文件下载速度要求较高,且并发下载量高。

2、架构描述

**涉及产品介绍: **

对象存储服务(OSS:****Object Storage Service)是京东云自主研发的大规模分布式对象存储服务,面向企业和个人开发者提供高可用、低成本、强安全的云端存储服务。您可以实现对数据的统一管理,满足各类存储需求。支持标准的 RESTfulAPI 接口,您只需按实际用量付费,无最低使用限制。支持流式写入和文件写入两种方式。面对冷数据存储的场景,对于那些访问频率比较低,同时对访问速度要求不高的数据,可以将数据以低频访问的方式进行存储,为您保存和备份资料提供了一个海量低价的空间。

京东云CDN(Content Delivery Network),基于京东优质网络基础设施和智能云计算技术,向用户提供低成本、高性能、可扩展的互联网内容分发服务。利用广泛的节点覆盖和先进的云调度、云存储技术,将海量内容更快、更可靠地投递给互联网终端用户,降低网站运营成本,提升用户互联网应用体验。京东云 CDN 的前身是服务于京东商城的自建 CDN 平台,历经多年 618 和 11.11等大促业务活动考验,京东云 600+ 节点广泛覆盖于全国各区域和运营商,精选全网优质基础设施,边缘节点覆盖全网、全地域,真正实现就近接流、就近推流。

将京东云的对象存储和CDN服务搭配使用,使用京东自建的全网CDN加速节点,为您提供上传下载双向加速,实现全网覆盖、快速高效的内容分发。

**架构优势: **

降低Web/应用服务器负载,静态资源响应压力转移到CDN,避免性能影响;

费用最低,OSS的存储费用远低于云主机磁盘费用;

超大容量存储空间,大带宽上传通道,无需担心存储空间上限;

降低流量费用,正常访问热度情况下,相比直接访问OSS,减少95%回源流量。

三、实际案例

以一个常见的Web站点为例。www.abc.com是一个新闻门户网站,有500GB的新闻图片、新闻视频、JS文件等静态内容,使用了LAMP架构,目前站点全套架构部署在京东云上。随着用户业务发展,访问量的不断增长,不少用户反映,访问网站的速度越来越慢,图片、视频加载慢,卡顿率高,网站响应慢。客户工程师发现用户上传的图片越来越多,业务高峰期,带宽峰值很高,服务器I/O经常被占满。

对于以上案例我们可以利用以上介绍的OSS+CDN架构对网站进行优化,实现动静分离的产品架构,提升用户访问体验,同时成本可控。

解决方案及步骤如下:

1、对网站应用架构进行整理,区分动态程序部分和静态部分到不同的目录进行管理,建立image、video、js目录,分别放置所有网站图片素材;

2、京东云控制台进入OSS产品,新建一个Bucket。根据云主机所在的区域选择bucket所在区域,权限选择“公共读”,bucket名称与云主机新建的目录的名称对应,如“abc-image-bucket”、“abc-video-bucket”和“abc-js-bucket”;

3、分别绑定域名image.abc.com、video.abc.com、js.abc.com并进行CDN加速。

4、上传文件:提供控制台上传和表单上传两种方式。

控制台上传:可以通过对象存储控制台上传小于1GB 的文件。如您要上传的文件大于1GB,请通过对象存储 API或SDK的方式上传。

表单上传:表单上传指用户使用OSS API中的Post Object请求来完成文件的上传,非常适合嵌入在HTML网页中来上传文件;

5、修改DNS调度,增加CNAME解析,将原本访问源站的请求,调度到CDN加速域名,以后用户访问您的网站的静态文件就全部通过OSS+CDN的方式访问,不再占用您云主机的资源。

四、典型应用场景

● 新闻门户网站

● 应用分发市场

● 在线音乐、在线K歌

● 视频、短视频(UGC/PGC)

● 电影院线

● 在线教育

欢迎点击“链接”了解更多精彩内容

阅读原文

干货 | CDN搭配OSS最佳实践 ——搭建动静态分离的应用架构的更多相关文章

  1. Nginx 与Tomcat 实现动静态分离、负载均衡

    Nginx 与Tomcat 实现动静态分离.负载均衡 一.Nginx简介: Nginx一个高性能的HTTP和反向代理服务器, 具有很高的稳定性和支持热部署.模块扩展也很容易.当遇到访问的峰值,或者有人 ...

  2. Nginx +Tomcat 实现动静态分离(转)

    Nginx +Tomcat 实现动静态分离 动静态分离就是Nginx处理客户端的请求的静态页面(html页面)或者图片,Tomcat处理客户端请求的动态页面(jsp页面),因为Nginx处理的静态页面 ...

  3. 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件

    除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...

  4. Nginx+tomcat负载均衡并动静态分离

    Nginx使用正则表达式配置location,指定某些后缀的文件直接从文件路径中找(如*.jpg直接去C:/XX/XX/XX/img下找),其他的请求转发给tomcat 同时可以配置多个tomcat ...

  5. nginx动静态分离以及配置https(安全组强行切换以及导致的问题解决)

    公司原来的网络采用http/https同时支持的方式,http并不会强制自动跳转到https,最近要求强制切换,导致了一系列问题.趁今天测试完成了,整理如下: 1.要求HTTP自动跳转到HTTPS: ...

  6. nginx同域名动静态分离

    公司需求是如果是app加载静态页面的话要通过应用服务直接请求指定的服务  由于机房迁移  不得不将该文件迁移到一个指定的地方  需要通过nginx配置检测到是访问该静态页面的就转到该静态页面上面进行加 ...

  7. nginx+tomcat实现动静态分离

    ===============Tomcat 概述: Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache ...

  8. MySQL性能优化的21个最佳实践

    http://www.searchdatabase.com.cn/showcontent_38045.htm MySQL性能优化的21个最佳实践 1. 为查询缓存优化你的查询 大多数的MySQL服务器 ...

  9. 整合Tomcat和Nginx实现动静态负载均衡

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6386135.html Nginx与tomcat整合可以实现服务器的负载均衡. 在用户的请求发往服务器进行处理时 ...

随机推荐

  1. 一次C语言编程遇到的问题总结

    今天用C语言做了一个简单的用户登录注册存取款等功能的系统,发现有很多功能并不会实现,大概是使用Java太多了导致许多C的知识都忘记了,现在把碰到的问题总结如下: 1.字符串复制问题 java等一些编程 ...

  2. 75.Python中ORM聚合函数详解:Sum

    Sum:某个字段的总和. 1. 求图书的销售总额,示例代码如下: from django.http import HttpResponse from django.db import connecti ...

  3. [转载]Jquery Chosen 插件动态生成option或重新绑定

    $(".chosen—select").find("option[value='1']").attr("selected", "s ...

  4. Javascript观察者模式(Object.defineProperty、Reflect和Proxy实现)

    什么是观察者模式? 答:在数据发生改变时,对应的处理函数自动执行.函数自动观察数据对象,一旦对象有变化,函数就会自动执行. 参考<原生JavaScript实现观察者模式>(https:// ...

  5. Docker Java 例子

    版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...

  6. 代理模式(Proxy Pattern)C#版本的

    引用地址 https://www.cnblogs.com/zhili/p/ProxyPattern.html --------------------------------------------- ...

  7. UVA - 12545 Bits Equalizer (比特变换器)(贪心)

    题意:输入两个等长(长度不超过100)的串S和T,其中S包含字符0,1,?,但T只包含0和1,你的任务是用尽量少的步数把S变成T.有以下3种操作: 1.把S中的0变成1. 2.把S中的“?”变成0或1 ...

  8. MFC OCX 控件事件的添加和处理

    1.控件的事件一般都是由对外的接口引发到,这里定一个接口先: 该接口有一个字符串参数,表示调用者将传入一个字符串,传进来后,我们将取得字符串的长度. 2.添加事件: 事件应该是属于窗口的,所以在Ctr ...

  9. windows driver 映射大文件

    //如果要做到掉电后仍然可以继续向下操作,可以记录文件的位置重新映射 NTSTATUS status; UNICODE_STRING strFileSrc = RTL_CONSTANT_STRING( ...

  10. JAVAEE 和项目开发(第四课:HTTP的响应格式和响应状态码)

    HTTP 协议之响应 响应格式的结构: 响应行(状态行):HTTP 版本.状态码.状态消息 响应头:消息报头,客户端使用的附加信息 空行:响应头和响应实体之间的,必须的. 响应实体:正文,服务器返回给 ...