@yeahugo
2018-04-11T07:34:30.000000Z
字数 3012
阅读 1583
技术架构
AIY商城是一个专门售卖AIY开发套件的线上商城系统,提供商城前台商品展示、下单和后台商品和订单管理等功能。该系统技术方案要求架构满足高并发、高可用、数据安全。
AIY商城采用Go语言、Redis、Mysql数据库等进行开发,并且部署在阿里云平台上。
阿里云等云计算服务可以提供负载均衡、云服务器、云数据库等产品,相比使用IDC机房服务器,可以更好地对每个模块进行按需购买、动态扩展。下面是在阿里云提供的产品基础上的部署架构图:
整个商城系统包括下面几部分:
整个AIY系统按照大功能模块上可以分为:
购物系统主要指消费者使用pc或者手机进行商品浏览、下单等。后台管理系统是指运营人员进行商品管理、活动管理、订单管理等。
前端页面实现
消费者可以使用PC或者移动端来访问该商城页面。商城PC前端和移动端前端页面,是两套独立系统。这样可以更好对移动端进行设计和实现。
实现上这两套前端系统均使用vue.js进行开发。
前端页面的优化
前端页面优化也是系统非常重要的环节,可以对用户的体验产生较为重要的影响,优化方案有下面几方面:
后台管理系统主要实现商品管理、订单管理、活动管理、账号和权限管理、并且把数据对接到google form等功能。此系统主要由我们的运营人员使用,使用人数较少。因此没有高并发等要求。下面重点阐述购物系统实现方案。
后台管理系统Server和购物系统Server均采用Go语言进行开发。并使用下面的一些框架:
后端系统和前端页面间,各个后端系统之间使用基于HTTPS协议和JSON WEB TOKEN(JWT)进行安全认证。
使用JWT的身份验证,比较适用于基于Restful API的前后端系统通信和后端各个微服务系统间的通信,相比OAuth认证方案,在保证安全性的同时,可以避免过多的性能浪费。
由于AIY商城要求在高并发情况下保证高可用的要求,购物系统首先需要按照模块进行子系统的拆分。这样做好处首先是其中一个系统即时不能正常访问,宕机等,也不会影响到其他系统。按照微服务拆分的康威定律,拆分成以下子系统:
AIY商城上线之后先进行预售,再进行正式发售。预售是限定时间,并且限定商品库存量,并且预计在限定时间内会有大量用户访问,即需要保证服务支持高并发和高可用。
预售系统实现流程如下:
在商城进行预售、抢购等活动期间,系统会有会有较大流量访问量,尤其是在系统下单环节,要保证高可用,响应时间短,避免用户长时间等待。系统在扣减库存直接在Redis中扣减,然后记录下扣减日志,通过Worker同步到库存数据库。
交易订单系统将订单存储到订单Redis和订单队列,订单队列基于NSQ,使用分布式架构。然后通过同步Worker同步到数据库订单表;用户支付订单后,订单状态机驱动订单Redis变更。此时,如果订单数据库中还没有订单,状态机需要重试。用户查看单个订单详情,可以直接从订单Redis中查到。
基于消息队列方法来实现订单系统进行性能分析,在i5CPU、8G内存的笔记本电脑上,同时部署订单系统和redis服务器,可以支撑五千客户端并发请求,返回时间在500ms以内。即AIY商城系统的单台服务器可以支撑五千人同时下单。
AIY商城的商品数量非常少,但订单量比较大之后需要进行分库分表,减少数据库压力。使用数值型主键的订单ID取模进行分库分表。在中间件层进行分库分表,对应用层透明。
目前数据库中间件有阿里开源的基于Java的Cobar,使用基于Go语言可以使用kingshard。
商城其他API服务,主要使用Redis进行缓存,减少数据读取时间。
结合阿里云提供的安全服务,AIY商城采用了下面的安全方案:
安全方案 | 基本作用 |
---|---|
DDOS高防IP | 防止服务器遭受大量DDos攻击后导致服务不可用,提供应用层抗DDos攻击的能力 |
Web应用防火墙 | 对网站业务流量进行恶意特征识别及防护,讲正常、安全流量回源到服务器。提供Web应用攻击防护、缓解恶意CC攻击,解决防刷、防爬等业务安全风险,HTTPS优化 |
安骑士 | 主机安全服务,提供主机漏洞检测和修复,高危配置基线检查,黑客入侵检测 |
态势感知 | 收集企业原始日志和网络空间威胁情报,利用机器学习还原已发生的攻击,并预测未发生的攻击。提供基础威胁检测,SQL注入、XSS应用漏洞扫描 |
数据风控 | 数据风控,专业、实时对抗垃圾注册、刷库撞库、活动作弊等严重威胁互联网业务安全的风险,同时保证正常用户体验顺畅无影响。 |
方案主要说明:
DDOS高仿IP、Web应用防火墙、数据风控、安骑士、态势感知等均基于阿里云提供的安全服务。