摘要: 受益开源,就当回馈。面对阿里头顶上“贡献开源软件数目第一”的光环,我们清醒地认知阿里开源的目的:阿里开源不是到业内“秀肌肉”,更不是自卖自夸;阿里之所以选择开源是因为开源是孵化新技术领域的容器,更是技术演进的最大推动力。
阿里巴巴集团已经开源115个项目,加入FSF基金会、Apache基金会、Linux 基金会和Xen的顾问团队,并在云栖大会北京峰会宣布AliSQL开源。
为了让大家能更好,更全面的了解和应用上阿里开源项目, 云栖社区特别制作了一张“2016阿里开源全向图”。
2016阿里巴巴73款开源产品全向图详细介绍如下:
一、框架
-
react-web:Readt Web是为那些使用React Native兼容的API构建的Web应用而提供的一个框架。React Web的目的及意义非常明确: 让React Native代码跑在Web上让一套代码运行在各个移动终端,对前端及业务来说,这是开发效率中一个质的提升。
-
Jstrom:"JStorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。经过4年发展,阿里巴巴JStorm集群已经成为世界上最大的集群之一,基于JStorm的应用数量超过1000个。数据显示,JStorm集群每天处理的消息数量达到1.5PB。 在2015年,JStorm正式成为Apache Storm里的子项目。JStorm将在 Apache Storm里孵化,孵化成功后会成为Apache Storm主干。 Apache基金会官方表示,非常高兴JStorm能够成为Apache Storm社区的一员。"
-
Dubbo:高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。Dubbo is a distributed, high performance RPC framework enpowering applications with service import/export capabilities.
-
Kissy:KISSY 是一款跨终端、模块化、高性能、使用简单的 JavaScript 框架。除了完备的工具集合如 DOM、Event、Ajax、Anim 等,它还提供了经典的面向对象、动态加载、性能优化解决方案。作为一款全终端支持的 JavaScript 框架,KISSY 为移动终端做了大量适配和优化,使用户的程序在全终端均能流畅运行。
-
Dexposed:Dexposed是面向Android应用开发的一个强大的非侵入式的运行时AOP框架。它基于 ROOT 社区著名开源项目 Xposed的部分成果,并演化为服务于所在应用自身的 AOP 框架。目前它支撑了阿里大部分 App 的在线分钟级客户端 bugfix 和线上调试能力。
-
TDDL:TDDL(Taobao Distributed Data Layer),是淘宝根据自己的业务特点开发了框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。
-
Webx:Webx是建立在Java Servlet API基础上的通用WEB框架。用Webx搭建的应用可以运行在任何一个标准的WEB应用服务器上面:Tomcat、Jetty、Jboss、Weblogic。 Webx是基于经典MVC设计模式的WEB框架Spring,并且可以被其它组件扩展。Webx不仅能够用来开发高度可定制的Web应用,也能够用来帮助用户开发高度可扩展的非WEB的应用。
-
Magix:Magix 是用于构建大型富交互单页应用的前端MVC框架。
-
Brix:Brix 是基于 KISSY(PC端)和 Zepto、SeaJS 等(移动端)底层类库的应用层组件框架。
-
Canvax:Canvax是一款小型轻便的 canvas 图形框架,它采用 Flash AS3 相同的模式来对绘制元素进行抽象
-
Plover:Plover是一个专注于 模块化方式构建web应用 的NodeJs MVC web框架。不同于其它web框架,它提供完整的应用和模块化模型可以让复杂的业务功能可以方便地抽象成多个模块的方式进行独立开发,让应用可以像搭积目的方式拼装模块而成。
二、组件
-
Druid:Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
-
Fastjson:fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器
-
Macaroon:Macaroon是一个高效的反向代理测试套件,测试框架本身基于python2.7开发,方便跨平台移植;测试例使用格式化描述,做到编程语言无关性。使用Macaroon能够简便快捷的完成测试场景的构造、线上失效案例的重建及被测软件(DUT)的功能、模块、协议一致性测试等。
-
Uploader:Uploader是一个非常强大的异步文件上传组件,支持ajax、iframe、flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证、图片预览、进度条等
-
AliJVM:AliJVM基于OpenJDK HotSpot VM,是国内第一个优化、定制且开源的服务器版Java虚拟机。目前已经在淘宝、天猫上线,全部替换了Oracle官方JVM版本,在性能,功能上都初步体现了它的价值。 "
-
KCharts:KCharts是基于Svg的图表组件库,兼容IE6+等主流浏览器。基于淘宝js框架KISSY的图表组件库,包含折线图、曲线图、柱状图、散点图、饼图、地图等常用图表。
-
nginx-tfs :nginx-tfs 是 Nginx 的扩展模块用于访问淘宝的 TFS 文件系统。
-
transmittable-thread-local:transmittable-thread-local是阿里用Java开发的用于多线程的的组件。
-
nginx-http-sysguard:nginx-http-sysguard 是阿里巴巴开发的一个 Nginx 模块,用来保护运行 Nginx 服务器的系统负载和内存使用不会太高
-
java-dns-cache-manipulator:用编码的方式设置/查看JVM的DNS(实际上设置的是DNS Cache),支持JDK 6+,支持IPv6。
三、引擎
-
Velocity.js:Velocity.js是一个基于velocity模板语法的javascript实现。它具有支持客户端和服务器端使用、支持Node.js环境、支持Vim语法等功能,具备富逻辑语法、语法分析和模板渲染分离等特点。
-
Qlexpress:Quick Laconic Express 高效简洁的类java语法动态脚本引擎
-
SimpleEL:Simple EL是一个表达式解析引擎。它将表达式解析分成四个部分:预处理、编译、缓存和执行。这四个步骤任意一部分都可以替换,类似设计模式中的Template Method。
-
xtemplate:xtemplate 是独立的富逻辑模板引擎,基于浏览器和 Node.js 的可扩展的模板引擎库。
-
nQuery:nQuery 引擎是来自阿里的数据中间层,主要为应对大数据场景的在线查询的三大难题:长数据、宽数据、杂数据, 广泛参考 Big Query、Impala、 PL/SQL、MySQL 、PgSQL、ql.io 等,结合自身业务特点,自行精心 设计、实现的一套类SQL 语言(nSQL)及解析、执行引擎
-
Min-velocity:min-velocity 是一个专为代码生成而定制的简化 velocity 模板引擎。它的目标是以 velocity 1.7 为基础, 裁剪出适合用作代码生成的模板引擎。
四、数据库/存储
-
AliSQL:AliSQL 是基于 MySQL 官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。AliSQL 版本在强度和广度上都经历了极大的考验。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。AliSQL 增加更多监控指标,并针对电商秒杀、物联网大数据压缩、金融数据安全等场景提供个性化的解决方案。“在通用基准测试场景下,AliSQL 版本比 MySQL 官方版本有着 70% 的性能提升。在秒杀场景下,性能提升 100 倍。”
-
OceanBase :OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。
-
Tair:Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。
-
TFS:TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化。
-
AliRedis(计划开源):AliRedis是阿里团队针对Redis日常维护中出现的不足而在Redis原有基础上做出的深度改进。具体而言,AliRedis采用多线程master + N*work 工作模式,并且抛弃save, bgsave, aof等三种原有的模式.采用redisDB lock模式,除此之外,它还优化了jemalloc, 采用大内存页。
-
Wasp:Wasp 是类Google MegaStore & F1的分布式关系数据库。它是分布式的、支持SQL的、事务型数据库。
-
ADFS:ADFS(Ali Distributed File System)是基于hadoop开源分布式系统HDFS的一种优化 实现,能够将HDFS中单点master namenode节点中的内存数据结构利用高速存储介质同步到磁盘中,同时能够提供很高的吞吐和性能 。
五、平台/系统
-
Zeus:宙斯是一个完整的Hadoop的作业平台 从Hadoop任务的调试运行到生产任务的周期调度 宙斯支持任务的整个生命周期。
-
DataX:DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
-
Reliable :Reliable 是由 Macaca 团队的成员开发的分布式架构的持续集成系统。它是用Node.js和Javascript编写的,并且使用MongoDD作为数据源、Redis作为缓存,Docker作为运行环境,具有集群负载,合理调配、提供插件机制,易扩展、部署非常简单、便于接入 Gitlab和Github社区化系统、与 Macaca 无缝融合等特点,因而适用于集成构建、集成构建等场景。
-
Toast:TOAST(Toast Open Automation System for Test) 是一淘广告技术测试团队开发的一套自动化测试任务调度平台。
-
cnpmjs:CNPM是阿里巴巴开发的一个私有npm 仓库和web服务
-
ruby.taobao.org:RubyGems Mirror Web page
-
ali_kernel:在 RHEL6 source codes 基础上做的更新,以及一些新功能加入。
六、解决方案:
-
Hilo:一套HTML5跨终端的互动游戏解决方案。Hilo支持了多届淘宝&天猫狂欢城等双十一大型和日常营销活动。内核极简,提供包括DOM,Canvas,Flash,WebGL等多种渲染方案,满足全终端和性能要求。支持多种模块范式的包装版本以及开放的扩展方式,方便接入和扩展。提供对2D物理,骨骼动画的内建和扩展支持。
-
Weex:移动端高性能动态化,跨平台移动开发解决方案,A framework for building Mobile cross-platform UI
-
Macaca:Macaca是一套完整的自动化测试解决方案,它的特性包括支持移动端和PC端、支持Native,Hybrid,H5等多种应用类型和提供客户端工具和持续集成服务。
-
F2etest:F2etest是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。F2e test = Front to End Test = 前端测试
-
LuaView:LuaView 是一种运行在一个 ViewController/Activity 中,可以灵活加载Lua 脚本,并能够按照 Native 的方式运行的一种面向业务的开发技术方案。
-
Cube:Cube 是一套跨终端、响应式、低设计耦合的CSS解决方案。包含全新基础重置、布局、按钮、工具类、字体图标等相对独立的模块。
-
BeeHive:BeeHive是用于iOS的App模块化编程的框架实现方案,吸收了Spring框架Service的理念来实现模块间的API耦合。
七、工具
-
Tsar Tsar:是淘宝的采集工具,主要用来收集服务器的系统信息(如cpu,io,mem,tcp等)以及应用数据(如squid haproxy nginx等),tsar支持实时查看和历史查看,方便了解应用和服务器的信息!
-
yugong:阿里巴巴去Oracle数据迁移同步工具(全量+增量,目标支持MySQL/DRDS)
-
AndFix:AndFix,全称“Andriod hot-fix”,是阿里开源的 Android 应用热修复工具,用来帮助 Android 开发者修复应用的线上问题。AndFix实现原理是方法体的替换,目前支持的平台有Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。
-
tblive:tblive开源项目对应的产品是千牛主播,是一个独立的PC端主播工具,基于开源软件OBS Studio来修改定制,增强了交互和功能上的可用性,同时引入统一登陆sdk(UnifiedAuthSDK.dll),可以支持淘宝账号的验证以及免登url的拼接,能更好的支持淘系webview页面。
-
canal:阿里巴巴mysql数据库binlog的增量订阅&消费组件
-
RAP :是通过GUI工具帮助WEB工程师更高效的管理接口文档的工具。它在管理的同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。正因为有了结构化的API数据,RAP可以为使用者做更多地事,从而避免更多重复劳动。
-
tclip:自动头像识别的图片裁剪项目
-
TProfiler:TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持.
-
Tao-ReviewBoard:Tao-ReviewBoard是淘宝开发的基于eclipse的reviewboard插件,能很好的解决安装和使用的问题。
-
Mock.js:Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。
-
Flex GateWay :Flex GateWay 提供了 VPN、SNAT 基础服务。
-
Sqlautoreview:淘宝开源的SQLautoReview是一个SQL自动化审核的程序
-
ossfs:ossfs 是用Perl语言写的基于 aliyun OSS 的 fuse 客户端。它能够让用户在Linux/Mac OS X 系统中把Aliyun OSS bucket 挂载到本地文件 系统中,使用户能够便捷地通过本地文件系统操作OSS 上的对象,实现数据的共享。 "
-
Darko:Darko 是阿里妈妈的 THX 团队编写的一个站点生成工具,与 Jekyll 兼容,在不便安装 Jekyll 的平台上,可以试试 Darko。
-
Asyncload:Asyncload是一款异步并行加载工具(依赖字节码技术)。用于常用的IO需求
-
DragonBonesJS:DragonBonesJS是DragonBones的JS版本,是DragonBones的改进版。而DragonBones是Adobe支持的一个开源项目,用于制作和播放骨骼动画
-
otter:阿里巴巴分布式数据库同步系统(解决中美异地机房)
-
Freeline:Freeline是蚂蚁聚宝团队在Android平台上的量身定做的一个增量开发的工具,支持mPaas。
-
uirecorder:UI 测试用例录制工具
八、中间件
-
RocketMQ:"消息队列(Message Queue,简称MQ)是阿里云商用的专业消息中间件,是企业级互联网架构的核心产品,基于高可用分布式集群技术,搭建了包括发布订阅、消息轨迹、资源统计、定时(延时)、监控报警等一套完整的消息云服务。RocketMQ:是MQ的开源版本"
-
Cobar:Cobar是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。
-
Tbschedule:一种异步任务处理系统,目的是用来可以提高用户体验,以及增大系统的可扩转性,正因为它的种种优势和特性,Tbschedule得到大量的应用。
九、Web Server
-
Tengine:Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性,是目前全球9 大流行web server之一。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
-
AnyProxy:AnyProxy 是一个基于 Node.js 的代理服务器。代理服务器是个中间人,站在了客户端和服务端中间,双方通信的每个比特,都会滴水不漏地经过它。它控制了完整的请求头、请求体、响应头、响应体,可以在客户端与服务端都无感知的情况下介入处理所有的流程。
十、设计
-
Ant-design:Ant Design 是一个致力于提升『用户』和『设计者』使用体验的中台设计语言。它模糊了产品经理、交互设计师、视觉设计师、前端工程师、开发工程师等角色边界,将进行 UE 设计和 UI 设计人员统称为『设计者』,利用统一的规范进行设计赋能,全面提高中台产品体验和研发效率。