Fourinone分布式计算框架

上传者: fourinone | 上传时间: 2021-04-25 19:39:13 | 文件大小: 82KB | 文件类型: RAR
FourInOne(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我也看了老外写的其他开源框架,也对分布式计算进行了长时间的思考,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机器一起用起来计算,把更多的cpu和内存利用上,来解决我们数量大和计算复杂的问题,当然这个过程中要考虑到分布式的协同和故障处理。如果仅仅是为了实现这个简单的初衷,为什么一切会那么复杂,我觉的自己可以写一个更简单的东西,它不需要过度设计,只需要看上去更酷一点,更小巧一点,功能更强一点。于是我将自己对分布式的理解融入到这个框架中,考虑到底层实现技术的相似性,我将Hadoop,Zookeeper,MQ,分布式缓存四大主要的分布式计算功能合为一个框架内,对复杂的分布式计算应用进行了大量简化和归纳。 首先,对分布式协同方面,它实现了Zookeeper所有的功能,并且做了很多改进,包括简化Zookeeper的树型结构,用domain/node两层结构取代,简化Watch回调多线程等待编程模型,用更直观的容易保证业务逻辑完整性的内容变化事件以及状态轮循取代,Zookeeper只能存储信息不大于1M的内容,FourInOne超过1M的内容会以内存隐射文件存储,增强了它的存储功能,简化了Zookeeper的ACL权限功能,用更为程序员熟悉rw风格取代,简化了Zookeeper的临时节点和序列节点等类型,取代为在创建节点时是否指定保持心跳,心跳断掉时节点会自动删除。FourInOne是高可用的,没有单点问题,可以有任意多个复本,它的复制不是定时而是基于内容变更复制,有更高的性能,FourInOne实现了领导者选举算法(但不是Paxos),在领导者服务器宕机情况下,会自动不延时的将请求切换到备份服务器上,选举出新的领导者进行服务,这个过程中,心跳节点仍然能保持健壮的稳定性,迅速跟新的领导者保持心跳连接。基于FourInOne可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。 其次, FourInOne可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上百万的并发读写吞吐量,会超出单台服务器的承受力,FourInOne提供了fa?ade的解决方案去解决大集群的分布式缓存,利用硬件负载均衡路由到一组fa?ade服务器上,fa?ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的跟这个时间匹配,这样在扩容后还能准确找到之前分配到的服务器。另外,基于FourInOne可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。 FourInOne对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。FourInOne有“包工头”,“农民工”,“手工仓库”的几个核心概念。“农民工”为一个计算节点,可以部署在多个机器,它由开发者自由实现,计算时,“农民工”到“手工仓库”获取输入资源,再将计算结果放回“手工仓库”返回给“包工头”。“包工头”负责承包一个复杂项目的一部分,可以理解为一个分配任务和调度程序,它由开发者自己实现,开发者可以自由控制调度过程,比如按照“农民工”的数量将源数据切分成多少份,然后远程分配给“农民工”节点进行计算处理,它处理完的中间结果数据不限制保存在hdfs里,而可以自由控制保存在分布式缓存、数据库、分布式文件里。如果需要结果数据的合并,可以新建立一个“包工头”的任务分配进行完成。多个“包工头”之间进行责任链式处理。总的来说,是将大数据的复杂分布式计算,设计为一个链式的多“包工头”环节去处理,每个环节包括利用多台“农民工”机器进行并行计算,无论是拆分计算任务还是合并结果,都可以设计为一个单独的“包工头”环节。这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且链式的每个环节也方便进行监控过程。 FourInOne也可以当成简单的mq来使用,将domain视为mq队

文件下载

资源详情

[{"title":"( 35 个子文件 82KB ) Fourinone分布式计算框架","children":[{"title":"fourinone.jar <span style='color:#111;'> 69.21KB </span>","children":null,"spread":false},{"title":"config.xml <span style='color:#111;'> 1.59KB </span>","children":null,"spread":false},{"title":"分布式并行计算四合一框架FourInOne介绍.txt <span style='color:#111;'> 4.39KB </span>","children":null,"spread":false},{"title":"demo","children":[{"title":"MQ demo","children":[{"title":"Sender.java <span style='color:#111;'> 448B </span>","children":null,"spread":false},{"title":"ParkServerDemo.java <span style='color:#111;'> 147B </span>","children":null,"spread":false},{"title":"Subscriber.java <span style='color:#111;'> 997B </span>","children":null,"spread":false},{"title":"Publisher.java <span style='color:#111;'> 662B </span>","children":null,"spread":false},{"title":"Receiver.java <span style='color:#111;'> 720B </span>","children":null,"spread":false}],"spread":true},{"title":"分布式缓存demo","children":[{"title":"CacheGetDemo.java <span style='color:#111;'> 574B </span>","children":null,"spread":false},{"title":"CachePutDemo.java <span style='color:#111;'> 621B </span>","children":null,"spread":false},{"title":"CacheServer.java <span style='color:#111;'> 736B </span>","children":null,"spread":false},{"title":"ParkServerDemo.java <span style='color:#111;'> 147B </span>","children":null,"spread":false},{"title":"CacheFacadeDemo.java <span style='color:#111;'> 155B </span>","children":null,"spread":false}],"spread":true},{"title":"统一配置管理demo","children":[{"title":"SetConfig.java <span style='color:#111;'> 402B </span>","children":null,"spread":false},{"title":"GetConfigB.java <span style='color:#111;'> 549B </span>","children":null,"spread":false},{"title":"ParkServerDemo.java <span style='color:#111;'> 147B </span>","children":null,"spread":false},{"title":"ParkMasterSlave.java <span style='color:#111;'> 499B </span>","children":null,"spread":false},{"title":"GetConfigA.java <span style='color:#111;'> 420B </span>","children":null,"spread":false}],"spread":true},{"title":"分布式锁demo.txt <span style='color:#111;'> 497B </span>","children":null,"spread":false},{"title":"集群管理demo.txt <span style='color:#111;'> 1.47KB </span>","children":null,"spread":false},{"title":"分布式计算完整demo.txt <span style='color:#111;'> 1.76KB </span>","children":null,"spread":false},{"title":"分布式计算完整demo","children":[{"title":"CtorDemo.java <span style='color:#111;'> 1.21KB </span>","children":null,"spread":false},{"title":"WorkerDemo.java <span style='color:#111;'> 581B </span>","children":null,"spread":false},{"title":"ParkServerDemo.java <span style='color:#111;'> 147B </span>","children":null,"spread":false}],"spread":true},{"title":"分布式计算上手demo.txt <span style='color:#111;'> 1.47KB </span>","children":null,"spread":false},{"title":"分布式缓存demo.txt <span style='color:#111;'> 1.12KB </span>","children":null,"spread":false},{"title":"MQ demo.txt <span style='color:#111;'> 1.98KB </span>","children":null,"spread":false},{"title":"分布式锁demo","children":[{"title":"LockDemo.java <span style='color:#111;'> 889B </span>","children":null,"spread":false},{"title":"ParkServerDemo.java <span style='color:#111;'> 147B </span>","children":null,"spread":false}],"spread":false},{"title":"分布式计算上手demo","children":[{"title":"SimpleCtor.java <span style='color:#111;'> 682B </span>","children":null,"spread":false},{"title":"ParkServerDemo.java <span style='color:#111;'> 147B </span>","children":null,"spread":false},{"title":"SimpleWorker.java <span style='color:#111;'> 449B </span>","children":null,"spread":false}],"spread":false},{"title":"统一配置管理demo.txt <span style='color:#111;'> 1.54KB </span>","children":null,"spread":false},{"title":"集群管理demo","children":[{"title":"GroupServer.java <span style='color:#111;'> 555B </span>","children":null,"spread":false},{"title":"GroupManager.java <span style='color:#111;'> 496B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}]

评论信息

  • xu_123 :
    看了一遍,比较经典,谢谢
    2018-10-29
  • sunglowlee_whu :
    fourinone的原理与实现都不复杂,作为教学案例倒是比较合适。
    2015-09-30
  • euhujuia001 :
    学习一下,正在研究框架
    2015-06-06
  • liandaoqw001 :
    学习一下,正在研究框架
    2015-05-24
  • 天与地空 :
    正在学习中,很有帮助
    2015-05-07
  • wuwo0001 :
    很好很好,值得参考
    2014-12-20
  • Biocomecorp :
    分布式工具很好,不知如何使用
    2014-12-04
  • 倩倩的闹钟 :
    用了一下,效果不错,感谢!
    2014-11-27
  • guidguid :
    很好的思路,可以用在很简单的业务场合!
    2014-10-03
  • jylaxp :
    学习一下,正在研究框架
    2014-08-30

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明