【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

关注

评论

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

《专访彩食鲜CTO乔新亮:体系的重要性》(采访提纲)

花花

调查采访能力考核

区块链电子证据的司法应用现状与展望

CECBC

Spring Boot 2.0 实现优雅停机

U2647

Spring Boot 4月日更

HBase HA 分布式部署

Fong

大数据 运维 HBase hadoop3

《采访阿里“守护神”吴翰清:安全攻防-采访提纲》

Geek_6370d5

禁止算法识别性别,能消解歧视吗?

脑极体

分库分表笔记

luojiahu

分库分表

为什么 Serverless 将推动边缘计算的革命

公众号:云原生Serverless

Serverless 边缘计算

今年我读了四个开源项目的源码,来分享下心得

yes

源码

如何从零开始学Python:(4)如何处理列表数据?

广之巅

Python 4月日更

【采访融云CTO杨攀:2021如何让融云迈向更高舞台】(采访)

洛神灬殇

融云 杨攀

白皮书:区块链将成隐私计算产品必选项,提供三方面助力

CECBC

区块链

用户故事是垂直的切片(译)

Bruce Talk

敏捷 译文 Agile User Story

用户故事拆分招数全景图(译)

Bruce Talk

敏捷 译文 Agile User Story

Properties类使用需要注意的坑

风翱

properties 4月日更

没有自信的人,才会在意别人的评价

小天同学

心理 日常思考 个人感悟 4月日更 自信

不忘初心,砥砺前行|暨InfoQ写作平台一周年

程序员架构进阶

28天写作 4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

Ansible 配置

耳东@Erdong

4月日更

浅谈Javascript中的forEach和map之间的区别

devpoint

遍历 foreach map reduce

架构实战营 模块2作业

CR

实体经济与数字经济加速融合 中国经济新动能快速成长

CECBC

数字经济

联盟链技术

360技术

如何做好前馈管理?

石云升

28天写作 职场经验 管理经验 4月日更

翻译:《实用的Python编程》TheEnd

codists

Python

专访声网首席资深iOS研发工程师龚宇华:从自学计算机到高级架构师

黑马腾云

专访

Golang 并发

escray

学习 极客时间 Go 语言 4月日更

重读《重构2》- 以对象取代基本类型

顿晓

重构 4月日更

全网最强的权限系统设计攻略:京东北极星商业系统权限管控实践

学Java关注我

Java 编程 程序员 架构 技术宅

专访吴翰清 || 如何用网络安全保障个人隐私

Bob

网络安全 个人隐私 调查采访能力考核

炫彩无界,性能怪兽,M1 扛鼎未来 —— 2021 年 Apple 春季新品发布会全记录

清秋

产品 苹果 硬件 新闻

python内置数据结构list、set、dict、tuple(一)

若尘

List 数据结构 set 字典 Python编程

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