写点什么

岑文初谈淘宝开放平台技术发展历程

2012 年 10 月 15 日

淘宝架构师岑文初(放翁)最近在博客中详细介绍了淘宝开放平台的技术发展历程,随着数据的天量增长,开放平台的架构、实现都在不断演进,其中的技术积累值得业界关注。

岑文初在文章开头回忆了阿里软件的创业期(2006 底),初衷是为中小企业提供一个工作平台,因为卖家的需求是长尾的,参考Saleforce 的模式,阿里想做一个支持二次开发的平台。不过经过一年多的建设,团队发现开发者非常难利用平台做二次开发,只有内部团队构建了三个不同的CRM 系统。随着王文彬的参与,团队决定尝试一种新的技术模式——开放平台。在此背景下,岑文初考照雅虎的开放模式,在两周时间内做出了开放平台的一个模型,从而开启了以后的开放之路。

07 年:萌芽

文初将 2007 年概括为萌芽期,SOA 架构的企业思想和开放平台的互联网本质使得一线开发者和平台框架实现者出现非常多的矛盾:

SOA 盛行的年代,内部架构服务化成为开放的第一步,内部服务不做好隔离,开放就意味着风险不可控。支付宝今天的服务框架 SOFA(类 ESB),淘宝的 HSF(OSGI),阿里软件的 ASF(SCA)都是那个年代的产物,但服务化带来的痛却是一样的,不论是 OSGI 或者 SCA 之类的服务框架,本身服务化规约设计都类似,但难题也都摆在每个架构师和开发者面前:服务单元 Bundle 的粒度控制,服务之间依赖管理,性能与规范的冲突,调试与隔离的平衡。这些都使得一线开发者和平台框架实现者出现非常多的矛盾,而这个过程最后能活下来的框架,最后都是摒弃掉了很多企业级的设计思路,因为 SOA 架构从企业级产品演变而来,而服务化后的内部平台要面对的开放平台天生就是互联网的产物。

08 年:雏形

到这年年底,平台开放淘宝服务 30 个,每天调用量 2000 万,这一年的开放平台的开发者面向的客户主要是阿里巴巴上的中小企业和淘宝 C 店卖家。

文初指出,开放平台建设初期要解决的就是三个问题:

  1. 服务路由。(外部可以获取内部信息)
  2. 服务接口标准化。(统一方式的获得各种标准化信息)
  3. 授权。(外部合法的获取内部信息)。

接着,他详细介绍了三种问题的解决方案:

服务路由其实就是写一个高效的 HttpAgent,服务接口标准化就是对象文本化(Json,xml)…淘宝初期采用的是自有协议,因为 OAuth2 以前的逻辑复杂且使用不方便,直到 2011 年才开始支持 OAuth2,同时做了部分的安全增强。授权解决了开放最大的一个问题:用户安全的对应用访问其数据受信。用户从此不用赤裸裸的将用户名密码交给一个应用软件,应用也可以在允许的范围内(操作,数据,授权时长)充分利用用户授权来玩转创意。

同时,文初还透漏早在 2008 年时,淘宝开放平台就开始探索实施 Memcached 和 Hadoop。

09 年:产品化

淘宝开放平台从 30 个 API 猛增到了 100 个 API, 文初指出性能成为了瓶颈:

此时技术上的挑战又聚焦到了性能上,一次 API call 的业务消耗平均在 30-40ms,开放平台当时的平台处理消耗平均在 10ms 左右。我们做了数据打点和分析,发现最大的消耗在于互联网数据接收,同时大量的图片数据上行,更是加大了平台处理时间,同时从访问日志分析中可以看到很多无效的请求也占用了非常多的处理时间,这也意味着无效请求和有效请求一样在消耗着有限的容器线程资源。于是我们开始尝试自己封装字节流解析模块,按需解析上行数据,一来提升数据分析的性能(并行业务和数据增量分析操作),二来可以用最小代价处理异常请求(当发现不满足业务规范,则立刻丢弃后续所有数据),这块实现被叫做 LazyParser,主要的实现重点就是最小化数据缓存来并行业务和数据解析操作,上线后效果不错,整体处理平均处理时间从 10ms 降低到了 4ms。

除此之外,文初还讲述了 Hadoop 的 MR 问题以及解决过程和网络软负载切割。

10 年:平台化

此时,平台开放淘宝服务 300 多个,每天调用量 8 亿,在这样一个背景下,淘宝技术团队又遇到了新的问题,文初谈到了流式分析系统的演变:

