注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

ITier  

2013-01-17 16:58:56|  分类: 阿里巴巴开源代码 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ITier 

ITier是一个采用Node.js开发的高性能数据整合引擎,为淘宝数据产品提供实时的数据查询服务,日均请求量超过5千万,平均响应时间在50ms以内。

ITier对后端各个异构的数据源进行高度抽象,对开发者暴露统一的SQL语句接口,屏蔽了异构数据源的接口细节,并可以在它们之间进行通用的JOIN、UNION、排序、去重和表达式求值等整合运算。

http://code.taobao.org/p/itier/src/


ITier漫谈

貌似洋气的ITier取了一个很土的名字——Intermediate Tier,翻译成中文就是“中间层”。但也正是这个朴实无华的名字不偏不倚地诠释了它的一切:暗藏在华丽的产品之下,屏蔽众多底层服务的差异,降低产品开发的成本。

ITier是伴随着数据魔方而诞生的。产品的一个页面,甚至一个图表里,需要用来来自多个不同接口的数据。开发者面临这些问题需要解决:

  1. 这些接口的协议还不太一样;
  2. 要自己做接口容灾;
  3. 各个接口取到的数据需要进行整合。

下图“当前宝贝数”来自主站搜索引擎;“直通车”则来自广告API;其他数据来自离线计算产生的结果,存储在myfox中;它们之间通过“关键词”进行匹配整合。

?

ITier - 和申 - 和申的个人主页

 

实际上,早在数据魔方诞生之初,2010年,我们已经有一个采用PHP编写的叫glider的产品在承担上边这些责任。只是glider里封装了太多的业务模型,导致在产品开发过程中,它变成了需要不断升级的东西,实际上已经失去了降低开发成本的优势。

2011年底,我们决定开发一个采用标准SQL作为接口的中间层来替代glider。上边图表中的功能用SQL语句表达出来就是:

1SELECT SUM(a.search_num), ..., b.auction_num,c.p4p_price
2FROM myfox.table1 AS a
3INNER JOIN taobao.search AS ON a.query = b.query
4INNER JOIN taobao.p4papi AS ON a.query = c.query
5WHERE a.thedate >= ? AND a.thedate <= ? AND a.query LIKE ?
6GROUP BY a.query
7ORDER BY SUM(a.query) DESC LIMIT 500

实际上,除了细节上可能有误差,这个功能现在确实是用这条SQL语句实现的。

在语言选择上,经历了大半年的折腾,我们尝到了Node.js原生的异步IO模型用在这种中间层产品上的甜头。于是,ITier就这么诞生了。数据魔方、淘宝指数和TCIF等数据产品很快便迁移了过来,并且推动了ITier的不断完善。

?

ITier - 和申 - 和申的个人主页

 

不难猜测,ITier在收到请求后差不多是按照下面的流程工作的:

  1. SQL解析;
  2. 产生执行计划;
  3. 到各个API取数据;
  4. 数据整合计算,返回。 ? 
    1. ITier - 和申 - 和申的个人主页

     

实际上,在SQL解析和取数据这两个环节,我们有针对性地建立了一些缓存,能有效地降低整体的响应延迟。

ITier目前在生产环境有4台实体机,每天承担着接近1亿的SQL请求,平均响应时间20ms(ITier层的开销在6ms左右)。实际上,4台机器也完全是出于跨机房容灾考虑,现在的请求量,一台机器足以应对。

看起来很美。的确,我们都以参与过这个产品而沾沾自喜。但有些残酷的现实,我们不得不正视:

  1. ITier的目标是屏蔽异构数据源的差异;它解决不了数据源本身的性能问题,比方说大表的JOIN,ITier真的做不到;
  2. 到现在为止,ITier仍然没能完全屏蔽异构数据源的差异;比如garuda中提供了自己特有的一些函数,在其他数据源中并没有支持;还比如主站搜索引擎本身并不支持按照在线宝贝数进行查询等;
  3. ITier一定有开销;并且它在你访问数据的环节中插了一脚,由此引入的不稳定因素也是需要考虑的,尽管我们在client包里做得很完善,并且这事从来没有发生过。

或许,会有那么一天,大家用ITier用得很爽,完全感受不到ITier的存在。那个时候,ITier真的是做好了。


  评论这张
 
阅读(1394)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016