APP开发之如何实现3000人的系统并发方法​

时间: 2020年01月09日 丨来自:



豆米科技在前段时间接到了甲方的一项需求,最近会做一个大活动,需要一个稳定的,至少3000人同时进入且不会影响用户体验的系统,下面来看一看我们的技术大大们是怎么做出来的吧

需求描述

Ø 系统并发3000人同时进入,人多时采用排队机制分流进入;

Ø 商城物品生成二维码可通过扫码支付(3-5款产品进行特价抢购、订单支付),支付方式通过微信支付,钱支付到甲方公司账户中;

Ø 订单环节通过在商城中维护一款商品进行直播时客户扫码支付,商品价格(订单金额2000元),采用先支付、再完善客户基本信息,同时定位客户位置;

Ø 支付订单时客户可选择产品类型如:厨柜、衣柜,复选框同时勾选支付价格为4000元;

Ø 活动结束,支付后台可导出
抢购客户名单(序号、支付时间、购买产品、支付金额、客户姓名、电话、收货地址、省、市、区/县、定位地址 );
订单客户名单(序号、支付时间、购买产品类型、支付金额、客户姓名、电话、收货地址、省、市、区/县、定位地址 );

功能实现

商品抢购流程

1用户通过主播的引导,扫描商品二维码进入商品抢购页面,进入商品抢购页面后,点击立即购买,直接调用微信支付进行支付,支付的时候可能会出现以下情况:

a支付成功:跳转到支付成功页面,并引导用户完善用户信息;

b支付失败:弹窗提示“支付失败,请稍后重试”,点击返回商品详情页面;

2完善用户信息页面,需要填写客户姓名、电话、省、市、区/县及详细地址;

3填写信息后,提示活动参与成功,发送小程序通知给用户告知购买信息;

4活动结束后,页面的立即购买变成灰色,不可点击;

商品二维码生成

1.预先从B2B商城选取3-5款商品,商品信息(包括:商品主图一张、商品标题、商品销售价、商品原价、限购数量)直接导入到数据库中,不预留后台维护商品数据的功能;

2.其中限购数量只做展示,实际购买不作为限制条件;

3.制作页面,将每个商品的详情页面生成二维码;  

在线预定

在线预定流程

1用户通过主播的引导,扫描预定二维码进入在线预定页面,选择需要预定的产品,每个产品各需要支付2000元,如果选择两个产品则需要支付4000元;

2选择产品后,点击去支付,直接调用微信支付进行支付,支付的时候可能会出现以下情况:

a支付成功:跳转到支付成功页面,并引导用户完善用户信息;

b支付失败:弹窗提示“支付失败,请稍后重试”,点击返回在线预订页面;

3完善用户信息页面,需要填写客户姓名、电话、省、市、区/县及详细地址;

4填写信息后,提示活动参与成功,等待抽奖,发送小程序通知给用户告知购买信息;

5活动结束后,页面的立即购买变成灰色,不可点击;

预定码生成

1.预定码页面中的厨柜和衣柜的价格为固定价格,页面内容不需要后台维护,直接可以下单,根据页面选择的产品数量决定需要支付的金额;

2.制作页面,将每个商品的详情页面生成二维码;

商品管理

1.后台支持查看抢购商品信息;不可以编辑和筛选;

订单管理

1.后台支持查看订单信息,包括:订单编号、订单类型(商品抢购/在线预定)、订单状态、客户姓名、电话、地址(省市区+详细地址)、购买的产品名称、支付金额、支付编号、支付时间;

2.支持按照订单类型、订单状态、客户姓名、电话进行查询;

3.支持导出列表数据到excel

技术实现 

安徽APP开发技术实现

技术架构 

1、 商品信息、订单信息都采用页面静态化技术实现;

2、 部门商品信息、产品类型、区域信息采用数据缓存技术来实现,减轻数据库的压力;

3、 扫码查询商品信息和订单支付生产订单记录信息采用读写分离方式操作数据库;

4、 商品信息涉及到的图片,可以通过分布式文件系统来实现,保证高并发性;

订购流程

安徽APP开发订购流程

1、 商品详情页面信息静态化、缓存处理,不从数据库拉去数据,减轻数据库压力;

2、 购买商品开始支付,为保证价格安全,需要根据订单号码到后台查询商品价格,商品价格等信息保存到redis缓存中;

3、 调用微信支付接口完成支付后,保存支付记录到缓存和队列中;

4、 完善客户信息后,也把用户的信息保存到缓存和队列中;

5、 定时对Redis缓存的数据做持久化操作;

6、 队列的数据,按队列的机制,执行写库操作;

物理部署架构 

安徽APP开发物理部署架构

1、 通过阿里云SLB作为对外入口公网地址,分别负载到5ECS服务器的80端口上;

2、 每台ECS云服务通过Nginx80端口上作为代理转发服务,分别转发到对应的秒杀应用节点服务上(tomcat 节点服务);

3、 每台ECS云服务器上都需要部署一套Redis缓存服务和一套RabbitMQ队列服务,以供秒杀应用服务访问使用;

4、 数据库采用RDS和自建MySQL数据库实例搭配使用,并结合DTS数据库传输服务,保证RDS和自建MySQL数据库实例的数据一致性;

5、 自建MySQL数据库服务提供写操作,阿里云RDS数据库实例提供查询操作,以实现数据库的读写分离功能;

6、 数据库实例设置网络访问限制,只允许固定IP地址进行访问,保证数据库的安全性;

7、 后台和抽奖服务共用U客的会员商城后台系统,采用双节点部署,防止单点故障问题,通过nginx进行负载操作;

活动启用CDN

调整方法

调整U客系统在阿里云启用CDN加速功能,可以和知学云的CDN服务进行共享。在阿里云CDN控制台,添加针对域名:u.zhibang.comCDN加速操作。

调整原因

CDN可以对访问的资源进行缓存,加速访问速度;

CDN可以提供更加安全的HTTPS协议访问,保证数据的安全;

目前U客网络传输以Web Server为中心的数据传输模式,集中式的访问,会影响访问速度;

 安徽APP开发数据库优化

U客数据库优化

调整方法

在阿里云ECS云服务上自建的MySQL数据库上增加秒杀数据库实例;

开通DTS数据同步服务,保证自建MySQL数据库服务和阿里云RDS数据库实例之间数据的实时同步功能;

开通阿里云DTS数据同步服务,保证阿里云RDS服务和自建MySQL数据库服务进行数据同步,保证数据的一致性;

  安徽APP开发应用服务优化调整

应用服务优化调整

调整方法

增加5ECS阿里云服务,每台服务器需要部署2tomcat节点服务;

每台服务器上部署一个Redis缓存节点服务;

每台服务器上部署一个RabbitMQ队列服务;

具体的步骤已经给大家介绍的很清楚啦,如有不懂的可以和我们联系,大家互相讨论学习进步。

豆米科技专注做软件技术开发,APP小程序开发,网页端开发等,经验丰富,案例众多,支持实地考察,安徽合肥APP订制详情可以咨询豆米科技。

合肥APP开发 | 合肥软件开发 | 合肥小程序开发 | 合肥微信开发 | 合肥网络公司

本文版权所有豆米科技,转载请注明出处~