阿里巴巴开源技术汇总:115个软件(三)

本文介绍了阿里近期开源的20个项目,涵盖了跨平台移动开发、文件系统、数据库管理等多个领域,如Weex、TFS和DataX等,展示了阿里的技术创新实力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hi~大家好,第三期阿里开源技术汇总又和大家见面了!在这一期中我们又给大家带来了20个项目的介绍,保证能让你们看得大呼过瘾。准备好了吗?现在就让我们跟随云栖社区一起看看在这期的文章里出现的哪些新鲜刺激的开源项目吧!
1.Weex
【项目简介】

Weex是阿里近日在Qcon大会上宣布开源的一款跨平台移动开发工具。Weex不仅能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,而且并支持iOS、安卓、YunOS及Web等多端部署。

【架构图】


abce0c3d41ad8f3c4e18c8f64af9fb6271e3af7c

【官网地址】 http://alibaba.github.io/weex



2.Apns4j

【项目简介】
apns4j 是 Apple Push Notification Service 的 Java 实现,目前1.0.1版已经发布。
【源码托管地址】 https://github.com/teaey/apns4j

3.BugFree
【项目简介】

BugFree 是一款借鉴微软公司软件研发理念、免费且开放源代码、基于Web的精简版Bug管理系统。BugFree基于PHP和MySQL开发,其服务器端在Linux和Windows平台上都可以运行;客户端也无需安装任何软件,通过IE,FireFox等浏览器就可以自由使用。使用这款软件,企业可以保证质量、控制进度,并使产品可持续发展。

【架构图】


becc5217c2dc074f5f40534dffbdc74fe8977df5

【源码托管地址】https://github.com/taobao/BugFree



4.TDDL

【项目简介】
TDDL(Taobao Distributed Data Layer),是淘宝根据自己的业务特点开发了框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。它具有以下优点:
1.数据库主备和动态切换2.带权重的读写分离3.单线程读重试4.集中式数据源信息管理和动态变更5.剥离的稳定jboss数据源6.支持mysql和oracle数据库7.基于jdbc规范,很容易扩展支持实现jdbc规范的数据源8.无server,client-jar形式存在,应用直连数据库9.读写次数,并发度流程控制,动态变更10.可分析的日志打印,日志流控,动态变更。

【架构图】


c0da3ca82d757b5a144b10ffebebd809a8739d98

【源码托管地址】 https://github.com/alibaba/tb_tddl



5.PHPWind
【项目简介】

PHPWind是阿里开发的一套论坛系统。它采用 php+mysql 数据库,运行并可生成 html 页面的全新且完善的强大系统。它具有网站统筹化、技术专业化、友好人性化三大特点,出色的访问速度和卓越的负载能力更令它深受国内外朋友的喜爱。

【源码托管地址】 https://github.com/alibaba/phpwind


6.TFS
【项目简介】

TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。

【架构图】


7007ed6d3e77ea7c6314e57eff10de0b4ab08b35

【源码托管地址】 https://github.com/alibaba/tfs


7.Webx
【项目简介】

Webx是建立在Java Servlet API基础上的通用WEB框架。用Webx搭建的应用可以运行在任何一个标准的WEB应用服务器上面:Tomcat、Jetty、Jboss、Weblogic。 Webx是基于经典MVC设计模式的WEB框架Spring,并且可以被其它组件扩展。Webx不仅能够用来开发高度可定制的Web应用,也能够用来帮助用户开发高度可扩展的非WEB的应用。目前Webx在阿里巴巴集团内部被广泛使用。

【架构图】


53818cfb6164e6f31d68c83f7f561c84be89a49f

【源码托管地址】 https://github.com/webx/citrus


8.FourInOne
【项目简介】

FourInOne(中文名字“四不像”)是一个四合一分布式计算框架。它提供了四合一的分布式框架功能(即整合了Hadoop、Zookeeper、MQ、分布式缓存的主要功能)和简单易用的编程API,从而实现了对多台计算机CPU、内存、硬盘的统一利用,最终获取到强大计算能力去解决复杂问题。

【架构图】


6058a976eca7317df4bf883cbddd199b2400d3bf

【源码托管地址】 http://git.oschina.net/fourinone/fourinone


9.Uploader
【项目简介】

Uploader是一个非常强大的异步文件上传组件,支持ajax、iframe、flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证、图片预览、进度条等,广泛应用于淘宝网,比如退款系统、爱逛街、二手、拍卖、我的淘宝、卖家中心、导购中心等。

【架构图】


3a53211f24ed1613b319a0269e61ea3715bdfa67

【源码托管地址】 https://github.com/kissygalleryteam/uploader