8 个亿的访问量下再用 Mysql 做流式分析已经不靠谱了,分析时间要求也从一个小时提升到了 20 分钟,此时经过快 1 年半的 Hadoop 使用和学习,再加上对分布式系统的了解,正式开始写第一版的流式分析系统,MR 的抽象依旧保留,而底层的数据计算分析改用其他方式…总的来说就是数据来源变了,数据不通过磁盘文件来做节点计算交互(只在内存使用一次就丢掉了),简化任务调度,简化数据归并。这样第一版本的流式分析出来了,当然后面这些设计遇到的挑战让这个项目不断在演进,演进的各种优化几年后发现都在 hadoop 或者 Hive 之类的设计中有类似的做法这个系统 3 台虚拟机抗住了 8 亿的日志即时分析,Mysql 日志分析就此结束。

11 年:市场化

在这一年,平台开放淘宝服务 758 个,每天调用量 19 亿。文初提到了开放平台的 KPI 中增加了一个重中之重——安全:

…最后发现是线下的商品价格不知道怎么全被修改成 1 块钱,然后凌晨一同步,就导致出现了上面的一幕。开放平台的 KPI 中增加了一个重中之重:安全,包括后面的很多技术产品都是围绕安全展开。此时第一个被波及提升能力的系统就是流式分析集群,20 分钟一轮的数据分析要求压缩到 3 分钟,同时数据量已经从 8 亿每天增长到了 19 亿每天,化了 2 个月时间断断续续的优化集群结构设计和单机处理能力,里面经历的内容有一天我翻 Hadoop 的优化过程时看到了相似的场景。

简单来说:1. 充分利用多核能力用计算换内存。2. 磁盘换内存,用并行设计来保证整体业务时间消耗不变甚至减少。3. Slave shuffle 来减少 Mater 的合并压力。4. 数据压缩减少数据传输消耗和内存占用。

12 年:垂直化

到现在,平台开放淘宝服务 900 多个,每天调用量 25 亿。文初提到了两个比较创新的项目——JS SDK 和无线 SDK(IOS,安卓):

…最成功的案例就是 Facebook,于是年初的时候,拿这 FB 的 JS SDK 一阵看,就开始动手写了,期间很高兴拉了 UED 同学入伙,这才使得这个 JS SDK 变的更加靠谱,更加专业…同时有了 JS SDK,买家类的服务安全性有所保证,因为原先的 REST 调用在授权以后是无法知道是否是用户发起的还是服务器发起的,而 JS SDK 一定程度上还要校验 Cookie 的有效性,可以部分的保证用户的在场知情。

而下半年的无线 SDK,就是间或的苦读 1 个月的各种文档,然后就开始动手玩了…此时在开放平台的技术团队内部正在执行一个叫做 Hack project 的活动,其中一个自主项目就是安卓的 SDK,因此一个月后,安卓的 SDK 顺利的诞生了。这两个无线 SDK 所担负的职责就是把控无线安全问题,不仅淘宝,业界其实很多公司都还没理解无线开放的风险到底有多大,OAuth2 基本就无法保证无线的用户安全,因此如何在 SDK 和服务端融入更高级别的安全设计,成为了无线 SDK 诞生的第一个重要需求…

想要完整了解淘宝开放平台技术发展历程的读者可以查看文初的博客全文

2012 年 10 月 15 日 08:414688
用户头像

发布了 501 篇内容, 共 214.3 次阅读, 收获喜欢 29 次。

关注

评论

