`
xiaoZ5919
  • 浏览: 404751 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73198
社区版块
存档分类
最新评论

讨论一下淘宝的Fourinone

 
阅读更多
    fourinone号称了集成了hadoop,zk,memcache,mq于一身的四不像超级神器,致力于分布式应用。别的我不懂,今儿聊一下fourinone中的分布式缓存以及分布式文件系统,说到分布式,不得不用到网络通讯,不得不提及RPC,fourinone号称只有100多K,不依赖任何第三方jar,那通讯怎么玩啊!自己用socket或者NIO实现,要知道用NIO实现一个网络通讯框架是很考验技术功底,淘宝的boyan曾经有一篇ppt介绍过NIO的trap和trick.作者当然是绕开这些,使用JDK自带的RMI,RMI这项技术有点老了,我看过JDK的实现还是采用BIO,one request per one thread的方式,序列化采用JDK本身的序列化,性能我不好做评价,因为我没有用过。

   好了回归主题,说一说分布式缓存,主流的分布式缓存我们知道用memcached、redis这两个都很出色,fourinone的分布式缓存类似memcached,只支持kv存储。那他是怎么是实现呢?说到kv存储,HashMap是不二之选,对4in1应该也是用的LinkedHashMap,LinkedHashMap,用额外的链表记录访问顺序,LinkedHashMap提供了一个接口removeEldestEntry,使在插入时有机会删除那些最近不活跃的entry,ok继续,分布式缓存,那网络通讯怎么玩的呢?当然是我们前面提到的RMI。至此了解了分布式缓存的实现,简单吧!我相信各位看官看了我的描述自己也能实现了一个自己把玩一下。

   继续,说一下这样做的问题,分布式系统几乎是为了高并发而设计的,memcache,redis都是这样。HashMap在高并发下又会怎么样呢?我想你此时脑子里会出现一个场景,这是一个坑,HashMap不是线程安全的,在并发情况下扩容会导致死循环从而导致cpu100%。不了解的可以在coolshell上搜一下,或者问度,这是个致命的问题,我不知道作者是怎么解决的,同步加锁,我没有看到sync,用concurrenthashmap貌似也没用吧。因为concurrenthashmap虽然是线程安全的,但是却没有LRU的功能,如果真要实现,得整合Linkedhashmap和concurrenthashmap的功能于一身,淘宝的人这样做过。再来说一下网络通讯,memcached和redis不约而同的使用非阻塞IO epoll,前者使用libevent,redis在libv的肩膀上简化了轮子。我就不用BIO的RMI了。

    说到分布式文件,你会想到那些HDFS,GFS,TFS等等还有好多,还是回到4in1中的fttp,网络通讯怎么玩的呢?fttp,http名字一个字母之差,会不会是http啊,恭喜你猜对了,这时你可能要怀疑,http client好办我用httpurlconnection就可以解决,那http server呢作者内嵌jetty,作者可是号称不依赖任何第三方jar啊难道自己实现一个http server?小伙伴们我们又错了,作者很高端,采用JDK6以后自带的httpserver,关于这个httpserver。这样就可以通过http上传下载文件了,那你说我用jetty和httpclient分分钟就可以分布式文件了,优越感油然而生,信心瞬间爆棚!首先说一下httpserver我读了一下代码,感觉类似还是比较粗放,和Netty没发比,Selector的使用,为了不影响accept事件的阻塞,读写事件都注册到另外一个selector上处理,这样每一个request就会有一个selector,当然作者也才了selector池的处理,使之能够重复使用,但高并发下还是会有很多的selector,而且也会带池的锁开销,再说一下内存管理,每个request都会创建一个buffer,并没有实现内存的管理,这块很粗放,在高并发时GC负担一定很大,感兴趣的小伙伴可以看看netty的实现,作者写过一篇blog说用一个类似伙伴系统和slab内存管理相结合的内存管理方案减少GC。这些且不表,你用过必须制定host以及文件目录的分布式文件系统吗,读写文件时,必须清楚地知道文件在那台机器的那个目录下,orz,这样就要崩溃了

    聊了这么多,小伙伴们也可能觉得我对4in1有偏见,其实不然,我只是觉得作者把这些类似玩具的东东开源并推广给大家,并号称分布式,有时也冠以淘宝的名号,大家都知道淘宝在国内开源的影响,小伙伴们很容易会从盲从,特别是不了解分布式想向分布式方面发展学习的小伙伴们,请大家要一定要擦亮眼睛啊。国内开源的分布式不多,讲分布式的书也不多,就那么几本,在此向大家推荐杨传辉的那本书《大规模分布式存储》,书中对主流的分布式kv,分布式文件系统,分布式表格数据库等都有详细的介绍。

    我曾经加到4in1的企鹅群,问了一句“4in1在淘宝那些场景下用到了,好的项目是经得起质疑的,实践是检验真理的唯一标准”结果我被踢出了群,在OSC以及ITEYE也看到一些同学问道了相同的问题,结果也是同样的下场,我不禁要问,作者是抱着什么样的态度开源呢,是跟大家分享,给大家带来便利,还是忽悠,然后写书忽悠?

   4in1中的并行计算,hadoop没研究过不懂,本文只针对分布式缓存和分布式文件系统
分享到:
评论

相关推荐

    淘宝fourinone 架构原理

    【淘宝FourInOne架构原理详解】 淘宝FourInOne是一款由阿里巴巴集团自主研发的轻量级并行计算框架,它主要用于解决大规模分布式系统中的高并发、低延迟的问题,为电商平台如淘宝提供强大的数据处理能力。该框架的...

    淘宝分布式并行计算四合一框架Fourinone

    《淘宝分布式并行计算四合一框架Fourinone》 在当今大数据时代,高效处理海量数据的能力成为了企业竞争力的关键。淘宝作为中国最大的电商平台,其背后的技术支撑尤为重要。为此,淘宝研发了名为“Fourinone”的...

    淘宝分布式框架fourinone介绍.pptx

    【淘宝分布式框架Fourinone详解】 Fourinone是一款由淘宝开发的轻量级分布式框架,其核心目标是通过整合分布式计算、分布式缓存、一致性、消息队列和分布式文件系统等关键技术,为大型互联网应用提供强大的计算能力...

    fourinone源代码分析

    《fourinone源代码分析》 fourinone是一款分布式协调服务框架,它的设计思路是将任务分配者(工头)和任务执行者(工人)通过一个协调者(职介所)进行连接,实现任务的分布式处理。这个框架的核心概念包括工头进程...

    Fourinone分布式计算框架

    测试由淘宝测试团队执行,时间为2011年11月。 **测试环境配置:** - **分布式计算集群规模:** 总计20台服务器,包括1台控制节点和19台计算节点。 - **硬件配置:** - CPU: Intel Xeon E5520 @ 2.27GHz (4核心) -...

    fourinone配置文件

    别的我不懂,今儿聊一下fourinone中的分布式缓存以及分布式文件系统,说到分布式,不得不用到网络通讯,不得不提及RPC,fourinone号称只有100多K,不依赖任何第三方jar,那通讯怎么玩啊!自己用socket或者NIO实现,...

    分布式计算的fourinone四合一框架设计

    里面包含fourinone所有源码、测试代码 以及说明文档。Fourinone框架是将分布式协同的技术性和故障处理的可行性,把Hadoop、Zookeeper、MQ和分布式缓存的功能合并成一个框架。Fourinone采用的是domain/node两层结构,...

    淘宝分布式框架fourinone介绍.pdf

    淘宝分布式框架Fourinone是一个创新的分布式计算平台,它的诞生是为了解决互联网大型应用在处理大数据时所面临的技术难题。分布式计算框架的出现,极大程度上推动了搜索、云计算、大数据等领域的技术发展。Fourinone...

    Fourinone分布式并行计算四合一框架

    基于Fourinone可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。  其次, Fourinone可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅...

    学习资料:淘宝分布式并行计算四合一框架Fourinone

    学习资料:淘宝分布式并行计算四合一框架Fourinone 内容:淘宝分布式并行计算四合一框架Fourinone详细介绍;源码分析及使用说明;Fourinone分布式计算框架性能、压力、容灾测试报告;框架压缩包 本示例把分配任务的...

    fourinone-master.zip

    "四不像"(FourInOne)是淘宝开发的一款轻量级分布式系统框架,它以其小巧精悍的特性深受开发者喜爱,成为学习分布式系统的重要参考资料。本篇文章将围绕"fourinone-master.zip"这个压缩包,深入剖析四不像的核心...

    fourinone-3.04.25

    淘宝Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想...

    fourinone-2.05.28.rar

    淘宝Fourinone2.0提供了一个4合1分布式框架和简单易用的编程API,实现对多台计算机CPU,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。Fourinone框架提供了一系列并行计算模式(农民工/包工头/职...

    大型分布式架构设计框架fourinone3.04.25

    本源码包含分布式技术的主要应用,分别介绍分布式并行计算的基本概念、分布式协调、分布式缓存、消息队列、分布式文件系统、分布式作业调度平台等,是构建大型分布式网站架构与设计的重要参照和选择。...

    高级java笔试题-fourinone:Fourinone项目

    中级java笔试题四烯酮 淘宝 Fourinone(中文名“四不像”)提供了一个四合一的分布式框架和简单易用的编程api,将多机的CPU、内存...版本:淘宝Fourinone(中文名字“四像”)是一个四合一应用计算框架,在写这个框架之

    fourinone分布式协调设计解析

    《fourinone分布式协调设计解析》 在分布式系统中,协调是至关重要的,它涉及到节点间的通信、数据一致性、故障恢复等多个方面。FourInOne就是这样一款用于解决分布式环境中的协调问题的工具,它提供了一种高效且...

    大数据与云计算培训学习资料 阿里技术 淘宝分布式并行计算四合一框架Fourinone 共40页.pptx

    大数据与云计算培训学习资料 阿里技术 淘宝分布式并行计算四合一框架Fourinone 共40页.pptx

    Fourinone四合一分布式计算框架整体介绍

    《FourInOne四合一分布式计算框架详解》 FourInOne是一个高效的分布式计算框架,它集成了数据并行处理、任务调度、分布式存储和网络通信等功能,为开发者提供了一站式的解决方案,尤其适用于大规模数据处理和分布式...

Global site tag (gtag.js) - Google Analytics