Twitter背后的开源技术
如果没有开源软件,Twitter将不会存在。你发送和接收的每一个Tweet在移动端和PC端发送的过程中,都会需要开源软件。我们非常 好奇Twitter使用了多少开源软件。除此之外,我们想要知道开源对Twitter公司的文化产生了什么影响。
我们采访了Twitter公司主管开源的ManagerChris Aniszczyk,来和我们大家分享Twitter的开源故事。Aniszczxk将会在本月的LinuxCon(8月29日至31日,在San Diego,CA)上做主题演讲: The open source technology behind a Tweet.
让我们看一下Aniszczy如何看待Open Source以及Twitter的开源文化。
请给我们简单介绍一下你即将在LinuxCon上做的报告“The Open Source Technology Behind a Tweet”?
表面上来看,Twitter提供一种简单的实时消息服务,其传播的是140个字节组成的被称为Tweets的消息单元。更进一步的看一下运行此服务的复杂性:每天超过4亿的Tweets被发送。在这样一个规模下,你必须处理一些有趣的实时工程性问题。在这个报告中,我将讲述我们如何应对这些挑战以及为什么我们选择开源软件来应对这个挑战。这个报告的内容将要讲述一个Tweet的整个生命周期,从我们的后端服务到前端显示。我期待听众在听完报告后,能够对开源技术有更好的了解和认识,同时知道一个简单的Tweet在出现在他们的timeline时,背后都发生了什么。
一个Tweet的传播场景背后,使用了多少开源软件?
我们使用了许多开源软件。依我来看,作出这个决定是很自然的事情。因为使用开源软件允许我们在公司和服务快速发展的过程中,可以定制代码用以满足我们快速迭代的工程需求。在Twitter,当我们计划开展一个新的项目时,我们总是会取衡量我们的需求以及开源能够提供给我们的能力,同时倾向于定制开源软件用以满足需求。通过这样的方法,Twitter大部分构建在开源软件基础之上,作为结果,open source的方式现在是我们文化中普遍存在的一部分。另外,从开源社区中获取并回馈给开源社区形成了一个正反馈,我们也 在Github上分享了我们很多代码。
下边是我们使用的一些开源软件的具体的例子:
- MySQL被大量使用,是Tweet的主要存储工具;我们开发了 MySQL fork in the open用来和开源社区合作;
- Cassandra, Hadoop, Lucence, Pig以及一些其他的Apache基金会的项目被我们的架构使用,用来增强分析数据和搜索的服务能力。我们也回馈这些项目并资助Apache软件基金会。
- Memcached在我们的缓存架构中被大量使用,用来应对我们告诉增长的流量。我们最近开源了 Twemcache, 这个项目基于Memcached的代码进行开发。
另外,我们也提供了一些开源软件:
- lago是我们开发的一个流量生成工具,用来帮助我们把服务在生产环境上线前进行测试。lago提供适合于Twitter环境所需的流量和精度用来测试我们的服务。
- Zipkin是我们开发的一款分布式追踪(tracing)工具,帮助我们收集timing data,这些data是对Twitter API请求中的不相关联的服务产生的。
- Scalding是以个Scala库,使用这个库可以容易的在Hadoop上开发MapReduce作业,利用内置集成的Scala和JVM。
我还想提一下 Apache Mesos,它使得开发分布式应用以及共享数据中心的资源非常容易。我们在Twitter内部很多地方使用它,从执行Hadoop上的作业分析,到运行Rails应用。它真的是Twitter的基础应用之一。你能查看这个 演讲用来获取更多的信息。
在Twitter工作是什么样子的?你们的文化受到Open Source影响吗?
如果你在开源社区花费一些精力,你将会意识到信息的开放沟通对整个世界将会带来积极的影响。在Twitter,我们谨记这个准则,每个员工有意愿和机会参与其中。我们每周都会开all-hands会议,在这个会上,尖锐的问题被提出和回答,因为我们从内到外都保有开放的心态和互相之间的信任。更进一步,我们大约在一年前成立了一个open source office用来支持对我们至关重要的开源组织。我们对开源社区所作出的伟大工作充满感恩,想要和开源社区保持健康的关系。
在工程文化方面,Twitter本身是一个实时的事件驱动的工程难题,我们也将我们的工程文化塑造成实时响应以及事件驱动。我们想要敏捷、小步迭代的工程文化,这些伴随着整个公司的成长而发展。每天有超过4亿Tweets被发出,同时有大量的Tweets被递送。我们每季度也举办hackweeks,员工可以拿出一周的时间从事各式各样他们真正富有激情的项目,这些项目不需要和他们每天负责的职责相关。
[ comments ]