转自:http://open.taobao.com/doc/detail.htm?id=1011
(本方案由开发者roynal提供)
做一个淘宝客网站所需要的API,TOP几乎没有任何权限限制,唯一困扰各位淘客的应该就是流量了。以下详细讲解了四个案例,循序渐进,最终提供一个给各位淘客参考的网站架构,来解决这个流量超限的问题。
本文仅针对淘宝客网站初学者参考,适合对淘宝客网站开发有一定了解的人。
案例一:无缓存实时架构
这是一个最简单的模型。用户在访问网站的时候,程序接受用户访问请求后直接通过API获取数据,再显示在网页上。
优点:数据的实时获取
缺点:
1.网站页面加载的速度慢
2.网站访问量大的时候造成API次数超过限制,导致网站挂掉
3.淘宝API服务器发生故障或维护,导致网站挂掉
案例二:文件缓存
这个案例中以文件的形式作为缓存,通过API取到数据序列化后并将序列化之后的数据存入文件中,一般以json的方式存储,也有的php程序中采用数组来存储。
优点:淘宝API服务器发生故障或维护时,保证了网站的正常使用
缺点:
1.页面显示速度慢,主要是在用户访问页面的时候触发API请求的
2.网站访问量大的时候造成API次数超过限制,导致网站挂掉
案例三:使用memcached作为缓存
这个方案中加入了缓存判断,程序首先从memcached取缓存中的数据,如果数据失效或者过期的话,即没有命中,那么程序就通过API去请求数据,取到数据后更新缓存,同时返回数据。如果数据存在且在有效期内的话,那么将直接返回缓存中的数据,这比用文件缓存速度快得多。硬盘快不过内存就是这个道理。
优点:页面显示速度快,在API服务器正常的时候还能自动更新缓存数据
缺点:
1. 缓存命中率的提高有难度,有过mm集群开发经验的同学应该感受到了
2. 网站访问量大的时候造成API次数超过限制网站挂掉
3. 服务器重启后缓存数据全部丢失(单机的情况下)
案例四:缓存+持久层结合架构
在案例三的基础上引入一个持久存储层MySQL,这样子可以避免重启,淘宝API服务器异常的情况。
优点:有持久层存储,数据不丢失。服务器重启,淘宝API服务器维护等各种伤不起都是浮云。
缺点:
1. 用不多久,你会看着数据库中那高达几十GB的表而疯掉
2. 网站访问量大的时候造成API次数超过限制,导致网站挂掉
3. 数据迅速递增,查询相当缓慢
综合上面几个典型的案例,我们不难看出淘宝客网站在架构方面或多或少存在的问题:
1.数据实时性问题
2.读取数据的速度问题(网站页面显示速度)
3.缓存失效问题
4.API次数超过限制问题
在以上4个问题中,尤其以API次数超过限制问题为主,如何解决呢?看下图架构:
该架构中,引入开源nosql产品 redis。在数据每秒都发生变化的时候,关系性数据库mysql 等扛不住递增的海量新数据,而redis等可以,为什么? Key! 大多的时候我们不用缓存淘宝的所有数据,一个好的key设计比什么都强。
在大多数应用中可以使用提交的参数md5的值为key。
获取key的方法详解:
如调用taobao.user.get接口,
所有入参有method=taobao.user.get,session=xxx,timestamp=xxxx,format=json,app_key=123456,v=2.0,sign=ERJLJGDSFSDFSD,sign_method=md5,fields=nick,sex,nick=淘宝帐号。
由于timestamp,sign这两个参数几乎每时每刻都在变化,而session每次授权都在变化,所以先排除session,timestamp,sign这三个参数。再按照首字母升级排列:
app_key=12345
fields=nick,sex
format=json
method=taobao.user.get
nick=淘宝账号
sign_method=md5
v=2.0
拼接字符串为:app_key12345fieldsnick,sexformatjsonmethodtaobao.user.getnick淘宝账号sign_methodmd5v2.0
key=md5(app_key12345fieldsnick,sexformatjsonmethodtaobao.user.getnick淘宝账号sign_methodmd5v2.0)
可以使用这样的key为32位。新的数据只能刷新缓存值,增加的缓存能有多少。
taobao.taobaoke.items.get你能取多少页?按照不同的排序有多少?
具体的实现思路见上面流程图。其中网关实际上就是自己搭建一个读数据的接口,所有数据都从这里单点读取,由它来
分发。网关的数据来源有:memcached缓存, Redis数据库。 在memcached缓存数据失效或者没有命中的时候通过API 取数
据,这里的API不是直接去淘宝取数据,引入了自己设定的每分钟频率,比如100次/分钟,超过的时候直接去redis 取
数据返回,当然这里的redis最好不要设置比较长的refresh time,一般5~10分钟就可以。
淘宝客网站的架构中缓存是非常重要的一个环节,控制不好就会带来各种困扰。关键点是在部署缓存和缓存key的设计
上。
优点:自己搭建数据来源网关, 内存缓存与永久存储层的合理搭配。
需要了解的知识:
1. Memcache合理部署
2. redis 的基本功能及安装、维护。
建议:这里的memcached 部署一个缓存集群,在单点失效的情况下,数据不丢失,新机器恢复的时候自动
从backup机器里恢复缓存。 Redis部署两台,一主一从。
相关推荐
偶然间进了大淘客的开发行列,觉的还不错,产品不用自己管理,只要做好自己的推广就好,但...所以当时就萌生了通过大淘客给的API开发自己的CMS,通过调用API来实现自己的网站自己做主的想法! 所以微淘客便就此诞生了!
电商淘客网站源码,非常珍贵的源码版本,已经很多淘客站点应用。
淘客网站认证 对网站使用权的获取,认证网站
新淘客,默认有200万关键字,安装就可以使用
php+mysql带后台本地保存数据,开心溜购物网站源码演示:http://www.kaixinliu.com
淘宝客淘客网站源码
大淘客二次开发源码,可以使用收费的插件。包括9.9,小便说那些插件 查优惠券
爱淘客网站源码授权版(淘宝专业导购网站)
淘客PHP网站
淘客程序,淘客源码下载!程序非常稳定,请放心用
全系列全自动调用阿里妈妈API显示商品,多个页面。
淘客推广项目案例
最新淘客推广系统_net_api网站系统 最新淘客推广系统_net_api网站系统 最新淘客推广系统_net_api网站系统
淘客家园采集精灵是一款智能采集阿里妈妈后台的商品,并且可以转换商品为你的推广链接的工具.他集成了一键分享到你的空间.是淘客推广必备工具之一!特别适合新手使用. 软件教程参考:...
总所周知转化率最高的就是店铺导站,现在想菜鸟们推荐一个有后台管理的ASP淘宝皇冠店铺导航程序,淘宝之家最新程序修改版。这个程序可以添加店铺,商品,文章,广告,后台管理方便,后台一键修改全站PID。
大淘客cms 电脑版导航栏里增加导航栏目
大淘客vip版本,可以自动采集,上传方便,二次开发。
淘宝客TOPAPI 程序 淘客TOP源码 淘客TOP 网站
淘客网站程序/简单程序,首页很好看,一个淘客程序,导航程序