你现在的位置:首页 > PHP网站建设知识库 > ZenCart > 正文

关于zencart海量数据高并发访问量的支持情况

mysql商品数据量百万级 并发访问量1K以上,这种情况下有朋友有优化经验,zencart能支持这样情况下的性能要求吗?常用的优化手段 服务器集群, mysql水平切分,memcached等技术有人在zencart上用过吗? 
我觉得这个问题需要分成两个问题去解决 
一 、海量数据 
1、就我测试的结果,Mysql在处理1百万级的数据库记录,如果只根据KEY查询是没有明显的性能问题的,避免太多的关联及非index字段的查询。如果数据太多也考虑分库分表去做了,不过,这样的代价也是很高的。 
2、商品数据太多可以考虑根据分类把商品分离到不同的应用DB里去, 同时使用搜索技术把不同DB的商品再聚合到页面做呈现。 
3、订单数据太多, 可以参考银行里的记帐方法,把订单分为流水订单 - 明细订单 - 历史订单, 历史订单大多是不需要每次都去查的,要查询订单或者生成统计报表也可以使用搜索技术. 
 
二、高并发 
1、代码层面的优化 
。参考Jack <<即将发布的版本 v1.4新功能>> 
。重构或者精简zencart现有的MVC模式实现 
。定义逻辑清晰的数据库执久层,尽可能的缓存、复用查询结果集,减少数据库查询次数。 
。根据需要修改数据库结构。如增加索引,添加字段,甚至增加表. 
2、系统层面的优化 
。mysql 
。apache 
。php 
。squid / memcache 
相关优化方案请参考相关应用的优化手册或者帮助文档 
3、构架层面的优化 
。动、静态资源分离 
商品的图片或者介绍等一些静态资源都可以分离到不同的服务器上去。 
。应用分离 
zencart定位为个人网店, 因此它的功能非常全面,有时甚至牺牲性能换取功能这就决定了,但是zencart系统本身是高度集成、高度耦合的。国外的ebay,国内的Taobao都 是做了应用分离的。比如可以把User Register / User Signin 、Checkout 、Products Categories都进行分离。不过需要解决各个应用之间Session共享与数据同步的问题。 
。虚拟服务与负载均衡。 
典型的有DNS round rabin, layer-4 switching 、layer-7 switching等一些技术方案,此类技术现在有很多硬件解决方案,软件解决方案网上资料也是比较多的。