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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 找运维老大(5年+)调优你的服务器参数(Nginx、PHP、Mysql.....)
  2. Mysql做成读写分离,并分别调优
  3. 程序逻辑按照用户所属企业或地区(华东区)为单位,必须对海量用户进行Mysql业务分表
  4. Mysql并发不强、链接数很宝贵,尽一切可能不要让用户直接和Mysql通信,每个页面尽可能的少执行SQL语句,尽量走缓存
  5. 系统搜索、筛选、过滤等耗费Mysql资源的业务功能,尽可能的转化为Sphinx搜索或MongoDB、Redis这种缓存服务
  6. 内存很贵,CPU很重要,尽可能的保证你每条代码都是性能最好的,尽量的使用最新版本的系统内置方法!(如更省内存的 yield )
  7. 避免恶意蜘蛛爬虫、恶意采集( Demo1 , Demo2 )对系统造成不必要的资源浪费,做好Robots( Demo1 , Demo2 , Demo3 )恶意蜘蛛爬虫爬取频率限制,或者限制每个用户访问频率以及恶意访问者加入黑名单封号系统,以便让更多的真实用户访问我们的站!
  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个平台做活,是很不容易的!且写且反思! 如果感兴趣,可以关注 , https://github.com/letwang/HookPHP 既是按照上述理念量身打造的一款平台型框架。

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

  1. Java生鲜电商平台-技术方案与文档下载

    Java生鲜电商平台-技术方案与文档下载 说明:任何一个好的项目,都应该有好的文档与设计方案,包括需求文档,概要设计,详细设计,测试用例,验收报告等等,类似下面这个图: 有以下几个管理域: 1. 开发 ...

  2. Java生鲜电商平台-缓存架构实战

    Java生鲜电商平台-缓存架构实战 说明:在Java生鲜电商中,缓存起到了非常重要的作用,目前整个项目中才用的是redis做分布式缓存. 缓存集群 缓存集群存在的问题 1.热key 缓存集群中的某个k ...

  3. Java生鲜电商平台-订单架构实战

    Java生鲜电商平台-订单架构实战 生鲜电商中订单中心是一个电商后台系统的枢纽,在这订单这一环节上需要读取多个模块的数据和信息进行加工处理,并流向下一环节:因此订单模块对一电商系统来说,重要性不言而喻 ...

  4. 电商平台 lnmp 架构之 mysql 高速缓存--redis

    电商平台 lnmp 架构之 mysql 高速缓存 --redis 1. redis的介绍 2. redis服务的安装 3. Redis常用命令 4. Redis异步复制 5. Redis高可用 6. ...

  5. 【图解版】银行电商平台技术解决方案

    1 产品技术方案 1.1 技术方案概述 1.1.1 系统功能架构   在银行电商平台中,包括各总分支行的管理人员.各家合作商户.会员.物流公司.支付平台等主要角色,通过电商平台进行信息流.资金流的交互 ...

  6. 电商平台-技术方案与文档下载(源码可下载)

    说明:任何一个好的项目,都应该有好的文档与设计方案,包括需求文档,概要设计,详细设计,测试用例,验收报告等等,类似下面这个图: 有以下几个管理域: 1. 开发域. 2. 管理域 3. 基线域 4. 产 ...

  7. 淘宝天猫、1688、京东、速卖通、亚马逊等各大电商平台API接口

    item_sku - 获取sku详细信息 cat_get - 获得淘宝分类详情 item_search_samestyle - 搜索同款 item_search_similar - 搜索相似的商品 i ...

  8. 微信电商小店开张:并非剑指淘宝 而是抄底天猫

    来源:虎嗅网作者:电商老兵斗牛士 微信剑指的绝然不是淘宝店,而是要抄天猫的底.现在的微信服务号运营主体主要是有工商注册的企业,可不是类似淘宝C店一样的小卖家. 原标题:微信电商,昨夜谁人失眠?昨天(5 ...

  9. 亚商投资顾问 早餐FM/0926 特斯拉跌4.59%,亚马逊跌3.01%

    01/亚商投资顾问早间导读 工信部:会同有关方面加强行业统筹规划 推动光伏产业高质量发展 中国央行:以市场驱动.企业自主选择为基础 稳慎推进人民币国际化 银保监会:房地产金融化泡沫化势头得到实质性扭转 ...

最新文章

  1. mysql sql语句编码_SQL语句实用例子 MySQL编码设置
  2. 第八周项目一-数组作数据成员(1)
  3. Android Studio 配置
  4. 福州大学软件工程1816 | W班 第7次作业成绩排名
  5. JAVA入门[22]—thymeleaf
  6. 图灵测试是不是已经Out了
  7. python输出子列表_python利用递归函数输出嵌套列表的每个元素
  8. poj 2226 Muddy Fields(合理建图+二分匹配)
  9. Mybatis源码研究5:数据源的实现
  10. ELK收集tomcat访问日志并存取mysql数据库案例
  11. python压缩视频文件_python压缩图片和视频
  12. 2020java开发面试题
  13. thinkPHP集成workman扩展
  14. 现实版“武大郎和潘金莲”的婚姻情感纠葛
  15. python期货量化交易实战_Python期货量化交易实战
  16. Oracle高级数据库复习
  17. 这样投简历,99%没面试机会!
  18. linux配置iscsi无账号密码,linux iscsi Initiator配置CHAP认证
  19. turtle绘制五角星
  20. 单个html网页挂载IIS(不放在已经发布的项目下)并通过内网穿透代理公网可访问

热门文章

  1. 烽火推系统源码,抖音矩阵系统源码, lucky。
  2. Java数值类型与补码关系讨论
  3. “三足鼎立”格局之下,同城实业能不能撑起90亿估值?
  4. ARFoundation系列讲解 - 37 AR看车四
  5. 计算机如何存储中文字符
  6. 对折纸张厚度超过珠峰
  7. 机器学习中信息增益的计算方法
  8. DeFi史上具备从0到1创新性的7个代币
  9. VSFTP介绍安装使用
  10. Cannot find setup engine instance