文档章节

电商平台技术架构 多用户商城 仿天猫 淘宝 亚马逊 当当 阿里巴巴 大数据模块 低成本运维 高效开发

letwang
 letwang
发布于 2015/06/15 12:29
字数 3390
阅读 2663
收藏 45
点赞 5
评论 3

电商平台多用户商城系统架构行业现状

浏览全球知名电商机构(天猫 淘宝 亚马逊 当当 阿里巴巴...),包括开源电商软件(Magento、OpenCart、Xcart、Zencart、Prestashop....),知名的就那几家或者几十家乃至几百家,为什么这么少的可怜?电商技术平台建设的难度究竟在哪里?

大多数单位都是慎重的选一款电商软件(如:Ecshop)来进行二次开发,但是就算这样,大多企业都停留在修BUG、填前任留下的坑、被所谓的代码规范给约束的死去活来...

但是只要提到如淘宝这种多用户商城系统(也许你会提到.NET、Java,那个成本,也许只有企业领导者才知道到底有多痛!),那少的更是可怜了...

电商平台多用户商城系统架构企业困境

中小企业电商想PK亚马逊、阿里巴巴、天猫、淘宝、京东、当当...先不考虑市场、营销、物流、策划、货源,单说说电商技术架构之路,难!难!难!

在中国这片土地上,有不少单位实践了电商平台技术架构之路,都想打造自己的电商平台!却大多失败了!

其中不乏各路大神各路专家各路前单位(国企公司、上市公司)牛逼哼哼者精神领袖意见领袖畅想领袖批判领袖预测领袖...

那么问题来了,为什么企业耗费了这么多的研发资金,招了华丽丽的明星研发队伍,就是很少有企业真正的打造出可用的企业满意的电商平台呢?

我们知道,企业拥有自主版权的多用户商城系统的电商平台是多么重要!

  1. 这是企业的固定技术资产!如虎添翼中的“翼”之一!
  2. 这是企业随时东山再起的保证之一!
  3. 这是企业领导者出去吹牛逼、拉投资的产品底气之一!

电商平台多用户商城系统架构博主介绍

 

博主是1个有8年研发经验的PHP工程师,话说有人理解PHP为“拍黄片”,所以非诚勿扰的美女都对PHP工程师灭灯了,幸好博主已经有家室了,妹子们,基友们,你们没机会了...

博主曾经做过一些年头的外贸电商公司技术平台主要架构设计、开发者、顾问...

博主曾经有幸经和国企公司技术大牛、上市公司大牛、行业专家(京东、淘宝)都进行过共同码代码的屌丝岁月...

电商平台多用户商城系统架构通用原则

本文着重以以下原则来打造一个尽可能“抠门“基础上的牛逼的牛逼型多用户商城电商平台!

  1. :承载的用户多
  2. :用户访问速度快
  3. :功能设计好扩展
  4. :运维省、开发省、硬件省

电商平台多用户商城系统架构原则一:

电商平台多用户商城系统架构之承载更多的用户

核心思想:资源是有限的,用户是无限的;