10.DataX
【项目简介】

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。目前DataX在淘宝内部每天约有5000道同步任务分布在全天各个时段,平均每天同步数据量在2-3TB。

【架构图】


c612ff4d4d64c1077e1136435a169a891ff14bc1

【源码托管地址】 https://github.com/alibaba/DataX


11.Httpsender
【项目简介】

httpsender是一款轻量级的http压力测试工具,由淘宝的测试工程师用Java语言开发完成。它可以指定并发连接数发送指定数目的请求,还可以自定义请求的header头。请求的URL支持通过正则表达式指定范围,同时也支持从文件随机或顺序读取。它还具备验证数据是否完整和错乱等较高级的功能。默认应用环境为Linux。

【源码托管地址】http://dl.dbank.com/c0vxx27aa5


12.CobarClient
【项目简介】

CobarClient是一个基于iBatis和Spring的轻量级分布式数据访问框架(DDAL)。它具有一些特点:主要特性:
①可以支持垂直和水平数据切分数据库集群的访问;
②支持双机热备的HA解决方案, 应用方可以根据情况选用数据库特定的HA解决方案(比如Oracle的RAC),或者选用CobarClient提供的HA解决方案.
③小数据量的数据集计(Aggregation), 暂时只支持简单的数据合并.
④数据库本地事务的支持, 目前采用Best Efforts 1PC模式的事务管理.
⑤数据访问操作相关SQL的记录, 分析等.(可以采用国际站现有Ark解决方案,但CobarClient提供扩展的切入接口)

【架构图】


62026dd9ac453e7238812d58a478a3601e49ab27

【源码托管地址】 https://github.com/alibaba/cobarclient


13.F2etest 
【项目简介】

F2etest是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。通过在项目中采用开源的HTML5远程解决方案Guacamole、Server版Windows和跨浏览器、跨服务器的hosts共享技术hostsShare,F2etest最终实现了以下的功能:
①硬件利用率提高10倍以上,降低了企业运营成本
②提供极佳的用户体验,因而提高了测试效率
③提供真实浏览器环境,还原真实测试场景

【架构图】


5d13cdb4c67a9bd23b04b596478ef42dbbb3fea4

【源码托管地址】 https://github.com/alibaba/f2etest



14.AliRedis 
【项目简介】

AliRedis是阿里团队针对Redis日常维护中出现的不足而在Redis原有基础上做出的深度改进。具体而言,AliRedis采用多线程master + N*work 工作模式,并且抛弃save, bgsave, aof等三种原有的模式.采用redisDB lock模式,除此之外,它还优化了jemalloc, 采用大内存页。

【架构图】


a04023731884ef5635207f6c1a66b4c3d80df8a1




15.Canal 
【项目简介】

Canal是纯Java开发的数据异地同步工具。它能够提供的基于日志增量订阅和消费支持的业务有:
①数据库镜像
②数据库实时备份
③多级索引 (卖家和买家各自分库索引)
④search build
⑤业务cache刷新
⑥价格变化等重要业务消息
目前Canal主要支持了mysql。

【架构图】


161b1ea8a7ab832ec8be5017f3a3fcfcc4568291

【源码托管地址】 https://github.com/alibaba/canal


16.Taocode
【项目简介】

taocode(淘蝌蚪)是淘宝网推出的开源平台。它具有平台化和社区化两个特征。
1).平台化
a) 完善项目管理过程工具平台
b) 提供更多代码级工具
c) 提供更多文档化工具
2).社区化
a). 提供更好的交流平台
b). 增加更多的持续性生态化平台功能

【架构图】


86f80d5643fe43201e1d71e620bb0316be701a58

【官网】http://code.taobao.org/


17.JStorm
【项目简介】

Storm 是一个类似Hadoop MapReduce的系统。如果用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker。因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm一套类似MapReduce的调度系统。 从数据的角度, 是一套基于流水线的消息处理机制。

【架构图】


d3c93c463b1b8669e336523b7f1539fe9bc96d51

【源码托管地址】 https://github.com/alibaba/jstorm


18.Athrun
【项目简介】

Athrun以Mobile自动化为基础,以PC2Mobile为切入点,是淘宝Mobile测试日常工作必备的平台。目前Athrun支持:
①Android上的自动化测试,包括自动化测试框架,持续集成体系。覆盖率工具和自动录制回放工具,也在试用完善中。
②iOS上的自动化测试,包括注入式自动化框架AppFramework,和基于录制的非注入式自动化框架Athrun_IOS,还有持续集成体系。目前两个框架在淘宝测试内都有用户群,都还在不断使用和演进过程中。AppFramework将会支持socket通信方式。

