写点什么

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

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

关注

评论

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

学会了axios封装,世界都是你的

CRMEB

存储大师班 | 浅谈 RDMA 与无损网络

QingStor分布式存储

网络 分布式存储

一个简单的字符串,为什么-Redis-要设计的如此特别?

Java 程序员 后端

一文彻底帮你打通SpringAOP的任督二脉,大厂高薪指日可待,建议收藏!!!

Java 程序员 后端

三种常见的限流算法

Java 程序员 后端

三面微软,四面雅虎,外企面经复盘总结,那些你不知道的面试技巧

Java 程序员 后端

WeTest六周年|质领未来,向新而行

WeTest

不是吧!你还不会在微服务中如何设计一个权限授权服务?

Java 程序员 后端

一文参透:缓存一致性策略以及雪崩、穿透等问题

Java 程序员 后端

一文看懂mybatis底层运行原理解析

Java 程序员 后端

移动千牛开放体验治理实践与防治方案

阿里巴巴终端技术

ios android 用户体验 舆情分析 移动端

【设计模式系列24】GoF23种设计模式总结及软件设计7大原则

Java 程序员 后端

阿里 P8大牛的 Maven学习笔记,在 GitHub上仅一天就获赞 上万

Java maven 编程 程序员

不就是Redis吗?竟让我一个月拿了8个offer,其中两家都是一线大厂

Java 程序员 后端

两年CRUD,没料到我这渣二本,备战两个月面试阿里,居然侥幸拿下P6的offer

Java高级开发

【面试准备】Spring框架面试题

Java 程序员 后端

现代APaaS产品的5C特点

明道云

一文看懂 Redis 的持久化

Java 程序员 后端

万字长文!从底层开始带你了解并发编程,彻底帮你搞懂Java锁!

Java 程序员 后端

三分钟:极速体验JAVA版目标检测(YOLO4)

Java 程序员 后端

三年开发,头铁面试阿里4面技术+1面HR,终获offer

Java 程序员 后端

《Linux一学就会》第三章:文件系统的管理方法和xfs文件系统备份恢复

侠盗安全

Linux linux运维 云计算架构师

一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官

Java 程序员 后端

JDK16的新特性

程序那些事

Java 程序那些事 java16 11月日更 JDK16

一文快速搞懂Redis的几种数据类型

Java 程序员 后端

一文带你快速搞懂动态字符串SDS,面试不再懵逼

Java 程序员 后端

架构实战营 模块四作业

felix

架构实战营

上线GitHub七天后就标星87

Java 程序员 后端

一周4大厂Java开发岗面试日记(已拿offer)

Java 程序员 后端

七年阿里升级路,熬到P7,想给正在成长的Java程序员一点建议

Java 程序员 后端

一个CURD三年的Java程序员刷完这份《阿里面试指南(恒山版)》

Java 程序员 后端

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