写点什么

InfoQ 专访 eBay 系统架构总监 Tony Ng:聊聊电商网站的架构与安全

  • 2011-12-06
  • 本文字数:2838 字

    阅读完需:约 9 分钟

Tony Ng 是 eBay 的系统架构总监,负责 eBay 平台的技术战略和架构,包括云、Web 服务、内核和消息等。他在本次 QCon 杭州 2011 大会的演讲题目为 eBay 技术平台–掌控十亿级交易数据。在这个演讲中,Tony 首先从宏观的角度对 eBay 的技术堆栈架构进行介绍,然后从支持新用户体验、保证网站可靠性、可伸缩性以及高性能等四个层面,诠释了如何提升开发的生产率。

演讲结束后,Tony 接受了 InfoQ 中文站的专访。

InfoQ:Tony,请您先做个简短的自我介绍吧。

Tony:非常高兴能够来到 QCon。我是 eBay 的系统架构和工程总监 Tony,主要负责系统的整体架构,还有 eBay 技术平台方面的一些总体战略。

InfoQ:在海量数据处理层面,eBay 使用了哪些技术来保证整个网站的可用性不会被拖垮?

Tony:为了处理海量数据,保证数据的可用性,我们使用的关键技术是:数据分区(partioning)。我们首先会看 eBay 现有的这些不同业务领域,然后根据业务领域把数据分别放入不同的数据库里面去。即使是在同一个业务领域里面,我们也会切分数据。举个例子,我们有商品数据库,我们会把商品的 ID 作为主键跨越不同的数据库,这让我们可以把处理的负载分发到不同的数据库中。即使有一个数据库当掉了,也不会影响整个网站,只是这个数据库受影响。

InfoQ:当 eBay 引入新功能时,你们采用了什么样的流程来把这些新功能转移到生产环境中?

Tony:在 eBay,我们有一个名为"实验(experimentation)"的流程。当我们有些新的想法或是功能想介绍给用户使用时,会先把它们放在单独隔离开的地方,并且只让一部分用户先行体验,我们还会针对这些功能设置很多的分析和度量机制,看看这些功能的表现如何,比如用户的交易量是不是因为这些功能上升了,还是这些功能让他们感到困惑。如果新功能表现良好,我们就会把它们发布到正式的生产环境中,但是会以增量方式进行。比如,我们可能会把代码先发布到 5% 的服务器上,然后我们会观察一天,看看性能数据、错误日志等都表现正常;这样我们就可能会增加发布到 50% 的服务器上,然后继续小心翼翼地监控,再发布到所有的服务器上,所以这是一个完全受控的过程,而不会是一锤子买卖。

InfoQ:系统架构师常常要同时面对很多事情、很多问题,在您看来,如何在很多因素之间取得平衡?在面对冲突的时候要怎么处理?

Tony:作为系统架构师,有两件关键的事情要做。第一是做决定。设计架构就是要做出一系列艰难的决定,是未来难以改变的决定,这也是我们之所以需要架构的本质原因。第二件事是权衡。要想在软件系统中拥有一切是不可能的,关键是:对于任何想要实现的系统,要找到你希望系统展现出来的关键特质,可以是可用性、性能、可维护性等等,更重要的是要有优先级,要知道哪些系统特质是最重要的。仅靠系统架构师自己是无法完成这些工作的,你需要跟业务负责人员讨论,帮助他们发现他们到底想要什么。这是架构师很重要的工作,帮助你的客户真正理解他们想要的东西。因为很多时候他们并不是很清楚自己到底想要什么,这是对架构师真正的挑战。一旦有了优先级之后,你就可以使用自己的经验和专业知识来设计系统,来得到你最希望实现的系统特质。

InfoQ:对于 eBay 来说,用户的账户安全一定很重要。你们用了哪些技术来确保欺诈和安全漏洞不会造成危害?

Tony:eBay 对于安全问题非常看重。我们有两个专门的团队处理这个领域的问题。一个称为"信息安全团队",这个团队主要关注基础设施层面和信息层面的安全性。我们有很多安全方面的最佳实践和模式可以应用。我们还有扫描工具,确保代码不会出现漏洞。对开发人员的指导也很重要,因此我们有相关培训,比如如何定义模块,来确保开发人员能够写出安全的代码。第二个专门团队重点关注用户账户欺诈行为。我们有一个非常先进的规则引擎,把它与用户度量指标相结合,用来监控大量的用户账户活动。我们会把用户度量指标和活动信息送到规则引擎中,根据用户过去的行为或我们定义的规则,判断用户是否发生了某些可疑的行为。事实证明:我们可以借此发现用户账户存在的某些欺诈行为,然后采取合适的行动。

InfoQ:eBay 向第三方的开发人员和合作伙伴提供开放的 API,那么如何控制 API 访问的频率和资源使用状况?

Tony:这很重要,我们每天有超过十亿次的 API 调用,网站上超过一半的列表都是通过 API 生成的。所以我们实现了所谓的"流量和速率限制系统",可以在其中查看来自不同 IP 地址、不同应用 ID 标识的应用等各层面的 API 调用。对于移动访问,我们还能识别出不同的设备,我们设定了规则,比如:某些特定的 IP 每个小时只能执行一定次数的调用,如果你想获得更多次访问,你必须注册并获得一个应用 ID,这样你就得传递一个标志过来,以标识你拥有那个应用。根据具体情况差异,不同应用会有不同限制。每个进入 eBay 的调用都要经过这个系统,如果应用超过了对它的限制,我们就可以阻止它的进一步调用。