:每个用户浪费最少的服务器资源(不浪费更好)方可

  1. 找运维老大(5年+)调优你的服务器参数(Nginx、PHP、Mysql.....)
  2. Mysql做成读写分离,并分别调优
  3. 程序逻辑按照用户所属企业或地区(华东区)为单位,必须对海量用户进行Mysql业务分表
  4. Mysql并发不强、链接数很宝贵,尽一切可能不要让用户直接和Mysql通信,每个页面尽可能的少执行SQL语句,尽量走缓存
  5. 系统搜索、筛选、过滤等耗费Mysql资源的业务功能,尽可能的转化为Sphinx搜索或MongoDBRedis这种缓存服务
  6. 内存很贵,CPU很重要,尽可能的保证你每条代码都是性能最好的,尽量的使用最新版本的系统内置方法!(如更省内存的yield
  7. 避免恶意蜘蛛爬虫、恶意采集(Demo1Demo2)对系统造成不必要的资源浪费,做好Robots(Demo1Demo2Demo3)恶意蜘蛛爬虫爬取频率限制,或者限制每个用户访问频率以及恶意访问者加入黑名单封号系统,以便让更多的真实用户访问我们的站!
  8. 某些业务如果可以容忍更新延迟的话,建议首先在用户客户端先JS、Cookie等保存,最后隔10秒或者每10个步骤在一次性批量同步到服务器,这样可以减少对服务器资源的消耗!
  9. 业务冗余数据不建议分散的做在Mysql中,建议做在Redis、MongoDB中,统一管理操作,而且利于大数据统计报表分析! 
  10. 可以保存到用户客户端的数据,尽可能的保存到用户客户端(Cookie、localStorage、sessionStorage),不要什么都塞给服务器或者从服务器频繁读取...
  11. 如果平台有大文件下载服务,记得一定要使用X-Sendfile来下载文件给客户,节省服务器资源!

电商平台多用户商城系统架构原则二:

电商平台多用户商城系统架构之响应速度更加快

核心思想:减少用户等待服务的时间;

:资源更少(没有更好),更小,传输更快方可

  1. 更好的服务器、更多的CPU、更大的内存、更好的硬盘、更快的宽带、更好的域名DNS....
  2. 服务器安装好全系列最新版 Nginx+PHP(7系列)+Mysql+MongoDb+Redis+Memcached+Sphinx!
  3. 开发技术选择YAF(PHP的C语言框架)、YAR(PHP Soap RPC功能C语言级框架)、YAC(PHP C语言级的共享内存框架)、Yaconf(PHP C语言级的常住内存的用户自定义常量)、Taint(PHP C语言级的XSS过滤框架),尽可能的选择PHP扩展来实现你的业务!没事多搜搜pecl,多看看手册
  4. 静态资源(JS、CSS、小图标等)一定要放到CDN上,实在穷就用百度等免费的CDN尽可能多的分流静态文件
  5. 尽可能的减少用户请求的资源数目(如CSS、JS可以合并输出,小图标可以使用CSS图片精灵的方式减少请求个数)
  6. 服务器设置GZIP等尽可能高的压缩你的资源输出
  7. 巧用HTTP协议的状态码,配合实现用户浏览器端页面级缓存,不仅可以更快,而且省很多资源!
  8. 如果实在避免不了Sql,那么程序上保证每个Sql语句都必须走索引且是高效的,尽量使复合索引和覆盖索引!必须避免表锁!
  9. 业务尽量以读为主,尽量少的写操作,如果是日志捕捉、用户行为分析这种与核心业务关系不大的写操作,强烈推荐写到Redis、MongoDB!
  10. 一定使用InnoDB引擎(支持行锁),但是绝对不要使用InnoDB外键约束(产生锁的原因之一),不要使用Event、触发器(资源杀手)!尽可能少的使用存储过程(要注意考虑并发)、视图(大数据测试下发现偶尔不走索引)!
  11. 放弃PHP默认的低效存储Session机制,用户Session存储更改为存储到Redis,而且更有利于Session综合管理(跨域访问)
  12. 一定要使用PJAX技术,不但有AJAX的优点,还利于SEO,利于跨设备,跨平台,请求资源更小,更快!
  13. 也许你可以试试MySQL开源存储引擎TokuDB了,基本可以代替INNODB,而且存储数据更省空间,插入更快!
  14. 如果你既觉得MYSQL的LIKE ‘%%’慢,又觉得FULLTEXT对中文支持不友好,还觉得专业搜索引擎Sphinx等技术门槛高,那么可以试试Mysql插件Mysqlcft试试,完美支持FULLTEXT中文搜索,功能和LIKE‘%%’一样,速度提升数十倍!

电商平台多用户商城系统架构原则三:

电商平台多用户商城系统架构之功能设计好扩展

核心思想:功能更全,更强大,开发更方便,交接更容易;

:设计灵活、简单可依赖的系统架构

  1. 系统一定要基于Module、Hook机制的(如灵活的控制header),每个工程师只需专注自己的Module和灵活的使用系统资源,功能开发就像搭积木一样快,给出一定的规则后,模块还可以外包出去...
  2. 程序类扩展一定要使用工厂模式机制开发(虽然开发过程有点慢,但是使用效率高),随时可以以业务功能点为单位废弃、反转、升级、排序、扩展、更改功能实现方式等诸多好处
  3. 每个PHP文件必须使用命名空间特性,避免多人协作时候代码冲突
  4. 每个action下可以系统默认以HTTP提交协议来执行默认方法!利用反射简单高效(POST请求就执行actionPost,GET请求就执行actionGet...最后在每个具体action里进行switch判断执行)
  5. 研发出自己的Cookie分析系统,又利于业务增长等等,业务逻辑参照淘宝、天猫、百度对我们无处不在的用户喜好分析就知道了
  6. 开发中尽可能的选择开源软件作为开发支撑,首选PHP扩展PECL,其次是搜大神写的、支持率高的PHP文件写的类库,最后才是自己手动发明写类库!(如,博主的原创PHP类库
  7. 开发中尽可能的使用最新版本的特性,尽可能的保证项目可以安全无痛部署到最新PHP版本!因为你可以免费的最快的拥有最新版的好处!(当然也有少许坏处 哈)
  8. API尽量使用RESTful架构,返回结果尽量全是JSON格式(JSON利于和JS通信,如果追求性能,可以使用igbinary

电商平台多用户商城系统架构原则四:

电商平台多用户商城系统架构成本节省之运维节省

核心思想:让运维更简单,更高效,运维成本更低;

:减少业务复杂度

  1. 多做备份,选择有一键备份功能的服务器
  2. 慎重看待集群,鸡蛋放在1个篮子(推荐:利润不大的时候,不要分开部署) VS 鸡蛋放在多个篮子里(主流:参考携程事件)...

电商平台多用户商城系统架构成本节省之开发节省

核心思想:用最低的技术门槛、最短的开发时间,开发最牛的业务平台;

:系统架构模块化,互不干扰,手册人手一份

  1. 做好技术开发共享文档
  2. 平台基础架构好后,只需稍等PHP的小白也可以按照Module来搭积木,因为每个模块既是独立,也是有Hook联系的

电商平台多用户商城系统架构成本节省之硬件节省

核心思想:在最经济的硬件上,尽可能的榨干软件性能;

:程序设计要规划充分、随时一键部署扩充硬件

  1. 尽可能的榨干软件(Nginx+PHP(7系列)+Mysql+MongoDb+Redis+Memcached+Sphinx)性能,在利润产生前乃至用户量未破百万(保守估算)的时候,完全可以抗住一阵子了!

问题来了,如果电商平台访问量到达一定数据规模且有利润了,上述仍然解决不了我的访问量大的问题怎么办?

说半天也没有看到博主提到 反向代理 LVS 主从 热备 F5 DDOS 监控 容灾 负载均衡 分布式啥的....

OK,一句话:4个选择

  • 自己是无敌超能大神,时间多,技术好,精力旺盛...自己全部搞定!
  • 招运维团队花上不小的代价+不小的时间来给你专业定制,架设一套即可!
  • 也许你可以用到阿里云全套服务产品的级别了!背后是经过数次苛刻实践的淘宝、天猫、阿里巴巴 双11 双12 国庆 过年等真正高手团队打造的产品!
  • 可以选择亚马逊全套服务产品,和阿里云有什么区别呢?老外的技术,你懂的!老外的语言,你也懂的!

哈哈,程序设计时候一定要记得用工厂模式哦,而且很多业务接口、参数灵活处理可配置的,到时候好用云服务来代替本地服务器低效的运算法则!

真正的把1个平台做活,是很不容易的!且写且反思!

© 著作权归作者所有

共有 人打赏支持
letwang
粉丝 140
博文 67
码字总数 76298
作品 0
南京
技术主管
加载中

评论(3)

柚子ban
柚子ban
很赞
苏生不惑
苏生不惑
effine
effine
分析得不错,受用.....
2017最强书单|博文视点那些被万人品鉴的畅销书,你看过几本?

2017 年就要接近尾声了 这一年里我们带来了各种领域的新书 AI、架构、运维、开发……数不胜数 今天小编拉出其中几个领域的佼佼者 一起回顾下,2017年 这几本万人品鉴的博文视点畅销书 你看过...

博文视点
01/02
0
0
【干货合集】1682亿背后的那些技术——解读双11背后的“基础设施”

解读 1、阿里云护航双十一,抵御15亿次攻击,自动风控和防御技术落地 阿里云安全团队:双十一扛下15亿次攻击,智能风控和自动防御技术协同作战 阿里云安全成功护航2017天猫双十一,1682亿元背...

阿里云云栖社区
2017/12/21
0
0
电商搜索引擎的架构设计和性能优化

「 OneAPM 技术公开课」由应用性能管理第一品牌 OneAPM 发起,内容面向 IT 开发和运维人员。云集技术牛人、知名架构师、实践专家共同探讨技术热点。本文系「OneAPM 技术公开课」第一期演讲嘉...

OneAPM蓝海讯通
2015/10/30
210
0
大V云集!参加首届阿里巴巴在线技术峰会的八大理由

由阿里巴巴集团、阿里巴巴技术协会(ATA)和阿里云云栖社区联合举办的首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit)将于7月19日-21日20:00-21:30在线举办。 这次峰会阿里集...

阿里云官方博客
2016/07/06
1K
2
这10家公司,瓜分了中国10万亿线下零售额

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴...

天善智能
07/12
0
0
承担双11万亿流量,阿里核心技术揭秘:12位大咖告诉你!

技术成就辉煌,今年的双11毫无悬念地再次刷新了全球记录——11秒交易额破亿,28秒破10亿,最终的交易额稳稳定格在了1682亿,不仅创造了极高的交易峰值和支付峰值,同时刷爆纪录的还有4200万次...

云栖社区
2017/11/30
0
0
承担双11万亿流量,阿里核心技术揭秘:12位大咖告诉你!

技术成就辉煌,今年的双11毫无悬念地再次刷新了全球记录——11秒交易额破亿,28秒破10亿,最终的交易额稳稳定格在了1682亿,不仅创造了极高的交易峰值和支付峰值,同时刷爆纪录的还有4200万次...

阿里云云栖社区
2017/11/30
0
0
阿里中间件招聘

我们有世界上最牛的交易场景,但还缺少最牛的你! 招聘岗位: 资深Java开发工程师、技术专家 岗位描述: 中间件技术部是阿里巴巴集团生态系统的技术基石,为淘宝、天猫、聚划算、1688、B2B、A...

robin-yao
2016/05/31
500
0
解密阿里数字中台:数字化转型2.0,中国造

2017年底,IDC发布了2018年全球IT产业预测,主要结论就是以云、大数据、移动和社交等为代表第三平台所推动的数字化转型将进入第二阶段:从以公司为主、孤岛型创新的实验性阶段,走向基于平台...

云科技时代
05/16
0
0
阿里招聘JAVA工程师

我不是HR,只是一名做分布式服务的研发人员,最近我们部门正在招聘一批JAVA工程师。希望有兴趣的朋友可以来试试,一起共事。以下是是要求: 失效时间: 长期招聘 工作地点: 杭州市,北京市 工作...

ifree613
2016/09/16
323
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
10
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部