@yeahugo
2018-03-15T06:51:04.000000Z
字数 3952
阅读 1475
技术架构
AIY商城是一个专门售卖AIY开发套件的线上商城系统,提供商城前台商品展示、下单和后台商品和订单管理等功能。该系统技术方案要求架构容易扩展、服务稳定、数据安全。
AIY商城采用开源ECShop商城系统来进行二次开发,并且部署在阿里云平台上。
AIY商城基于租用IDC机房服务器,部署架构如下:
阿里云等云计算服务可以提供负载均衡、云服务器、云数据库等产品,相比使用IDC机房服务器,可以更好地对每个模块进行按需购买、动态扩展。下面是在阿里云提供的产品基础上的部署架构图:
整个商城系统包括下面几部分:
用户请求的过程如下:
按照每天访问100万pv预估,AIY商店用提供商城服务的ECS至少要2~3台Server。
每台ECS服务器部署下面的服务:
另外在服务高峰期2~3台服务器可能不足以支撑高并发量,可以使用阿里云提供的ESS服务。
在高峰期自动增加ECS实例,在业务回落时自动减少ECS实例。
AIY商店按照预估需要满足高峰期连接数为3000,QPS大概在10000,需要购买4核16G的RDS产品来作为数据存储。
AIY商店选用最高安全级别的金融版RDS,采用一主两备的三节点架构,通过日志多副本同步复制,确保数据的强一致性,可提供金融级的数据可靠性和跨机房容灾能力。金融版实例的拓扑图如下所示:
为了减少Mysql的访问压力,AIY商店在Mysql之上加了一个Memcache的数据库作为缓存。同样在阿里云上有云数据库Memcache版可以使用。对比自建Memcache数据库,使用云端数据库有这些好处:
OSS负责提供图片、视频等静态资源文件存储服务。使用OSS服务可以非常方便地进行文件存储,当OSS的处理能力遭遇瓶颈,OSS系统内部会自动扩展并保持对应用层透明。
另外由于静态文件用户访问量大,且分布在全国各地,可以使用阿里云的CDN服务来通过海量的就近节点来加速访问。
利用CDN和OSS实现动静分离,灵活的架构可以支持海量用户访问。产品架构如下图所示:
作为一个b2c多终端的商城,AIY 商城会面临下面的安全问题:
基于商城所遇到的常见安全问题,AIY商城采用了下面的安全方案:
安全方案 | 基本作用 |
---|---|
DDOS高防IP | 防止服务器遭受大量DDos攻击后导致服务不可用,提供应用层抗DDos攻击的能力 |
Web应用防火墙 | 对网站业务流量进行恶意特征识别及防护,讲正常、安全流量回源到服务器。提供Web应用攻击防护、缓解恶意CC攻击,解决防刷、防爬等业务安全风险,HTTPS优化 |
安骑士 | 主机安全服务,提供主机漏洞检测和修复,高危配置基线检查,黑客入侵检测 |
态势感知 | 收集企业原始日志和网络空间威胁情报,利用机器学习还原已发生的攻击,并预测未发生的攻击。提供基础威胁检测,SQL注入、XSS应用漏洞扫描 |
数据风控 | 数据风控,专业、实时对抗垃圾注册、刷库撞库、活动作弊等严重威胁互联网业务安全的风险,同时保证正常用户体验顺畅无影响。 |
方案主要说明:
DDOS高仿IP、Web应用防火墙、数据风控、安骑士、态势感知等均基于阿里云提供的安全服务。
Ecshop和Magento对比
商城 | 客户并发数 | 请求数 | 错误数 | 平均响应时间 | 平均吞吐率 |
---|---|---|---|---|---|
Ecshop | 200 | 2844 | 0 | 4.354 | 47.40 |
Magento | 200 | 1039 | 0 | 8.773 | 17.20 |
Ecshop详细分析
使用阿里云4核CPU、8G内存的服务器(Intel Xeon E5-2682 v4 处理器,2.5GHz主频),同样采用CentOS操作系统、Nginx作为web服务器,测试结果如下:
商城 | 客户并发数 | 请求数 | 错误数 | 平均响应时间 | 平均吞吐率 |
---|---|---|---|---|---|
Ecshop | 200 | 4730 | 0 | 2.475 | 78.77 |
Ecshop | 300 | 5402 | 0 | 3.410 | 85.746 |
使用8核、16G服务器(Intel Xeon E5-2682 v4 处理器,2.5GHz主频)进行测试,测试结果如下:
商城 | 客户并发数 | 请求数 | 错误数 | 平均响应时间 | 平均吞吐率 |
---|---|---|---|---|---|
Ecshop | 100 | 5042 | 0 | 0.695 | 142.541 |
Ecshop | 200 | 8176 | 0 | 1.186 | 146.341 |
Ecshop | 250 | 9365 | 0 | 1.621 | 151.048 |
Ecshop | 300 | 9217 | 0 | 1.964 | 151.09 |
Ecshop | 350 | 9218 | 0 | 2.285 | 151.115 |
预估AIY商城每天PV达到100万。需要系统平均QPS=11.57(QPS)。
但实际上每天可能会有一段时间集中大部分访问量。假设每天80%的访问量集中在20%的时间,计算峰值QPS的计算公式为:
( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
计算每天100万 PV的系统,需要支撑峰值QPS:
( 1000000 * 0.8 ) / (86400 * 0.2 ) = 46.33 (QPS)
按照正常业务量估算,面向AIY商店部署一台服务器足以支撑商城业务。
由于考虑系统稳定性,采用2~3台服务器作为aiy商店的web服务器,避免一台服务器宕机不能访问。
把商店后台管理、对接谷歌文档等其他服务,放在另外的服务器进行部署。总体需要3~4台服务器为商城系统提供服务。
预估商城高峰期客户并发量将达到1000,以每台服务器8核、16G支撑250个并发量计算,至少需要4~5台服务器。
使用阿里云提供的ESS服务可以在高峰期自动扩展服务器数量,而在非峰值情况使用2~3台服务器,避免对服务器资源造成浪费。
假设商城前期会推出秒杀、抢购等营销活动,同一时间在线人数达到1万以上级别。按照现有Ecshop系统架构支撑此类业务比较困难。
对此类业务,采用的方案需要对该系统部分业务进行分拆,例如分拆成单独的抢购系统。采用能支撑高并发的web开发技术(包括语言、框架、数据库等)来对系统进行优化和改造。
根据后期业务量的扩张,原有的架构不足以支撑更多并发量和海量数据存储。需要对原有架构作以下修改:
有下面几个应急方案保证服务稳定可用: