门户网站架构设计
小浩研究了网站架构现状和面临的问题之后,认为可以从以下方向入手,实现这个需求:
- 接入层:升级企业门户网站入口的带宽,解决网站访问速度慢的问题。
- 流量层:购买一台硬件负载均衡设备,将访问流量的分发到两台物理服务器上。
- 应用层:购买两台物理服务器,根据当前企业门户网站的负载情况,敲定服务器的配置。
- 数据层:购买一台硬件存储设备,用于两台服务器共享挂载,实现网站高可用。
小浩在IT团队会议上发表了自己的思路,团队成员进行了热烈的讨论:
- 应用层有两台物理服务器保证高可用,但数据层、流量层、接入层都是单点,如何解决?如果每层都进行高可用架构设计,硬件成本和维护成本都将上升好几个等级。
- 企业门户网站主要提供视频和图片资源的在线观看,但视频播放时非常占用带宽和服务器资源,我们的客户遍布全国,如何确保不同城市的用户播放视频的体验一致呢?
- 企业门户网站的视频和图片,需要增加自动水印、防盗链的配置,避免门户网站上的资源被其它网站盗用。
- 如果后续门户网站的资源再次遇到瓶颈时,需要再次升级硬件配置。如何能让架构更加弹性呢?
- 门户网站上的客户信息落盘后是否可以加密,保护客户的隐私。
小浩突然反应过来,如果直接将业务迁移上云,即可解决网站高可用和架构弹性的问题,于是对云上门户网站的架构进行了规划:
- 企业门户网站,整体采用动静分离架构,动态数据存放在阿里云文件存储NAS上,静态数据存放在阿里云对象存储OSS上。
- 应用层使用两台ECS实例,使用阿里云文件存储NAS作为共享盘,挂载到两台ECS实例上,通过负载均衡SLB形成高可用。
- 存储需要设置不同类型的权限,满足不同企业门户网站用户的需求,如部分企业门户网站资源仅特定用户可下载,部分企业门户网站资源匿名用户也可进行下载。
- 流量层使用负载均衡SLB,进行流量分发,当部署在云服务器ECS上的企业门户网站业务不可用时,负载均衡SLB自动进行故障隔离。
综合上述情况,小浩在存储层上有如下需求:
- 权限控制:通过权限控制来满足不同企业门户网站用户的需求,可通过资源来授权用户,亦可通过用户授权资源,灵活进行权限控制。
- 数据安全:对企业门户网站重要数据落盘进行加密,读取时进行解密,整个加解密过程门户网站用户完全无感知。存储要具备防盗链功能,能防止存放在存储上的静态资源被互联网其它网站或用户引用,产生不必要的流量费用。企业门户网站调用存储静态资源时,需要解决javascript跨域访问问题。使用存储时会对存储上的资源进行删除等操作,可以通过回收站版本控制等功能进行恢复。
- 数据管理:企业门户网站静态页面,可以通过存储完成托管,实现动静分离,降低企业门户网站云服务器负载,加快网站访问速度。
- 数据处理:企业门户网站上的图片、视频、文档等资源,可通过存储完成图片加水印、格式转换等图片处理能力,视频可进行转码、加水印、截帧等视频处理能力,文档可以在线进行格式转换、预览等操作。
- 传输加速:企业门户网站上的静态资源,如附件、视频资源客户经常需要下载到本地,通过传输加速满足不同地域的客户都能有极致的资源上传和下载体验。
- 门户网站高可用:使用负载均衡SLB进行流量分发、故障隔离。通过存储产品存储门户网站静态资源,本地ECS仅运行web应用服务。
同时小浩了解到,以上云产品在阿里云官网都有免费试用资源,于是他决定去领取免费资源进行门户网站的架构搭建测试,并逐个解决上述问题。
门户网站搭建之存储选型
那小浩为什么要选择对象存储OSS和文件存储NAS作为企业门户网站后端的存储服务呢?
企业门户网站是一个连接企业内部和外部的网站,企业员工、客户、合作伙伴和供应商等用户都可以通过门户获得个性化的信息和服务。门户网站包含视频、图片、文件、应用数据等重要资源,针对不同用户和不同场景设置不同的流程规则。因此,如何安全可靠地存储门户网站重要资源数据,并实现企业门户网站数据快速存取成为构建企业门户网站的关键。其中面临诸多的挑战:
- 海量数据存储:存储空间需求不断增长,存储容量及成本压力大。
- 数据持久性:数据存储成功后,需要能够抵抗单机/单机架/单机房等各种类型的故障而保障数据不丢失。
- 高QPS场景:门户网站场景有高 QPS 读写请求且时延要求极高,对底层存储IOPS 压力极大。
- 扩展性:随着业务的增长能线性扩展,满足增长的需求。
- 高可用性:服务不可用需快速恢复,SLA 要尽可能高。
- 成本:在海量存储容量的情况下,需要尽力降低单位存储成本,以降低业务的成本支出。
阿里云对象存储OSS和文件存储NAS提供海量、安全、低成本、高持久性、高扩展性的云存储服务,可以很好地满足上述挑战,辅助客户建设可靠、稳定、安全的企业门户网站应用。
练习实验:基于对象存储OSS实现企业门户网站托管
https://developer.aliyun.com/adc/scenario/exp/dd9b0b7a9419465ea92e702f3ca0a10e