文章来源:开源中国
原文链接:http://www.oschina.net/project/alibaba?sort=view&p=5
来自:IT大佬
导读
阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分。有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件,今天小编为大家汇总了阿里开源的项目,快来看看吧!
服务框架 Dubbo
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
JDBC连接池、监控组件 DruidDruid是一个JDBC组件,它包括三部分:
Java的JSON处理器 fastjsonfastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
分布式文件系统 FastDFS
FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
淘宝Hadoop作业平台 宙斯Zeus
宙斯(zeus)是什么 宙斯是一个完整的Hadoop的作业平台 从Hadoop任务的调试运行到生产任务的周期调度 宙斯支持任务的整个生命周期。
淘宝分布式数据库 OceanBase
OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。
目前OceanBase已经应用于淘宝收藏夹,用于存储淘宝用户收藏条目和具体的商品、店铺信息,每天支持4~5千万的更新操作。等待上线的应用还包括CTU、SNS等,每天更新超过20亿,更新数据量超过2.5TB,并会逐步在淘宝内部推广。
分布式key/value存储系统 Tair
Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。您在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都在直接或间接地和Tair交互。
系统信息采集和监控工具 Tsar
Tsar是淘宝的采集工具,主要用来收集服务器的系统信息(如cpu,io,mem,tcp等)以及应用数据(如squid haproxy nginx等),tsar支持实时查看和历史查看,方便了解应用和服务器的信息!
它类似于sar,能监控和收集服务器和关键应用的信息,支持实时终端显示和集中式数据库存储查询,还能向Nagios发送报警信息。Tsar模块化的设计利于通过开发新模块来扩展新的功能,非常方便。
七天学会NodeJS
七天学会NodeJS是阿里巴巴国际站前端技术部编写的开源文档,用于学习 Node.js。
模块加载框架 SeaJSSea.JS 是一个遵循 CommonJS 规范的模块加载框架,可用来轻松愉悦地加载任意JavaScript模块。 SeaJS 支持的标准模块遵循 Modules/Wrappings 规范的 define 形式,可运行于 Web 浏览器以及 node.JS 等环境中。
分布式消息中间件 Metamorphosis
Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用于大吞吐量、顺序消息、广播和日志数据传输等场景,在淘宝和支付宝有着广泛的应用,现已开源。
阿里巴巴分布式数据库同步系统 otter
otter 基于数据库增量日志解析,准实时同步到本机房或异地机房mysql/oracle数据库. 一个分布式数据库同步系统。
HTML5 互动游戏引擎 Hilo
Hilo 是阿里巴巴集团开发的一款HTML5跨终端游戏解决方案,ta可以帮助开发者快速创建HTML5游戏。
JavaScript 模板引擎 Velocity.jsVelocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和函数等功能。Velocity.js 支持 Node.js 和浏览器环境。
Oracle数据迁移同步工具 yugong
yugong 是阿里巴巴推出的去Oracle数据迁移同步工具(全量+增量,目标支持MySQL/DRDS)08年左右,阿里巴巴开始尝试MySQL的相关研究,并开发了基于MySQL分库分表技术的相关产品Cobar/TDDL(目前为阿里云DRDS产品),解决了单机Oracle无法满足的扩展性问题,当时也掀起一股去IOE项目的浪潮,愚公这项目因此而诞生,其要解决的目标就是帮助用户完成从Oracle数据迁移到MySQL上,完成去IOE的第一步。
自动化测试解决方案 Macaca
官方网站: 链接 Macaca是一套完整的自动化测试解决方案。 特性: 支持移动端和PC端;支持Native, Hybrid, H5 等多种应用类型;提供客户端工具和持续集成服务。
非侵入式运行期 AOP 框架 Dexposed
Dexposed 是阿里巴巴无线事业部第一个重量级Andorid 开源软件,基于 ROOT 社区著名开源项目 Xposed 改造剥离了 ROOT 部分,演化为服务于所在应用自身的 AOP 框架。它支撑了阿里大部分 App 的在线分钟级客户端 bugfix 和线上调试能力。
Dexposed 的 AOP 是实现了纯非侵入式,没有任何注释处理器,weaver 或者字节码重写程序。Dexposed 的集成非常简单,就像加载一个 JNI 库一样,只需要在初始化的时候插入一行代码。
Android 应用热修复工具 AndFixAndFix 是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题。Andfix 是 "Android hot-fix" 的缩写。
AndFix 支持 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。AndFix 的分支是.apatch 文件。
分布式SQL引擎 LealoneLealone 为 HBase 提供一个分布式SQL引擎,尝试将BigTable(HBase)和 RDBMS (H2数据库) 结合的项目。
php框架 WindFrameworkWind Framework是phpwind团队开发的一款php框架。2010年10月份开始投入开发,目前为止已经内部发行了四个版本(0.5,0.8,0.9,1.0)。它源自phpwind社区产品的一次名为‘鹊桥’的重构计划。意在重新定义phpwind的架构层次开发模式,使其看起来更清晰,更易于扩展和二次开发。后来在一次讨论中重构计划被分为了两个部分进行。一部分为底层核心框架。另一部分为phpwind社区数据服务中心,插件组件机制。
反向代理测试套件 Macaroon
Macaroon 是一个高效的反向代理测试套件,测试框架本身基于python2.7开发,方便跨平台移植;测试例使用格式化描述,做到编程语言无关性。使用 Macaroon能够简便快捷的完成测试场景的构造、线上失效案例的重建及被测软件(DUT)的功能、模块、协议一致性测试等。
基于 Node.js 的自动化持续集成 ReliableReliable 是分布式架构的持续集成系统,由 Macaca 团队的成员开发。适用于集成构建、集成构建等场景。她是典型的主从结构,分为 reliable-master 与 reliable-slave 两部分。
淘宝 React 框架 React Web淘宝前端团队开源项目React Web,通过与React Native一致的API构建Web应用。
跨平台移动开发工具 Weex2016年4月21日,阿里巴巴在Qcon大会上宣布开源跨平台移动开发工具Weex,Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。
Java APNS开源库 apns4japns4j 是 Apple Push Notification Service 的 Java 实现!
淘宝Web服务器 TengineTengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
Web常用UI库 kissykissy 是淘宝一个开源的 JavaScript 库,包含的组件有:日历、图片放大镜、卡片切换、弹出窗口、输入建议等。
Bug管理系统 BugFreeBugFree - 借鉴微软公司软件研发理念、免费且开放源代码、基于Web的精简版Bug管理系统。
Nginx开发从入门到精通nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部原理,但是国内却没有一本关于这方面的书,源于此我们决定自己来写一本。本书的作者为淘宝核心系统服务器平台组的成员,本书写作的思路是从模块开发逐渐过渡到nginx原理剖析。书籍的内容会定期在这里更新,欢迎大家提出宝贵意见,不管是本书的内容问题,还是字词错误,都欢迎大家提交issue(章节标题的左侧有评注按钮),我们会及时的跟进。
消息中间件 RocketMQRocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点:能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力Metaq3.0 版本改名,产品名称改为RocketMQ
分布式数据层 TDDL
淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。
国产论坛系统 PHPWindPHPWind 论坛系统 是一套采用 php+mysql 数据库 方式运行并可生成 html 页面的全新且完善的强大系统。因具有非凡的访问速度和卓越的负载能力而深受国内外朋友的喜爱。
通用WEB框架 Webx
Webx是一个在阿里巴巴集团内部广泛使用的,层次化、模块化的一个Web框架。 Webx是基于经典MVC设计模式的WEB框架,推崇页面驱动和约定胜于配置的理念。 Webx是一个基于Spring的组件框架。组件是一个软件包,它可以被其它组件扩展,也可以扩展其它组件。利用这些特性,Webx不仅能够用来开发高度可定制的Web应用(这是它的主要功能),也能够用来帮助你开发高度可扩展的非WEB的应用。
分布式文件系统 TFSTFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。
目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。
分布式核心技术框架 FourinoneFourInOne(中文名字“四不像”)是一个四合一分布式计算框架。
异步文件上传组件 UploaderUploader是非常强大的异步文件上传组件,支持ajax、iframe、flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证、图片预览、进度条等,广泛应用于淘宝网,比如退款系统、爱逛街、二手、拍卖、我的淘宝、卖家中心、导购中心等。
异构数据源数据交换工具 DataX
DataX是一个让你方便的在异构数据源之间交换数据的离线同步框架/工具,实现了在任意的数据处理系统之间的数据交换,目前DataX在淘宝内部每天约有5000道同步任务分布在全天各个时段,平均每天同步数据量在2-3TB。
轻量级分布式数据访问层 CobarClient
Cobar Client是一个轻量级分布式数据访问(DAL)基于iBatis(已更名为MyBatis)和Spring框架实现。
多浏览器兼容性测试整体解决方案 F2etestF2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。
http压力测试工具 httpsenderhttpsender是一款轻量级的http压力测试工具,由淘宝的测试工程师用Java语言开发完成。它可以指定并发连接数发送指定数目的请求,还可以自定义请求的header头。请求的URL支持通过正则表达式指定范围,同时也支持从文件随机或顺序读取。它还具备验证数据是否完整和错乱等较高级的功能。默认应用环境为Linux。
淘蝌蚪开源平台 taocodetaocode(淘蝌蚪)是淘宝网推出的开源平台。平台本身也是开源的。
阿里Redis缓存服务器 AliRedisAliRedis 是阿里巴巴运维团队基于 Redis 改造的缓存服务器,目前该项目尚未发布。
binlog的增量订阅&消费组件 canalcanal 是阿里巴巴mysql数据库binlog的增量订阅&消费组件。
移动自动化测试平台 AthrunStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker。因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm一套类似MapReduce的调度系统。 从数据的角度, 是一套基于流水线的消息处理机制。实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的Hadoop Map Reduce,逐渐满足不了需求,因此在这个领域需求不断。
分布式计算系统 JStormStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker。
因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm一套类似MapReduce的调度系统。 从数据的角度, 是一套基于流水线的消息处理机制。实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的Hadoop Map Reduce,逐渐满足不了需求,因此在这个领域需求不断。
关系型数据的分布式处理系统 CobarCobar是关系型数据的分布式处理系统,它可以在分布式的环境下像传统数据库一样为您提供海量数据服务。
淘宝的Linux系统 taolinux基于淘宝多年服务器优化积累, 内核优化经验。
nodejs-kissyKISSY 是淘宝网开发的一款轻巧灵活的JS框架,如今已经是1.1.7版本,并在淘宝网广泛应用,在浏览器端给我们带来更加清新的体验,今天让我们更进一步,我们 发起了nodejs-kissy 项目,你的 KISSY 程序可以无缝移植到服务器端了 。
Dubbo 文档镜像 dubbo-doc-static
dubbo-doc-static 是 Dubbo 的文档镜像。
自动化云测试平台 AutoManAutoMan的前身是tCommon和TAM(taobao-automan),经过对两者不断的优化和扩展,逐步形成现在一套完整的页面自动化平台, 意在提高测试人员的测试效率,测试质量,象踏上“风火轮”那样腾挪驰骋于整个测试过程。
在线分析查询系统 mdrillmdrill是由阿里妈妈开源的一套数据的软件,针对TB级数据量,能够仅用10台机器,达到秒级响应,数据能实时导入,可以对任意的维度进行组合与过滤。
mdrill作为数据在线分析处理软件,可以在几秒到几十秒的时间,分析百亿级别的任意组合维度的数据。
淘宝定制JVM TaobaoJVM淘宝有几万台Java应用服务器,上千名Java工程师、及上百个Java应用。为此,核心系统研发部专用计算组的工作之一是专注于OpenJDK的优化及定制,根据业务、应用特点及开发者需要,提供稳定,高效和深度定制的JVM版本:Taobao JVM。
接口文档管理工具 RAP
RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动。
异步任务处理系统 TBSchedule由原来的项目taobao-pamirs-schedule 更名为 TBSchedule 分布式哈希表 FastDHTFastDHT 是一个高性能的分布式哈希系统 (DHT) ,使用 Berkeley DB 做数据存储,使用 libevent 做网络IO处理,提供 Java 版的客户端接口包。适合用来存储用户在线、会话等小数据量信息。
异步文件上传组件 KF/Uploader支持ajax、flash、iframe三方案,兼容所有浏览器。配置简单,支持伪属性配置(data-config=’{}’)和配置属性来配置ajax和flash上传方式,带有上传进度显示队列上传,批量上传等待中的文件支持中途取消上传支持上传验证,整合kissy的validation组件不错的扩展性,自由定制按钮和队列模板样式
自动化测试任务调度平台 TOAST
TOAST(Toast Open Automation System for Test) 是一淘广告技术测试团队开发的一套自动化测试任务调度平台。
java表达式计算 QLExpressQLExpress 是一个轻量级的类java语法规则引擎,作为一个嵌入式规则引擎在业务系统中使用。让业务规则定义简便而不失灵活。让业务人员就可以定义业务规则。支持标准的JAVA语法,还可以支持自定义操作符号、操作符号重载、 函数定义、宏定义、数据延迟加载等。
淘宝开放平台JAVA版SDK top4java容易维护扩展(不需要修改主类就可以 添加新的API支持)注入型解释器(依据不同的返回格式注入相应的解释器)集中管理请求参数与参数映射以运行时异常的方式来管理错误的响应使用泛型来做强类型编程多协议 扩展支持(REST, RPC, SOAP, etc)
Java 图片处理类库 SimpleImageSimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。
性能分析工具 TProfilerTProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持。
代码评审工具 Tao-ReviewBoardReviewBoard是一款开源的代码review工具,包括服务器端程序(reveiwboard)和客户端命令行(RBTools)。用户可以通过RBTools的一些列命令在客户端提交request,但是使用和安装都有很多不便。Tao-ReviewBoard是淘宝开发的基于eclipse的reviewboard插件,能很好的解决安装和使用的问题。这个插件已经在淘宝使用近一年,现在工具开源了共享给大家。
基于Svg的图表组件库 KChartsKCharts是基于Svg的图表组件库,兼容IE6+等主流浏览器。基于淘宝js框架KISSY的图表组件库,包含折线图、曲线图、柱状图、散点图、饼图、地图等常用图表。采用kissy的模块加载器,实现按需加载,支持cdn动态合并。KCharts 基于RaphelJs开发,大量的html+css实现了基础grid,流畅的动画,丰富的demo,还有实用的图表在线生成器(Chart Generator),方便初学者实用。
模拟数据生成器 Mock.jsMock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。
表达式解析引擎 SimpleELSimple EL是一个表达式解析引擎。它将表达式解析分成四个部分:预处理、编译、缓存和执行。这四个步骤任意一部分都可以替换,类似设计模式中的Template Method。
GUI的WEB接口管理工具 Rigel Automation
RAP Rigel Automation Platform 是一个GUI的WEB接口管理工具。在RAP中,您可定义接口的URL、请求&响应细节格式等等。通过分析这些数据,RAP提供MOCK服务、测试服务等自动化工具。RAP同时提供大量企业级功能,帮助企业和团队高效的工作。
实时数据传输平台 TimeTunnelTimeTunnel(简称TT)是一个基于thrift通讯框架搭建的实时数据传输平台,具有高性能、实时性、顺序性、高可靠性、高可用性、可扩展性等特点。
tair-client-javatair-client-java 是淘宝 Tair 这个分布式 Key/Value 存储系统的 Java 客户端开发包。
Tair的java客户端使用纯java开发,底层使用mina 通信框架,接口简洁易用。经过生产环境的压力测试,稳定可靠。
富逻辑的模板引擎 xtemplate.jsxtemplate 是独立的富逻辑模板引擎,基于浏览器和 Node.js 的可扩展的模板引擎库。
xtemplate 支持异步控制和继承,包括逻辑表达式,自定义函数等等。
Nginx的TFS模块 nginx-tfsnginx-tfs 是 Nginx 的扩展模块用于访问淘宝的 TFS 文件系统。这个模块实现了TFS的客户端,为TFS提供了RESTful API。TFS的全称是Taobao File System,是淘宝开源的一个分布式文件系统。
redis的java客户端 Tedis
Tedis是另一个redis的java客户端,Tedis的目标是打造一个可在生产环境直接使用的高可用Redis解决方案。
数据中间层 nQuerynQuery 引擎是来自阿里的数据中间层,主要为应对大数据场景的在线查询的三大难题:长数据、宽数据、杂数据, 广泛参考 Big Query、Impala、 PL/SQL、MySQL 、PgSQL、ql.io 等,结合自身业务特点,自行精心 设计、实现的一套类SQL 语言(nSQL)及解析、执行引擎,它有着广泛的应用场景与很强的实用 价值,能对 *SQL 型数据库提供翻译与兼容,对K/V 数据如HBase、OTS 或其他通用的数据源, 它可以作为一个简洁强大的SQL 查询引擎,并以扩展SQL 的创新方式来支持数据JOIN, 结合 NodeJS 框架,完全可以提供统一的SQL接口的高并发、高性能的的在线查询服务,解耦前后端, 极大的降低大数据场景下产品开发复杂度。
持久配置中心 diamonddiamond 是持久配置中心,支持各种持久信息(比如各种规则,数据库配置等)的发布和订阅。
支持缓存线程池的ThreadLocal Transmittable ThreadLocal(TTL)在ThreadLocal的需求场景即是TTL的潜在需求场景,如果你的业务需要『在使用线程池等会缓存线程的组件情况下传递ThreadLocal』则是TTL目标场景。
代理服务器 AnyProxyAnyProxy 是一个基于 Node.js 的代理服务器。代理服务器是个中间人,站在了客户端和服务端中间,双方通信的每个比特,都会滴水不漏地经过它。它控制了完整的请求头、请求体、响应头、响应体,可以在客 户端与服务端都无感知的情况下介入处理所有的流程。只要代理服务器可以实现灵活配置,前端工程师们的奇葩需求就有出头之日了。
DSL语法解析器生成器 dropincc.java
mysql 代理 myrelay
mysql的代理,支持如下特性:
-
采用事件驱动、异步、非阻塞的设计模式,性能优秀
-
采用mysql原生协议,对应用层透明
-
支持mysql读写分离
-
提供mysql连接池管理
-
支持mysql冗余、健康检查
-
提供mysql的查询日志,方便对应用层进行分析
-
支持mysql配置动态加载
-
C语言实现
nginx-http-sysguard
nginx-http-sysguard 是阿里巴巴开发的一个 Nginx 模块,用来保护运行 Nginx 服务器的系统负载和内存使用不会太高。