写点什么

QCon 专访彭渊:Fourinone 是俄罗斯套娃中最小的一个

  • 2012-05-09
  • 本文字数:3283 字

    阅读完需:约 11 分钟

彭渊,现在淘宝网任高级专家,从事互联网核心技术研究。之前在金蝶总体架构部任 SOA 架构师,负责设计 ESB。

从业 Java 技术领域十多年,撰写过多款开源软件,拥有软件著作权的代表作有:BS 系列软件(包括财务进销存、OA 产品、CRM 等)、FMS 视频会议、Flash 网站生成软件。其中 BS 系列软件获得过风险投资, FMS 视频会议获得金山举办的首届中国优秀软件创新大赛优秀奖。《BS 财务进销存》、《FLASH 网站生成软件》在华军、天空可免费下载。

《淘宝分布式并行计算四合一框架 Fourinone》是云计算方面作品,目前已经通过压测并用于淘宝业务场景, WordCount 和排序等经典指标均优于 Hadoop。

彭渊在 QCon 北京 2012 大会上的演讲题目是:淘宝分布式并行计算四合一框架 Fourinone 。

淘宝 Fourinone 是一个自主研发的分布式并行计算框架,它集成了 Hadoop ZooKeeper 、MQ、分布式缓存四大主要的分布式计算功能,Fourinone 的功能强大用途广泛,它实现了 ZooKeeper 的所有功能并进行了很多改进,它同时又提供完整的分布式缓存支持,包括中小型缓存以及大型集群缓存,它使用不同于 Map/Reduce 的全新设计模式解决问题,模仿现实中生产加工链式加并行处理的“包工头 / 农民工 / 手工仓库 / 职业所”方式设计分布式计算,它还可以当做简单的 mq 使用。Fourinone 整体短小精悍,就一个 jar 包没有任何依赖,很方便嵌入式开发使用。InfoQ 就 Fourinone 相关技术设计对彭渊做出了采访。


InfoQ:您在演讲中提到的四个功能产品:Hadoop、ZooKeeper、MQ、分布式缓存,Fourinone 中如何平衡它们之间的关系?

彭渊: 首先,我觉得应该再解释一下 Fourinone 是什么:

Fourinone 是一个精心设计的框架和 API,它不是四个产品的组合,它不是 Hadoop 的复制品,也不是将几个开源产品拼凑起来的东西。它的目的是帮助你去利用多台计算机的资源实现各种分布式应用。下面这段话是它的定义:

Fourinone 提供了一个 4 合 1 分布式框架和简单易用的编程 API,实现对多台计算机 CPU、内存、硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。
Fourinone 框架提供了一系列并行计算模式(农民工 / 包工头 / 职介绍 / 手工仓库)用于利用多机多核 CPU 的计算能力;提供完整的分布式缓存和小型缓存用于利用多机内存能力;提供像操作本地文件一样操作远程文件(访问、并行读写、拆分、排它、复制、解析、事务等)用于利用多机硬盘存储能力;由于多计 算机物理上独立,Fourinone 框架也提供完整的分布式协同和锁以及简化 MQ 功能,用于实现多机的协作和通讯。

所以,框架和编程 API 是 Fourinone 的核心,它不实现具体的分布式应用,但是你可以用它帮助你去实现具体的分布式应用,无论是分布式计算还是存储还是协同等。

在智能手机出现以前,我们会认为电话、MP3、应用程序、数码相机是完全不同的产品,实际上我们不清楚这些产品内在技术的联系,我们只是一个使用者,当智能手机出现以后,我们发现它们也可以结合的很好。

Fourinone 实际上将多种分布式问题的理解融入到了一个框架中,考虑到底层实现技术的相似性,对复杂的分布式计算应用进行了大量简化和归纳,所以最后它看上去综合了 4 种主要的功能。

虽然中国人动辄花费上百万去购买美国人的应用服务器层软件,并误认为是需要数千工程师长周期才能完成的工程,但是有过多年的行业经验和认真研究过开源软件就知道,几乎所有的开源软件的作者一般只有 1-3 个人,这种创新孵化阶段的投资并不大。Hadoop 的作者其实也是 Lucene 的作者,这跟软件外包以人头数计算利润的形式是不一样。如果进行了商业包装,加入了销售、解决方案、技术支持、售后服务等等,那整个服务团队和投资都会加大。