发布
暂无评论
  • Open API 分析、实践和思索

    在文章中作者对Open API的发展、形态、类型、数据格式、当前国外的使用现状等做了分析,然后根据自己的实践经验对Open API进行总结,提出了自己的看法。

  • 揭秘淘宝自主研发的文件系统——TFS

    目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。最近,淘宝核心系统团队工程师楚材(李震)在其官方博客上撰文简要介绍了TFS系统的基本情况,引起了社区的关注。为了让读者更深入地了解TFS的奥秘,InfoQ中文站针对TFS的来由、运行环境、扩展性、架构、发展规划及开源事宜等问题对楚材进行了专访。

  • 可扩展架构案例(二):App 服务端架构是如何升级的?

    这一讲通过一个1号店App服务端架构改造的例子,来具体说明架构的演变过程,让你更深入地理解架构演变背后的原因。

    2020 年 3 月 2 日

  • 087| Splunk:机器大数据的分析帝国

    在大数据圈,Splunk公司不仅能盈利而且能稳步扩大它的盈利,这是非常罕见的。让我们看看他们是怎么发展起来的吧。

    2018 年 4 月 23 日

  • 汤子楠:飞天、ODPS 经历了许多血淋淋教训

    阿里云飞天系统之上,提供了离线的结构化数据存储和计算服务平台ODPS,半结构化数据的实时随机读写服务OTS(Open Table Service),实时流数据处理服务OSPS等等。通过这些服务,阿里巴巴内部或第三方都可以通过阿里云享受这些资源。InfoQ采访了阿里云事业部高级专家,云产品产品经理汤子楠,他介绍了阿里云飞天、ODPS的演进过程,以及ODPS、天池未来的发展和价值。

  • 开放平台回顾与前景展望

    淘宝的开放算上2010年已经走了快三个年头了,从服务提供者的角色转变为开放平台的角色,从30多个服务到300多个服务,从2000w的日调用量到8亿的日调用量,在技术和产品上都在经历着不断地蜕变。开放平台产品的几个关键词:快,稳,安全,易用,透明。这些关键词构成了开放平台第一阶段的产品需求。

  • 走近淘宝开源平台

    淘宝开源平台自6月底上线以来,引起了国内社区的广泛关注。目前,平台已经发布了若干开源项目,其中不乏来自于淘宝之外的项目在此落户。为了使国内开发社区的朋友对淘宝开源平台有进一步的了解,InfoQ中文站对平台的负责人残剑(全佳营)进行了专访。

  • 做一名有高度的移动开发工程师

    成为“开发高手”还不够?如何才能成为纵向深入、横向扩展的T型人才?如何提升个人的专注力和效率?如何看待个人发展和公司平台的关系?

    2019 年 3 月 16 日

  • 跨平台开发的现状与应用

    H5与Native的现状是怎样的呢?RN和Weex方案有哪些优势,又存在什么问题?小程序是不是真的可以一统江湖?焦虑的原生开发又应该如何在这个潮流之下谋发展呢?

    2019 年 3 月 30 日

  • 京东物流仓储数据分发平台架构实践及挑战

    2019 年 7 月 25 日

  • 我眼中的云端架构

    每个人心中都有自己的一朵云,在我设想中,应该存在这么一种公有服务,它能够帮助用户随时随地的获取自己的数据,与朋友交流,获取好友最新状态。在这服务之上,我们有这么一个平台,它能够给用户提供二次开发的接口,让开发者根据用户数据开发丰富的展现层,并且提供这些展现层的运行平台。

  • 冯大辉关于阿里系技术积累文章引发热赞

    日前,丁香园CTO冯大辉在自己博客上发表文章《谈谈阿里系的技术积累》,不论是其博客网站上,还是这条文章对应的微博之评论,读者和网友看到后,都对阿里系的技术积累和贡献表示赞赏和羡慕。

  • 淘宝网启动开发平台战略及 TOP 应用大赛

    昨天淘宝网在北京召开“赢在淘宝——TOP 应用大赛暨淘宝动力启动大会”活动,对外宣布了其开放平台战略,以及和该战略相配合的应用大赛。InfoQ中文站编辑在大会间隙专访了淘宝网开放平台副总裁王文彬博士。

  • 京东无线服务端架构演进历程

    在4月21~23日举行的QCon北京2016大会上,京东商城无线业务部、网关京东负责人赵云霄老师分享了题为《京东无线服务端架构演进历程》的主题演讲。在演讲中,赵云霄从三个方面介绍了京东无线服务端架构演进过程。第一,京东无线服务端。第二,京东无线服务端架构变迁。第三,京东无线服务端未来发展状况。本文根据其演讲整理而成。

  • 岑文初谈移动端开放插件平台的技术难点

    千牛是阿里巴巴商家的多端开放式工作平台,每天服务500w+的活跃商家在移动和桌面端操作业务。大部分商家出外本身手机性能较差和网络非常不稳定,因此如何能够在弱网络下优化千牛平台自身和ISV对外的数据交互成了很大的问题。千牛是如何解决这个问题的?

  • 苏宁易购 11.11:商品详情系统架构设计

    商品详情系统是一个展示商品基本信息、参数等详情的系统,是商品购买的入口。它是电商平台中访问量最大的系统之一,苏宁易购大促期间PV量和UV量很大,这么大的访问量对系统的并发能力要求高。在业务上它与周边系统的关系是高耦合。依赖商品详情系统的的系统特别多,比如:促销系统、推荐系统、大聚惠、等众多营销系统、还有主数据系统、购物车、收藏夹等,业务复杂度高对系统设计提出更多的要求。

  • 云计算就是服务:阿里云总裁王坚博士访谈录

    阿里云开发者大会期间,InfoQ和王坚博士进行了深度交流,谈到阿里巴巴对技术人员外出分享的看法,对当前技术趋势的理解,对阿里云飞天平台的架构解释,以及飞天开放平台的起因和背景等。

  • 解析 Envoy Proxy(下)

    2020 年 8 月 13 日

  • 互联网开放平台技术趋势和讨论

    2008年6月14日,InfoQ中文站在北京举办了第一次QClub,邀请了中国雅虎的首席架构师曾宏威分享了关于互联网开放平台方面的架构和趋势等。本文是对本次QClub活动内容的一个简短总结,希望对没有到现场参会的读者了解开放平台的发展和趋势有所帮助,也希望能引起大家更多的讨论。

  • 架构师(1 月刊)

    InfoQ中文站的电子杂志《架构师》(2013年1月刊)出炉了。本期的主编是InfoQ中文站主编贾国清。1月份《架构师》杂志的主题是" 电商很忙",在2011年11月刊《架构师》上,InfoQ组织了题为“光棍节狂欢的背后——电商系统初探”的专题内容,主要从电商系统演进、购物袋实现和API设计等内容展开。时隔一年,电商系统究竟在技术支撑乃至运维上又有哪些提升和突破呢?