InfoQ:eBay 也使用了云计算相关的技术,您能否介绍下 eBay 在这方面的策略和实践?

Tony:eBay 使用云计算的主要目标是敏捷性。当有新应用上线或是调整现有应用部署环境时,我们希望能够在几分钟内快速完成,这就是我们的目标。我们还相信:用云可以让我们之前的一些人工过程 自动化,比如新硬件配置、向负载均衡器加入新节点以供应用使用等等。云可以帮我们在部署场景中变得更加敏捷。长期来看,我们也关注效率,因为 eBay 上的流量常常出现峰值状况,因此问题在于是否可以使用那些处于空闲状态的基础设施资源,我们相信云在这方面也有很大潜力。

InfoQ:之前您曾在 Sun 和 Yahoo! 工作过,现在您又担任 eBay 的系统架构总监,您拥有丰富的职业经验,能否为中国的开发人员提供一些关于职业发展方面的建议?

Tony:我想有些东西确实很重要,比如你要关注外面的新技术趋势,不妨参加一两个开源项目,这是学习新技术的好方法。有时候你必须要使用或是修改某些代码,而不是仅仅去阅读文章。现在在美国,越来越多公司举办"Hack Day"活动,开发人员聚在一起,花上一天时间来创建某个应用。我们也鼓励开发人员参与这样的活动,想到某个想法,然后去实现它,创造新东西,这个过程确实可以让人学到很多知识。第三个建议是向一些技术会议或是活动提交一个演讲议题,或是撰写文章、博客,并且重点放在某个领域上,这能让你在演讲或写文章之前,认真思考相关技术,获得更深入的理解;这样还能让业界对你有更多了解。

InfoQ:最后,您能对中国的技术社区说几句话吗?

Tony:能来到这里并遇到这么多中国技术社区的工程师,我很兴奋。在技术领域,这里也有很多有趣的公司,我也很高兴能够跟他们交流经验。从我这几天的对话来看,中国的软件工程师们在开源和新技术方面一点都不落后。我想再次重申:希望大家可以紧跟趋势,回馈技术社区和开源项目,多写文章和博客。在这里遇到的人,让我印象深刻。

注:本采访录音可在这里下载


给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-12-06 00:005941
用户头像

发布了 479 篇内容, 共 179.6 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

JAVA编程规范之控制语句

源字节1号

后端开发

python小知识-rethinking python 生成器

AIWeker

Python python小知识 7月月更

TPC藏宝计划质押系统开发(Dapp)

薇電13242772558

智能合约 dapp

边无际 Shifu IoT 开源开发框架 助力物联网应用开发加速十倍

亚马逊云科技 (Amazon Web Services)

开源 Kubernetes 物联网 应用开发

MySQL数据库优化

五分钟学大数据

MySQL 7月月更

软件研发落地实践,要从设计就开始

华为云开发者联盟

云计算 后端 开发

向量化执行引擎框架 Gluten 宣布正式开源,并亮相 Spark 技术峰会

Kyligence

spark Gluten

还在羡慕其它平台有跨店满减,其实你也可以!

CRMEB

不会吧!钉钉都下载了,你还不知道可以这样玩?

Jianmu

钉钉 持续集成 自动化运维 建木CI 通知

模块七作业 - 王者荣耀商城异地多活架构设计

云计算和大数据的关系以及区别详细讲解

行云管家

云计算 大大数据

SAP Fiori Launchpad 应用的两个实用技巧分享

汪子熙

JavaScript SAP SAP UI5 ui5 7月月更

Okaleido或杀出NFT重围,你看好它吗?

鳄鱼视界

音视频开发进阶|第四讲:音频自动增益控制 AGC

ZEGO即构

音视频开发 AGC

nacos注册中心之服务注册

急需上岸的小谢

7月月更

短视频直播系统源码——如何优化满足用户需求?

开源直播系统源码

直播系统源码 开源源码 短视频直播系统源码

Lite Actor:方舟Actor并发模型的轻量级优化

HarmonyOS开发者

HarmonyOS

B站挂了登上全网热搜!技术人员为你还原前因后果

雨果

易周金融 | 邮惠万家银行开业;微信公众号叫停四类金融营销宣传

易观分析

金融

TiKV & TiFlash 加速复杂业务查询

TiDB 社区干货传送门

2022年浙江省等保备案流程指南

行云管家

等保 等保备案

uni-app进阶之内嵌应用【day14】

恒山其若陋兮

7月月更

如何快速有效的定位应用抖动问题?| 龙蜥技术

OpenAnolis小助手

Linux 系统 龙蜥技术 SysAK 抖动

4 个 JavaScript 最基础的问题 —— Eric Elliott

掘金安东尼

JavaScript 面试 前端 7月月更

声网传输层协议 AUT 的总结与展望丨Dev for Dev 专栏

声网

传输协议 Dev for Dev

Google上网神器Ghelper

源字节1号

软件开发 小程序开发

全新出品!阿里P5工程师~P8架构师晋升路线揭秘

程序员小毕

Java 程序员 面试 架构师 学习路线

Verilog HDL

贾献华

7月月更

查找——B-树

乔乔

7月月更

jdbc自带MySQL连接池实践

FunTester

InfoQ专访eBay系统架构总监Tony Ng:聊聊电商网站的架构与安全_QCon_郑柯_InfoQ精选文章