InfoQ:Hadoop 这个社区现在的发展如何?如果其它用户选择这个产品出现问题时能否及时找到和产品一样免费或者廉价的技术支持?

彭渊: Hadoop 社区现在正在被各商业公司借助“大数据”理念进行商业改装和推动,纵观十年来的 it 行业的几次技术浪潮:

  • COM/COM+
  • J2EE/EJB
  • SSH
  • SOA/SAAS
  • 云计算 / 大数据

Hadoop 属于上面大数据这波潮,这个行业的技术推新规律从来都没变,都是先抛理念,再出产品,再卖服务,最终获取商业利益,所以 Hadoop 社区不会是完全单纯和廉价的。现在的 Hadoop 认证就是一种收费的技术培训服务,商业公司改装过的 Hadoop 产品肯定也是收费的。

而 Fourinone 做的是一个框架和工具,它不存在被商业改装和推动,所以它的社区更简单、完全免费。好的工具软件最好要做到自助,将复杂的问题简单化,而不是将简单的问题复杂化,就像使用 Windows、 Word、 iPhone 这些东西,几乎不需要太多学习成本,不需要过度依赖一个技术社区。Fourinone 自带了一系列学习指南和功能 Demo,几乎可以涵盖所有学习内容了。

InfoQ:系统中如果发送、接收的数据错误需要替换怎么做?

彭渊: Fourinone 里的数据发送多数是工头将相关计算的数据 / 命令 / 消息通过手工仓库传给工人执行,并检验执行状态。如果发送接收发生错误,那通常有两种情况: 一种是系统故障引起的发送接收失败, 一种是业务逻辑意义上的错误数据。系统故障导致网络断掉或者挂机,框架会捕获故障信息并通告,工头在检验工人执行状态时会获知,并进行相应的业务上的故障处理,重发或者单独记录;业务逻辑意义上的错误数据,通常在工人的业务实现逻辑里去判断,这个是由开发者去控制,框架不做业务逻辑上的处理。

InfoQ:这个系统一旦遭遇故障,不同节点数据不一致,如何恢复整个系统?性能和安全性如何平衡,什么数据放在这个系统上?淘宝自己的交易数据、财务信息、组织人事信息是否也在这个架构上管理?

彭渊: 这两个问题是以 Hadoop 的思维方式问的数据的存储和容灾处理。

Fourinone 不是 Hadoop,它是一个框架和 API,它不是一个存数据的文件系统,它的计算数据的来源可以是任意数据,如数据库,分布式文件系统,缓存系统等等,但它本身不存储数据,只做分布式计算,通常一个典型的分布式计算结构,由工头、工人、职介所组成,其中工头是嵌入式的,它不是一个服务程序,在嵌入它的系统里 new 工头类并管理它的生命周期,工头不存在恢复或者容灾的概念。工人和职介所是服务程序,如果工人节点故障,职介所会实时感知,工头分配计算时会获取到最新活跃工人数量,如果是职介所节点故障,Fourinone 实现了领导者选举机制,会实时切换到备份职介所上。

Fourinone 新版本提供了对分布式文件的操作处理,将集群中所有机器的硬盘资源利用起来,通过统一的 fttp 文件路径访问,如:

复制代码
windows:fttp://v020138.sqa.cm4/d:/data/a.log
linux:fttp://v020138.sqa.cm4/home/user/a.log

提供对集群文件的操作支持,包括:

  1. 元数据访问,添加删除,按块拆分, 高性能并行读写,排它读写(按文件部分内容锁定),随机读写,集群复制等
  2. 对集群文件的解析支持(包括按行,按分割符,按最后标识读取)
  3. 对整形数据的高性能读写支持(ArrayInt 比 ArrayList 存的更多更快)
  4. 两阶段提交和事务补偿处理
  5. 自带一个集群文件浏览器,可以查看集群所有硬盘上的文件(不同于 Hadoop 的 namenode, 没有单点问题和容量限制)

总的来说,将集群看做一个操作系统,像操作本地文件一样操作远程文件。

