如何开发及维护一个可运营性很高的电商系统
1、 一定要逐步考虑安排分库分表
(1) 用户表、商品表、订单表等基本表必须要考虑分库分表,要不未来随着量大很容易出现异常。
(2) 首页、列表页等聚合页面,通过数据冗余,在分库分表后多写一份,以达到查询时直接使用索引,2秒内返回结果的目的
电商99%以上的量都是读,只要通过分库分表和多写些冗余数据的方式就可以提升性能,解决掉目前电商系统的根本问题
2、 技术语言
前端PHP,后端JAVA这样搭配着比较好。
如果已经全部是PHP或者JAVA了,也就别再换了,性价比不高
直接采用linux系统就好。初创企业,用云服务即可。
3、 日志流水的添加
所有的写操作(增、删、改)都要记录完善的日志,且记录下来:此次操作是否成功,以及耗时多少毫秒,如果不成功,还要记录当前所有环境变量,如果是数据库操作,最好把sql语句都记录下来。读操作如果量大,可以考虑把后台返回结果超过2秒的读请求记录,监控这块的量,超过2秒还没返回,用户多半就跑了
这个非常有必要,一个“可运营”、“可维护”的电商系统差别就差在这里。
4、 必须要做风控
日志流水的作用就出来了。通过读取日志流水,生成几个必备的监控
(1) 每隔10分钟,监控异常的:注册、登陆、下单、支付以及异常的金额等,让风险控制在10分钟内。
(2) 按天生成研发报表。
**接口 |
昨日执行次数 |
成功率 |
失败率 |
0-500毫秒 |
500毫秒-1秒 |
1-2秒 |
2秒以上 |
(3) 每天生成产品运营报表
多少人登陆 |
多少人下单 |
多少人支付 |
多少人付款 |
登陆失败多少人 |
下单失败多少人 |
取消订单多少人 |
等等明细数据。产品运营每天检测这些数据
5、 初步的架构
(1) 接入层,别考虑apache,直接升级到nginx
(2) 逻辑层用php,java都行
前台最好是ajax直接请求逻辑层jason数据,千万别用基础的框架打包一个html直接返回给前台。系统会出现白屏然后瞬间有内容了,前端性能优化可以参考:雅虎前端优化规则 (百度一下就行)
(3) cache用redis最好(数据结构丰富),memcache也行(session等可以放到memcache里)
cache的更新采用key-value,后台一旦修改,实时更新。千万别用多少分钟后让key全部失效,全部更新,那样体验太烂,经常会出现数据不同步。
(4) 数据库mysql直接用innodb就行。分库分表后sql语句就不会出现嵌套查询、关联查询(这个是系统慢的最根源问题)
6、电商系统必须要注意的2个技术问题
(1)、同一个请求被发送了多次
可能出现的地方:(1)和别人接口对接,别人同一份数据发送了多次
(2)用户在“提交”按钮里点击了多次
(3) 其他可能的一些恶意调用,尤其是涉及支付环节的,危险性非常大
解决办法:(1) 在网页端,用户点击“提交”后,将按钮disable掉
(2) 对于收到的数据插入到数据库或者其他一些地方,做好唯一键控制
把用户提交的内容+精确到秒的时间合并成一个字符串,然后md5一次,插入到数据库里作为唯一键控制。
(2)、同一秒内有多次请求
这个就是并发控制,涉及到抽奖等等需要控制到数量的地方,控制不好,会出现抽奖抽多了,卖东西卖超了等情况
出现的原因也很清晰,同一秒内收到多个请求,分布式的,可能不同的请求会分布到不同的机器或者程序上去执行,都去读取一下计数器(记录卖的数量),比如:1,每个请求都各自执行读取操作,发现都是1,没有超出1的限制,然后都来修改计数器为0,然后各自都去发货或者发送奖品,结果造成了卖超。
解决办法:
利用数据库或者其他有并发控制的程序来做一个锁的逻辑
利用数据库的话,有一个小技巧提供给大家
伪代码如下:
[php] view plaincopy
1. //字段A里存储的是计数器数字
2. select A from 表B;
3. $a = A;
4. if ( $a <= N && $a > 0)
5. {
6. update A=A-1 where A<=N and A >= 0;
7. //如果执行成功,则可以领取奖品
8. //这样可以控制并发时只卖掉N个奖品
9. }
电商项目的运营可以参考之前写的这篇文章:http://blog.csdn.net/eroswang/article/details/8185676
如何开发及维护一个可运营性很高的电商系统相关推荐
- 五款开发Java电商系统的工具
Java电商系统由于其稳定性和后台处理数据效率高的优势而备受运营者欢迎,Java电商系统还因为库的丰富性以及开发的便利性收受到开发者的青睐,今天这里介绍5款java网店系统的开发工具. 1.即开即用的 ...
- 社区拼团小程序开发运营,社区拼团电商小程序系统开发解决方案
在新零售的风口上,全国各地社区团购如雨后春笋般出现! 根据QuestMobile数据显示,2018年下半年,"社区团购"悄然井喷,融资额高达40亿. 在众多资本涌入的同时,各大创业 ...
- 电商 php 颜色数据怎么敲?_来客说电商|电商系统开发注意事项
来客B2B2C多用户电商系统打造支持自营+招商入驻经营模式的电商平台(类似京东.天猫的经营模式),创新模块化设计整合运营商,供货商,批发商,入驻商,分销商,门店于一体,各个模块可自由拆分组合,可以让商 ...
- 国内电商系统为什么要以ThinkPHP为核心开发
导读:目前我们看到国内很多企业的电商系统以thinkphp为核心来开发,尤其是面向API开发.支持PHP7的thinkphp5.1发布以来,国内中小企业更是对thinkphp更加推崇,大家为什么要这样 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务...
我个人认为Actor应该是Dapr里比较重头的部分也是Dapr一直在讲的所谓"stateful applications"真正具体的一个实现(个人认为),上一章讲到有状态服务可能很 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理...
状态管理和上一章的订阅发布都算是Dapr相较于其他服务网格框架来讲提供的比较特异性的内容,今天我们来讲讲状态管理. 目录: 一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布...
之前的章节我们介绍了如何通过dapr发起一个服务调用,相信看过前几章的小伙伴已经对dapr有一个基本的了解了,今天我们来聊一聊dapr的另外一个功能--订阅发布 目录: 一.通过Dapr实现一个简单的 ...
- PHP开发B2C商城 微信小程序商城系统源码+数据库,轻量级前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP
项目介绍 一款轻量级.高性能.前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP,前后端源码完全开源,看见及所得,完美支持二次开发,可学习可商用,让您快速搭建个性化独立商城. 完整代 ...
- 竞拍秒购电商系统开发需求和功能架构分析
以下是竞拍秒购电商系统开发相关的功能模块和解析.市面上类似竞拍电商平台有这些品牌.例如:盒格速M,太爱速M,众城优选,贝源拍,美里生活,恩家拾惠都属于这些类型. 竞拍秒购电商系统的功能有这些: 会员系 ...
最新文章
- 台湾印象之三:吃与喝
- 《程序员》杂志2011年第5期.pdf 下载链接 首发。
- 基于ASP.NET Core api 的服务器事件发送
- 关于win32程序如何共享数据
- GGally与pairs相关关系图_史上最全(一)
- VM虚拟机安装黑群晖教程
- 机器学习算法应用场景实例六十则
- 基于二代身份证的人脸对比系统
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java软件学院门户网站u09k9
- python跳出循环的方法_Python 跳出嵌套循环的5种方法
- 数据结构与算法-普利姆算法(Prim) | 尚硅谷韩顺平
- 淘宝、天猫、京东主图及详情页尺寸
- 个性化lightswitch登录屏幕(附源码)
- 云存储架构的技术特点与三个发展方向
- 【Flask学习】1.2Flask的工作方式
- 深度学习图像处理目标检测图像分割计算机视觉 07--图像检索
- 关于HTML5中HTMLMediaElement遇到的一些问题(1)
- (下篇)中国金融体系主要指标大全
- Excel操作类-CSpreadSheet and BasicExcel
- malloc: *** error for object 0x1740a8340: pointer being freed was not allocated
热门文章
- Fresco前传(1):一句话搞定图片显示(同时还可以满足各种小需求哦)
- Python基础语法【列表】
- SI战队人物专访-罗俊宇
- 登录域之后访问局域网网站就不用输入用户名和密码
- 苹果ios上架审核被拒驳回之4.3design
- 本地跑项目正常,部署至云服务器上就出现中文验证码 显示小方块儿;参考文章“Centos7 安装字体库中文字体”才得以解决问题
- 超全的auto.js基础操作,目前是autoX.js的控制方式。2023年7月9日更新!(第2/4章)
- 树莓派linux读卡器,在树莓派上使用 PN532 NFC读卡器[0]
- OpenLayers中的球面墨卡托投影
- Python分布爬虫——爬虫前奏和网络请求