[关闭]
@yeahugo 2018-04-11T07:34:30.000000Z 字数 3012 阅读 1583

AIY商城技术方案文档 2.0

技术架构


1 概述

1.1 产品概述

AIY商城是一个专门售卖AIY开发套件的线上商城系统,提供商城前台商品展示、下单和后台商品和订单管理等功能。该系统技术方案要求架构满足高并发、高可用、数据安全。

1.2 技术方案概述

AIY商城采用Go语言、Redis、Mysql数据库等进行开发,并且部署在阿里云平台上。

2 系统总体方案

2.1 系统部署方案

阿里云等云计算服务可以提供负载均衡、云服务器、云数据库等产品,相比使用IDC机房服务器,可以更好地对每个模块进行按需购买、动态扩展。下面是在阿里云提供的产品基础上的部署架构图:

阿里云部署架构(English).png-65kB

整个商城系统包括下面几部分:

  1. 前端访问
    包括web浏览器、移动端H5页面、移动端App等提供给用户各个客户端。
  2. 计算资源
    负载均衡服务可以对多台商城应用服务器进行流量负载均衡。商城ECS服务可以根据业务需要动态调整服务器数量和计算能力。
  3. 静态文件资源
    web端和客户端的图片等静态文件资源直接访问OSS服务,实现动静分离,并且通过就近CDN节点加快访问速度。
  4. 数据存储资源
    数据存储包括Redis数据库提供缓存数据读写,提升访问性能。Mysql数据库提供数据存储和访问,并提供高可用数据备份。

2.2 系统架构

系统架构方案.png-72.2kB

整个AIY系统按照大功能模块上可以分为:

购物系统主要指消费者使用pc或者手机进行商品浏览、下单等。后台管理系统是指运营人员进行商品管理、活动管理、订单管理等。

2.3 前端系统的实现与优化

2.3 后台管理系统

后台管理系统主要实现商品管理、订单管理、活动管理、账号和权限管理、并且把数据对接到google form等功能。此系统主要由我们的运营人员使用,使用人数较少。因此没有高并发等要求。下面重点阐述购物系统实现方案。

3 购物系统架构

3.1 系统依赖框架

后台管理系统Server和购物系统Server均采用Go语言进行开发。并使用下面的一些框架:

3.2 使用JWT认证

后端系统和前端页面间,各个后端系统之间使用基于HTTPS协议和JSON WEB TOKEN(JWT)进行安全认证。
使用JWT的身份验证,比较适用于基于Restful API的前后端系统通信和后端各个微服务系统间的通信,相比OAuth认证方案,在保证安全性的同时,可以避免过多的性能浪费。

3.3 购物系统拆分

由于AIY商城要求在高并发情况下保证高可用的要求,购物系统首先需要按照模块进行子系统的拆分。这样做好处首先是其中一个系统即时不能正常访问,宕机等,也不会影响到其他系统。按照微服务拆分的康威定律,拆分成以下子系统:

3.4 预售系统

AIY商城上线之后先进行预售,再进行正式发售。预售是限定时间,并且限定商品库存量,并且预计在限定时间内会有大量用户访问,即需要保证服务支持高并发和高可用。

预售系统实现流程如下:

商城抢购系统.png-56.9kB

3.5 订单系统

在商城进行预售、抢购等活动期间,系统会有会有较大流量访问量,尤其是在系统下单环节,要保证高可用,响应时间短,避免用户长时间等待。系统在扣减库存直接在Redis中扣减,然后记录下扣减日志,通过Worker同步到库存数据库。

扣减库存.png-14.7kB

交易订单系统将订单存储到订单Redis和订单队列,订单队列基于NSQ,使用分布式架构。然后通过同步Worker同步到数据库订单表;用户支付订单后,订单状态机驱动订单Redis变更。此时,如果订单数据库中还没有订单,状态机需要重试。用户查看单个订单详情,可以直接从订单Redis中查到。

下订单流程.png-16.4kB

3.6 订单系统性能分析

基于消息队列方法来实现订单系统进行性能分析,在i5CPU、8G内存的笔记本电脑上,同时部署订单系统和redis服务器,可以支撑五千客户端并发请求,返回时间在500ms以内。即AIY商城系统的单台服务器可以支撑五千人同时下单。

3.7 订单存储

AIY商城的商品数量非常少,但订单量比较大之后需要进行分库分表,减少数据库压力。使用数值型主键的订单ID取模进行分库分表。在中间件层进行分库分表,对应用层透明。

数据库分库分表.png-21.9kB

目前数据库中间件有阿里开源的基于Java的Cobar,使用基于Go语言可以使用kingshard

3.8 商城其他API服务

商城其他API服务,主要使用Redis进行缓存,减少数据读取时间。

4 安全策略

4.1 安全解决方案架构

阿里云安全部署架构(English) (1).png-99kB

结合阿里云提供的安全服务,AIY商城采用了下面的安全方案:

安全方案 基本作用
DDOS高防IP 防止服务器遭受大量DDos攻击后导致服务不可用,提供应用层抗DDos攻击的能力
Web应用防火墙 对网站业务流量进行恶意特征识别及防护,讲正常、安全流量回源到服务器。提供Web应用攻击防护、缓解恶意CC攻击,解决防刷、防爬等业务安全风险,HTTPS优化
安骑士 主机安全服务,提供主机漏洞检测和修复,高危配置基线检查,黑客入侵检测
态势感知 收集企业原始日志和网络空间威胁情报,利用机器学习还原已发生的攻击,并预测未发生的攻击。提供基础威胁检测,SQL注入、XSS应用漏洞扫描
数据风控 数据风控,专业、实时对抗垃圾注册、刷库撞库、活动作弊等严重威胁互联网业务安全的风险,同时保证正常用户体验顺畅无影响。

方案主要说明:

  1. 使用DDoS高防IP防DDoS攻击及CC攻击,保障业务可用性,尤其在大促活动期间。
  2. 应用层使用WAF,主机层使用安骑士,加上基于大数据分析的态势感知,共同构建纵深的入侵防护体系, 具备防御和感知能力。
  3. 使用数据风控服务防止“羊毛党”、“黄牛党”恶意领用、刷单等欺诈行为,提高营销推广活动效果。

DDOS高仿IP、Web应用防火墙、数据风控、安骑士、态势感知等均基于阿里云提供的安全服务。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注