阅读更多
淘宝Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu、内存、硬盘的统一利用,从而获取到强大计算能力去解决复杂问题:

  • Fourinone框架提供了一系列并行计算模式(农民工/包工头/职介绍/手工仓库)用于利用多机多核cpu的计算能力;
  • 提供完整的分布式缓存和小型缓存用于利用多机内存能力;
  • 提供像操作本地文件一样操作远程文件(访问、并行读写、拆分、排他、复制、解析、事务等)用于利用多机硬盘存储能力;
  • 由于多计算机物理上独立,Fourinone框架也提供完整的分布式协同和锁以及简化MQ功能,用于实现多机的协作和通讯。
Fourinone 2.0新增功能:

1. 提供了对分布式文件的便利操作,将集群中所有机器的硬盘资源利用起来,通过统一的fttp文件路径访问,如:

Windows:fttp://v020138.sqa.cm4/d:/data/a.log
Linux:fttp://v020138.sqa.cm4/home/user/a.log

比如以这样的方式读取远程文件:

 FttpAdapter fa = FttpAdapter("fttp://v020138.sqa.cm4/home/log/a.log");
 fa.getFttpReader().readAll();

2.  提供对集群文件的操作支持,包括:

  • 元数据访问,添加删除,按块拆分, 高性能并行读写,排他读写(按文件部分内容锁定),随机读写,集群复制等
  • 对集群文件的解析支持(包括按行,按分割符,按最后标识读取)
  • 对整形数据的高性能读写支持(ArrayInt比ArrayList存的更多更快)
  • 两阶段提交和事务补偿处理
  • 自带一个集群文件浏览器,可以查看集群所有硬盘上的文件(不同于hadoop的namenode,没有单点问题和容量限制)
总的来说,将集群看做一个操作系统,像操作本地文件一样操作远程文件。

但是fourinone并不提供一个分布式存储系统,比如文件数据的导入导出、拆分存储、负载均衡,备份容灾等存储功能,不过开发人员可以利用这些API去设计和实现这些功能,用来满足自己的特定需求。

更多介绍请看使用指南:

一、如何搭建配置FttpAdapter环境
二、如何访问集群文件根目录
三、如何访问和操作远程文件
四、如何进行集群内文件复制和并行复制
五、如何读写远程文件
六、如何解析远程文件
七、如何并行读写远程文件
八、如何批量并行读写远程文件和事务补偿处理

3.  自动化class和jar包部署

class和jar包只需放在工头机器上, 各工人机器会自动获取并执行,兼容操作系统,不需要进行安全密钥复杂配置

4.  网络波动状况下的策略处理,设置抢救期,抢救期内网络稳定下来不判定结点死亡

下载地址:http://www.skycn.com/soft/68321.html
9
0
评论 共 15 条 请登录后发表评论
15 楼 jack.yujun 2012-06-06 00:31
如果淘宝系统都这么写,估计死都不知道怎么死的。
14 楼 jack.yujun 2012-06-06 00:27
名字很贴切“四不像”
13 楼 jack.yujun 2012-06-06 00:21
从c++刚转行没多久才开始学java?
12 楼 jack.yujun 2012-06-06 00:18
这是淘宝团队的人写的吗?一个字“晕”
11 楼 zhangjunbao 2012-06-05 11:18
java_user 写道
这个不会是轮子吧

我是说其他有类似需求的大厂,比如百度腾讯新浪可能会根据自己的需求搞自己的一套,而一般不会用淘宝的这套
10 楼 java_user 2012-06-05 10:47
这个不会是轮子吧
9 楼 zhangjunbao 2012-06-05 10:22
阿里系的开源精神确实很赞!
不过类似这样一些开源产品受众比较小, 一般用户(比如我:)用不上,有需要的可能他们都自己轮一个, 当然必然有值得学习借鉴的地方,