但是 Fourinone 并不提供一个分布式存储系统,比如文件数据的导入导出、拆分存储、负载均衡,备份容灾等存储功能,不过开发人员可以利用这些 API 去设计和实现这些功能,用来满足自己的特定需求。

所以,Fourinone 将复杂的备份容灾通过简化的 API 方法给开发者,但是不实现具体的备份策略,这个由开发者根据自己的存储特点去做。就像使用 Windows,往 C 盘存了一张图片,Windows 不会自动往 D 盘复制一张,但是提供鼠标右健点复制的功能,你可以使用该功能去备份。

Fourinone 为了追求一个最轻巧精简的框架,只做俄罗斯套娃中最小的一个,开发者可以去细细体会,并扩充更多的精彩。

更多的性能和容灾测试可以参考完整的压测报告: http://Fourinone.iteye.com/blog/1426405#bc2249031


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-05-09 00:005786
用户头像

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

关注

评论

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

我用Vanilla JS重写了一遍项目,结果……

Faye

大前端 js 原生

铂金10:能工巧匠-ThreadLocal如何为线程打造私有数据空间

MetaThoughts

Java 后端 多线程 并发

工商银行:应用多k8s集群管理及容灾实践

华为云开发者联盟

容器 多云 工商银行 k8s集群 Karmada

程序员的自我修养-用科学的方法提高交付质量

刘绍

程序员 软件工程 软件质量 TDD 单元测试

阿里P7大牛手把手教你!卧薪尝胆70天内推入职阿里

欢喜学安卓

android 程序员 面试 移动开发

喜马拉雅亿级用户量的离线消息推送系统架构设计实践

JackJiang

消息推送 即时通讯 IM push

Eureka可用性解读

赵镇

Eureka

阿里P9看了都说牛B!阿里巴巴史上最牛的分布式核心原理深度解析全彩手册

Java架构追梦

Java 阿里巴巴 架构 面试 分布式核心原理解析

亚马逊云科技和 Verizon 利用专有 MEC 解决方案扩大 5G 合作

亚马逊云科技 (Amazon Web Services)

高并发应对策略系列文章阶段汇总,提供离线文档下载

Coder的技术之路

架构实战营-模块八-作业

大可

发布60分钟!霸榜Github的阿里面试参考指南,啃透涨薪10k

Java架构师迁哥

点通生活系统软件开发搭建

CryptoPlace挖矿APP系统开发简介

FIL币最新价格怎么样?FIL币最新消息是什么?

全美第四大无线运营商 DISH 和亚马逊云科技开展战略合作

亚马逊云科技 (Amazon Web Services)

夏令营|第五届埃文网络安全技能训练营火热报名中

郑州埃文科技

一文读懂大数据实时计算

五分钟学大数据

实时计算 7月日更

所有前端都要看的2D游戏化互动入门基础知识

蚂蚁集团移动开发平台 mPaaS

大前端

理解Linux 终端、终端模拟器和伪终端

swordholder

Linux Shell SSH Linux Kenel

Mtail导致Nginx报警延迟

BUG侦探

运维 监控 日志

阿里P7亲自讲解!Android大厂面试真题解析大全

欢喜学安卓

android 程序员 面试 移动开发

架构实战营模块8作业

eoeoeo

架构实战营

经过一年的不懈努力社招进了阿里,我总结了50个Java面试必考题

Java 程序员 架构 面试

hdfs 的集群间拷贝、归档、回收站等功能剖析

大数据技术指南

hdfs 7月日更

CodeDay 北京站报名倒计时

蚂蚁集团移动开发平台 mPaaS

移动开发

直击技术最前沿 | Amazon S3增加新的存档访问层

亚马逊云科技 (Amazon Web Services)

闭关三月!啃透美团保姆级分布式进阶技术手册,终入美团定L8

Java 面试

从零开始学习3D可视化之摄像机投影方式

ThingJS数字孪生引擎

大前端 可视化 3D 数字孪生

阿里新出炉爆款的顶配版Spring Security笔记,肝完变秃也变强

Java spring 编程 架构

你见过最具有代表性的面试是什么样的?大三4面上岸腾讯(Java岗)

Java架构师迁哥

QCon专访彭渊:Fourinone是俄罗斯套娃中最小的一个_QCon_郑柯_InfoQ精选文章