【源码托管地址】 http://code.taobao.org/p/athrun/src/


19.Cobar
【项目简介】

Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。自Cobar实际投入运用以来,它接管了3000+个MySQL数据库的schema,集群日处理在线SQL请求50亿次以上。
集群日处理在线数据流量TB级别以上,并且到目前为止,该产品在阿里巴巴稳定运行3年以上。

【架构图】


7149bbafbe1535e5ef938061ec7c974a8778d6ae

【源码托管地址】 https://github.com/alibaba/cobar


20.TaoLinux
【项目简介】

TaoLinux是淘宝团队基于淘宝多年服务器优化积累, 内核优化经验对Linux做出的改版。它默认安装tengine等服务 没有GUI界面 基于RHEL 6.2。

【源码托管地址】 http://code.taobao.org/p/taobao_linux_server


【相关链接】

阿里巴巴开源技术汇总:115个软件(一)
阿里巴巴开源技术汇总:115个软件(二)
阿里巴巴开源技术汇总:115个软件(三)
阿里巴巴开源技术汇总:115个软件(四)
阿里巴巴开源技术汇总:115个软件(五)
阿里巴巴开源技术汇总:115个软件(六)


【云栖社区】:对于开源的内容选题,我们也有最新的规划。欢迎对阿里技术开源感兴趣的社区/社群、媒体伙伴和技术开发者,联系社区,一起打造。有意者,可邮件:yqeditor@list.alibaba-inc.com ,邮件主题标注:开源选题策划

  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队列,每个node为一个队列消息,监控domain的变化事件来获取队列消息。也可以将domain视为订阅主题,将每个订阅者注册到domain的node上,发布者将消息逐一更新每个node,订阅者监控每个属于自己的node的变化事件获取订阅消息,收到后删除内容等待下一个消息。但是Fourinone不实现JMS的规范,不提供JMS的消息确认和消息过滤等特殊功能,不过开发者可以基于Fourinone自己去扩充这些功能,包括mq集群,利用一个独立的domain/node建立队列或者主题的key隐射,再仿照上面分布式缓存的智能根据key定位服务器的做法实现集群管理。   Fourinone整体代码短小精悍,跟Hadoop, Zookeeper, Memcache, ActiveMq等开源产品代码上没有任何相似性,不需要任何依赖,引用一个jar包就可以嵌入式使用,良好支持window环境,可以在一台机器上模拟分布式环境,更方便开发。   开发包里自带了一系列傻瓜上手demo,包括分布式计算、统一配置管理、集群管理、分布式锁、分布式缓存、MQ等方面, 每个demo均控制在少许行代码内,但是涵盖了Fourinone主要的功能,方便大家快速理解并掌握。   Fourinone 2.0新增功能:   Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。Fourinone框架提供了一系列并行计算模式(农民工/包工头/职介绍/手工仓库)用于利用多机多核cpu的计算能力;提供完整的分布式缓存和小型缓存用于利用多机内存能力;提供像操作本地文件一样操作远程文件(访问,并行读写,拆分,排它,复制,解析,事务等)用于利用多机硬盘存储能力;由于多计算机物理上独立,Fourinone框架也提供完整的分布式协同和锁以及简化MQ功能,用于实现多机的协作和通讯。   一、提供了对分布式文件的便利操作, 将集群中所有机器的硬盘资源利用起来,通过统一的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();   提供对集群文件的操作支持,包括:   1、元数据访问,添加删除,按块拆分, 高性能并行读写,排他读写(按文件部分内容锁定),随机读写,集群复制等   2、对集群文件的解析支持(包括按行,按分割符,按最后标识读取)   3、对整形数据的高性能读写支持(ArrayInt比ArrayList存的更多更快)   4、两阶段提交和事务补偿处理   5、自带一个集群文件浏览器,可以查看集群所有硬盘上的文件(不同于hadoop的namenode,没有单点问题和容量限制)   总的来说, 将集群看做一个操作系统,像操作本地文件一样操作远程文件。   但是fourinone并不提供一个分布式存储系统,比如文件数据的导入导出、拆分存储、负载均衡,备份容灾等存储功能,不过开发人员可以利用这些api去设计和实现这些功能,用来满足自己的特定需求。   二、自动化class和jar包部署   class和jar包只需放在工头机器上, 各工人机器会自动获取并执行,兼容操作系统,不需要进行安全密钥复杂配置   、网络波动状况下的策略处理,设置抢救期,抢救期内网络稳定下来不判定结点死亡   本软件由www.gg265.net www.fmrpg.com站长提供
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值