写点什么

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

2011 年 12 月 06 日

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:004898
用户头像

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

关注

评论

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

大数据知识专栏 -MapReduce 自定义计数器技术

小马哥

大数据 mapreduce 七日更

Kafka 中的消息存储在磁盘上的目录布局是怎样的?

码农架构

Java kafka 架构 设计模式

Android经典面试:46道面试题带你了解中高级Android面试,附面试题答案

欢喜学安卓

android 程序员 面试 移动开发

【CSS】画三角形(8个角度及其原理)

学习委员

CSS html5 前端 CSS小技巧 28天写作

合约交易APP系统开发|合约交易软件开发

开發I852946OIIO

系统开发

区块链数字货币交易所系统软件APP开发

开發I852946OIIO

系统开发

【Redis】- Redis Cluser之数据分布

双木之林

Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC

Crud的程序员

Java spring 程序员 架构

比特币矿机工作原理

v16629866266

15个国内外最受欢迎的YouTube视频下载器

科技猫

youtube视频下载 油管视频下载 下载youtube视频 下载油管视频 视频下载器

Hadoop编程实战:HDFS用户Shell详解

罗小龙

hadoop 最佳实践 28天写作 hdfs shell

吉他谱怎么看?看谱大攻略送上!

懒得勤快

音乐 吉他学习 吉他谱 看谱

图扑打造智慧化物流仓储管理系统组态仿真

一只数据鲸鱼

物联网 工业4.0 组态软件 智慧物流

新“庖丁解牛”,华为云技术全牛图解

陈泽涛

即构✖叮咚课堂:行业第一套AI课堂解决方案是怎么被实现的?

ZEGO即构

2021最新版阿里巴巴Java性能调优速成手册强烈推荐

比伯

Java 编程 架构 面试 架构师

架构师训练营第三周作业 -命题作业

阿德儿

【Java虚拟机】- Java虚拟机之逃逸分析

双木之林

快了何止100%?阿里巴巴Java性能调优实战(2021华山版)PDF版开源

Java架构追梦

Java 阿里巴巴 架构 性能优化 华山版

2020年中国DevOps应用发展研究——艾瑞咨询报告总结

禅道项目管理

DevOps 行业资讯 趋势

初步解析 Elasticsearch Document 核心元数据

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

备忘录1

Vei

android开发培训!深度解析跳槽从开始到结束完整流程,系列篇

欢喜学安卓

android 程序员 面试 移动开发

Apache Flink 在实时金融数据湖的应用

Apache Flink

flink

简单五步:利用Gitstats给代码仓库做一次体检

后台技术汇

28天写作

AQS之ReentrantReadWriteLock精讲分析上篇

伯阳

AQS 读写锁 ReentrantReadWriteLock 多线程与高并发 lock

如何 3 步一键部署开源容器应用?

binggg

Docker 开源 Serverless 云开发 应用

图解分布式之:最终一致性,一致只会迟到,但绝不缺席

四猿外

架构 分布式 分布式系统 一致性 数据一致性

Web UI自动化测试之元素定位

行者AI

软件测试 测试 自动化测试

基于 KubeEdge 和 Kuiper 的边缘流式数据处理实践

华为云原生团队

数据库 云原生 边缘计算 华为云 边缘技术

volatile,还可以有这么硬的理解

云流

Java 程序员 线程

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