AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

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

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

关注

评论

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

研究了一圈React学习资料,发现最好用的React教程还是这个

sai

Python代码阅读(第73篇):字符串字节数

Felix

Python 编程 字符串 阅读代码 Python初学者

Hadoop学习过程中遇到的错误及解决方法

阿丞

hadoop hdfs mapreduce YARN

基于kali的域控环境搭建——黑盒测试环境搭建

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

云原生促进基础设施变革,百度“磐玉”蜂巢服务器正式发布

科技热闻

资产租赁管理系统解决方案

低代码小观

资产管理 CRM 企业管理系统 融资租赁 CRM系统

Nginx+IIS做站点访问负载均衡

为自己带盐

nginx dotnet 28天写作 12月日更

个推漫话知识图谱:《女心理师》中的智能语音识别系统如何实现?

个推

机器学习 nlp 知识图谱

模型黑盒|机器学习模型的“可解释性”研究

索信达控股

神经网络 机器学习 神经网络模型

华为与湖北三所高校共建首批鲲鹏&昇腾产教融合育人基地

科技热闻

信通院首批AIOps系统和工具评估,博睿数据获评异常检测模块“全面级”

博睿数据

语音信号处理14:语音信号的特征应用

轻口味

28天写作 12月日更

年底了,聊聊述职

CatTalk

职场

2021年终总结

hasWhere

AI风起荆楚,人工智能中国体系即刻启航

脑极体

设计消息队列存储消息数据的 MySQL 表格

奔奔

Hoo虎符研究院 | 币圈后浪——Swivel Finance

区块链前沿News

Hoo虎符 虎符交易所 虎符研究院

一文带你了解数据库设计基础

坚果

数据库 28天写作 12月日更

百度CTO王海峰:AI大生产平台再升级 助力中国科技自立自强

百度大脑

人工智能

项目开发架手架规划

hasWhere

世界女性科技群落(四):技术与流行文化顶格发展,日韩女性的科技暗面

脑极体

高性能队列Disruptor在测试中应用

FunTester

Disruptor 测试 性能测试 高性能队列 FunTester

忆父亲

wood

28天写作 父亲

Spring框架基础知识(01)

海拥(haiyong.site)

28天写作 12月日更

2021百度AI开发者大会在元宇宙举办

百度大脑

人工智能

Java 必看的 Spring 知识汇总!

CRMEB

Fortinet :《2021 年OT与网络安全现状报告》 之「要点综述」

喀拉峻

网络安全

如何促进用户首次下单?

石云升

AARRR 产品思维 28天写作 产品增长 12月日更

【网络安全】针对 HTTP/2 协议的HTTP Desync攻击

H

网络安全 信息安全 漏洞

11月云短信报告出炉,腾讯云再次蝉联到达率冠军

博睿数据

当 Redis 发生高延迟时,到底发生了什么

程序员历小冰

redis 延迟 28天写作 12月日更

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