国内开源路漫漫啊
8 楼 fourinone 2012-06-05 10:14
netcafe 写道
这是开源还是没开源啊?下载地址居然是skycn也太不专业了吧。

下载地址跟是否专业没有关系,淘宝开源平台taocode后续也会发布。
希望关注者不要只是好奇和跟风,在技术上要形成自己的悟性和判断,用与不用,能否解决自己的业务需要,能否满足自己的性能要求,最好来源自己的实践检验。
开源软件都是放在那里给有需要的人下载,从不强迫任何人使用,对其他框架的爱好者和信任者,可以借鉴参考,如果提具体技术意见也欢迎。
7 楼 netcafe 2012-06-05 01:20
这是开源还是没开源啊?下载地址居然是skycn也太不专业了吧。
6 楼 cosmo1987 2012-06-04 20:42
zouruixin 写道
淘宝不是有HSF了吗,这个跟HSF的联系是?

HSF应该是SOA架构的吧
5 楼 kenail 2012-06-04 20:38
应用于哪种典型场景?
4 楼 zouruixin 2012-06-04 16:42
淘宝不是有HSF了吗,这个跟HSF的联系是?
3 楼 dieslrae 2012-06-04 16:07
这玩意淘宝自己应用的情况怎么样,不会是让我们来当小白鼠吧
2 楼 aking222 2012-06-04 15:08
请问作者是淘宝的人吗?
1 楼 alyouge 2012-06-04 13:21
good 支持下

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 编译/仿真 报错记录

    之前编译是通过的,在修改了几个文件中的东西之后,编译报错,但是此test_base文件并未修改,所以去看修改的地方是否有问题,没有问题的话,就去看此文件的上一文件是否有错误。报错行中使用了13行声明的utx_tr,加入了23行的例化后,不再报错。编译通过,仿真报ERROR,如标题。

  • 2021-05-04

    标题:UVM中含monitor & scoreboard的实验,当遇到报错Error-[NOA] null object access后的解决办法 Linux终端跑遇到报错情况如下图 图中提示router_env.sv第123行有问题,仔细一看是object 没被分配就使用致错,应该是scoreboard里面的类,要声明并创建,才能使用, 前面已经例化scoreboard sb 在报错的virtual function内容前加入一行: 至于为什么用create而不用new,读者思考一下吧,回答上了

  • 基于systemVerilog的UVM 调试问题及解决办法集锦

    说在前头 目前接触的UVM内容都是基于systemVerilog的。所以,碰到的问题主要基于sv。 一、低级语法错误 此类错误是由于一些低级操作或常识不清导致的,并很容易解决。 多为语法错误。 1、信号赋值 信号主要分为wire型和reg型。 在进行信号赋值时,wire型信号不能出现在等号左边只能在右边,reg型信号可以出现在等号左边和右边。故,当不小心把wire型信号放在等...

  • 发现了一个UVM源码的bug

    瞎用,发现了一个UVM-1.2中uvm_reg_map.svh的bug。详细见下图红框中的代码: 既然child_blk是null,那么除了能调用其静态方法外,其他方法(默认都是动态类型)是不能调用的。所以第1145行中红框中的代码是错误的,会报null object access 错误。并且1142行的uvm_error永远不会打印,每次运行到1142就报null object acces...

  • UVM编译报错

    uvm仿真

  • Virtual Machine Monitor source

    /* Virtual Machine Monitor Copyright (C) 2007 Shawn Embleton This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License

  • webdynpro表格中列的排序

    一个文章写得不错 http://www.saptechnical.com/Tutorials/WebDynproABAP/Sort/tablecolumn.htm 不过这句话 wd_table ?= view->get_element( 'TABLE' ). 需要注意的是TABLE表示的是webdynpro里面表格的属性名称。如果表格的名称与这里不匹配则会报Access via 'NULL' object reference not possible 错误。 wd_this->tab

  • null object reference根本原因_读懂Java的Reference和ReferenceQueue

    原文:https://blog.csdn.net/gdutxiaoxu/article/details/80738581从基础讲起Reference主要是负责内存的一个状态,当然它还和java虚拟机,垃圾回收器打交道。Reference类首先把内存分为4种状态Active,Pending,Enqueued,Inactive。ReferenceQueue引用队列,在检测到适当的可到达性更改后,垃圾回...

  • Null Object(空对象)模式

      Employee e = DB.getEmployee("Bob"); //判断雇员e是否应该今天发薪水,如果是,则发 if(e != null && e.isTimeToPay(today)) e.pay();     如果Bob对象不存在,e就是一个null,然后&&的第一个表达式会被首先求值,而仅当第一个表达式为true时才...

  • net.sf.json.JSONObject 为 null 的判断

    做项目时,遇到这么一个坑:如何判断一上json 是否为空, 开始的代码是这样的:JSONObject detail = JSONObject.fromObject("123"); if (detail == null) { detail = new JSONObject(); }发现有问题,无论怎么调整字符串的内容,都不会走 new Jsonobject() 。各种试,各种问,最后没办法了

  • Passing pointers to functions

    Don’t! ▪Ownership is ambiguous ▪It implies the argument can be null Prefer a reference if the function is only observing the argument Use a unique_ptr or auto_ptr if you pass ownership to the fu

  • lucen报错 value cannot be null

    今天在测试lucene 创建索引时,公司的测试环境一直报这个错。not null?? 这个不就是个值传空了吗,so easy! 然而事情并没有这么简单,因为这个报错指向的是我的luceneutil类 ,这个里面经过几代人的测试难道会有问题?? 我一脸懵逼,所以只有一个可能就是从数据库里返回的数据为空了,打印一下list的size看一下 == 1604! ! wtf! 什么鬼! 明明有数据 还会...

  • python怎么让矩阵内所有元素自己平方_Python | 加一行注释,让你的程序提速10+倍!numba库十分钟上手指南...

    如果你在使用Python进行高性能计算,Numba提供的加速效果可以比肩原生的C/C++程序,只需要在函数上添加一行@jit的装饰。它支持CPU和GPU,是数据科学家必不可少的编程利器。之前的文章PP鲁:计算机基础系列:源代码如何被计算机执行​zhuanlan.zhihu.com已经提到计算机只能执行二进制的机器码,C、C++等编译型语言依靠编译器将源代码转化为可执行文件后才能运行,Python...

  • JavaSE学习总结(九)常用类(中)/StringBuffer类/StringBuilder与StringBuffer的区别/二分查找/Arrays类/包装类/Integer类/自动装箱与自动拆箱

    常用类(中) 一、StringBuffer类 (一)概述 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题,当对字符串进行修改的时候,需要使用 StringBuffer类(或StringBuilder类)。StringBuffer是线程安全的可变字符序列。 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。 (二)StringBu

  • Origin null is not allowed by Access-Control-Allow-Origin解决方案

    今天学习mootools的ajax时候,遇到一个问题, 页面和ajaxData.txt在同一个目录下,查了一下是浏览器的安全机制导致的:浏览器会禁止加载本地文件。如果把文件或者是整个工程放在服务器上就不会存在这个问题了。 还有一种解决方案,就是在启动浏览器的时候修改启动参数: --allow-file-access-from-files

  • java.lang.IllegalArgumentException: non null key required

    redis缓存数据时报过这个错误,我的错误原因是存是数据是空,存之前加个非空判断就可以了

  • Kotlin中的可空性解读

    参数传入可空性 可空性是kotlin类型系统为了避免发生NullPointerException错误的特性. 如下一段java代码 /*Java*/ int strLen(String s){ return s.length(); } 复制代码如果调用的时候我们这样去调用strLen(null), 这样一定会抛出NullPointerException. 下面我们用kotlin来改造它 ...

Global site tag (gtag.js) - Google Analytics