发现更多内容

五种不同类型的领导模式

石云升

领导力 28天写作 职场经验 管理经验 4月日更

Laravel 服务容器实例教程--深入理解控制反转(IoC)和依赖注入(DI)

一个大红包

4月日更

飞桨与龙芯完成兼容性认证

百度大脑

飞桨

百度智能云发布云智一体的AI开发全栈模式

百度大脑

百度智能云

GitHub已封杀!阿里内部金三银四Java面试题被泄露!

Crud的程序员

Java 架构 Java工程师

从0开始的支付业务架构演进之路

誰敢得罪我

I'm Back

小天同学

思考 个人感悟 4月日更

2021年金三银四全新版互联网大厂面试题,分类80份PDF,累计4700页

云流

Java 编程 程序员 架构 面试

【leetcode题目】2. 两数相加

程序员架构进阶

LeetCode 28天写作 算法解析 4月日更

ElasticSearch读写模型&数据复制模型

yhh

elasticsearch 数据复制模型

DorisDB致工程师们的一封信

DorisDB

大数据 程序员 数据分析 工程师 DorisDB

模块1作业

Geek_2e7dd7

架构实战营

Python OpenCV 之图像的叠加,图像处理取经之旅第 16 天

梦想橡皮擦

Python OpenCV 4月日更

Flink中的无界数据流与有界数据流

大数据技术指南

flink 4月日更

Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天

梦想橡皮擦

Python OpenCV 4月日更

后端开发必须要懂的Redis,Redis的数据结构

Linux服务器开发

redis 分布式 后端开发 web服务器 Linux服务器开发

聪明人的训练(一)

Changing Lin

4月日更

uni-app对接金山文档在线预览服务

薛定喵君

树莓派与边缘计算

Tango

树莓派 IT蜗壳 4月日更 OpenVINO

Spark查询优化之谓词下推

小舰

4月日更

CMS前世今生

叫练

CMS JVM 垃圾收集

可能是最糟糕的愚人节玩笑:科技史上的美式疯狂

脑极体

Rust范型使用trait限定的一点总结

Microwood

rust Trait 范型 范型约束Output Add

智能取色-为多元化的产品场景选择完美的色彩组合

百度贴吧技术团队

智能取色 个性化 视觉策略 沉浸感

阿里P7需要精通哪些技术?看完Github上星标98K的对标阿里P7学习路线我彻底惊了!

Java王路飞

Java 架构 面试 分布式 阿里

根据码龄来爬取CSDN博客粉丝

空城机

Python 爬虫 python 爬虫 4月日更 粉丝数据

酷家乐 x DorisDB :家居SaaS独角兽如何实现数据分析全面升级,大幅降低平台成本

DorisDB

大数据 数据分析 presto 营销数字化 DorisDB

一文学完所有的Hive Sql(两万字最全详解)

五分钟学大数据

大数据 hive 4月日更

Hi Array!~~~你所经常遇见的TA!

Chalk

JavaScript 前端 数组 array 4月日更

搭建Gogs服务器

尧二水丶

git flow 4月日更

今天是个开心的日子

return

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

岑文初谈淘宝开放平台技术发展历程-InfoQ