首页 > 代码库 > 2016阿里巴巴73款开源产品全向图

2016阿里巴巴73款开源产品全向图

 
 
技术分享

  摘要: 受益开源,就当回馈。面对阿里头顶上“贡献开源软件数目第一”的光环,我们清醒地认知阿里开源的目的:阿里开源不是到业内“秀肌肉”,更不是自卖自夸;阿里之所以选择开源是因为开源是孵化新技术领域的容器,更是技术演进的最大推动力。

  阿里巴巴集团已经开源 115 个项目,加入 FSF 基金会、Apache 基金会、Linux 基金会和 Xen 的顾问团队,并在云栖大会北京峰会宣布 AliSQL 开源。

  为了让大家能更好,更全面的了解和应用上阿里开源项目, 云栖社区特别制作了一张“2016 阿里开源全向图”。

技术分享

  2016 阿里巴巴 73 款开源产品全向图详细介绍如下:

  一、框架

  1. react-web:Readt Web 是为那些使用 React Native 兼容的 API 构建的 Web 应用而提供的一个框架。React Web 的目的及意义非常明确: 让 React Native 代码跑在 Web 上让一套代码运行在各个移动终端,对前端及业务来说,这是开发效率中一个质的提升。

  2. Jstrom:"JStorm 是参考 storm 的实时流式计算框架,在网络 IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用。经过 4 年发展,阿里巴巴 JStorm 集群已经成为世界上最大的集群之一,基于 JStorm 的应用数量超过 1000 个。数据显示,JStorm 集群每天处理的消息数量达到 1.5PB。在 2015 年,JStorm 正式成为 Apache Storm 里的子项目。JStorm 将在 Apache Storm 里孵化,孵化成功后会成为 Apache Storm 主干。 Apache 基金会官方表示,非常高兴 JStorm 能够成为 Apache Storm 社区的一员。"

  3. Dubbo:高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。Dubbo is a distributed, high performance RPC framework enpowering applications with service import/export capabilities.

  4. Kissy:KISSY 是一款跨终端、模块化、高性能、使用简单的 JavaScript 框架。除了完备的工具集合如 DOM、Event、Ajax、Anim 等,它还提供了经典的面向对象、动态加载、性能优化解决方案。作为一款全终端支持的 JavaScript 框架,KISSY 为移动终端做了大量适配和优化,使用户的程序在全终端均能流畅运行。

  5. Dexposed:Dexposed 是面向 Android 应用开发的一个强大的非侵入式的运行时 AOP 框架。它基于 ROOT 社区著名开源项目 Xposed 的部分成果,并演化为服务于所在应用自身的 AOP 框架。目前它支撑了阿里大部分 App 的在线分钟级客户端 bugfix 和线上调试能力。

  6. TDDL:TDDL(Taobao Distributed Data Layer),是淘宝根据自己的业务特点开发了框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource 实现,具有主备,读写分离,动态数据库配置等功能。

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

  8. Magix:Magix 是用于构建大型富交互单页应用的前端 MVC 框架。

  9. Brix:Brix 是基于 KISSY(PC 端)和 Zepto、SeaJS 等(移动端)底层类库的应用层组件框架。

  10. Canvax:Canvax 是一款小型轻便的 canvas 图形框架,它采用 Flash AS3 相同的模式来对绘制元素进行抽象

  11. Plover:Plover 是一个专注于模块化方式构建 web 应用的 NodeJs MVC web 框架。不同于其它 web 框架,它提供完整的应用和模块化模型可以让复杂的业务功能可以方便地抽象成多个模块的方式进行独立开发,让应用可以像搭积目的方式拼装模块而成。 

  二、组件

  1. Druid:Druid 是 Java 语言中最好的数据库连接池。Druid 能够提供强大的监控和扩展功能。 

  2. Fastjson:fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 

  3. Macaroon:Macaroon 是一个高效的反向代理测试套件,测试框架本身基于 python2.7 开发,方便跨平台移植;测试例使用格式化描述,做到编程语言无关性。使用 Macaroon 能够简便快捷的完成测试场景的构造、线上失效案例的重建及被测软件(DUT)的功能、模块、协议一致性测试等。 

  4. Uploader:Uploader 是一个非常强大的异步文件上传组件,支持 ajax、iframe、flash 三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持和常用插件,比如验证、图片预览、进度条等 

  5. AliJVM:AliJVM 基于 OpenJDK HotSpot VM,是国内第一个优化、定制且开源的服务器版 Java 虚拟机。目前已经在淘宝、天猫上线,全部替换了 Oracle 官方 JVM 版本,在性能,功能上都初步体现了它的价值。 " 

  6. KCharts:KCharts 是基于 Svg 的图表组件库,兼容 IE6+ 等主流浏览器。基于淘宝 js 框架 KISSY 的图表组件库,包含折线图、曲线图、柱状图、散点图、饼图、地图等常用图表。

  7. nginx-tfs :nginx-tfs 是 Nginx 的扩展模块用于访问淘宝的 TFS 文件系统。 

  8. transmittable-thread-local:transmittable-thread-local 是阿里用 Java 开发的用于多线程的的组件。 

  9. nginx-http-sysguard:nginx-http-sysguard 是阿里巴巴开发的一个 Nginx 模块,用来保护运行 Nginx 服务器的系统负载和内存使用不会太高 

  10. java-dns-cache-manipulator:用编码的方式设置/查看 JVM 的 DNS(实际上设置的是 DNS Cache),支持 JDK 6+,支持 IPv6。

  三、引擎

  1. Velocity.js:Velocity.js 是一个基于 velocity 模板语法的 javascript 实现。它具有支持客户端和服务器端使用、支持 Node.js 环境、支持 Vim 语法等功能,具备富逻辑语法、语法分析和模板渲染分离等特点。 

  2. Qlexpress:Quick Laconic Express 高效简洁的类 java 语法动态脚本引擎 

  3. SimpleEL:Simple EL 是一个表达式解析引擎。它将表达式解析分成四个部分:预处理、编译、缓存和执行。这四个步骤任意一部分都可以替换,类似设计模式中的 Template Method。 

  4. xtemplate:xtemplate 是独立的富逻辑模板引擎,基于浏览器和 Node.js 的可扩展的模板引擎库。 

  5. nQuery:nQuery 引擎是来自阿里的数据中间层,主要为应对大数据场景的在线查询的三大难题:长数据、宽数据、杂数据, 广泛参考 Big Query、Impala、 PL/SQL、MySQL 、PgSQL、ql.io 等,结合自身业务特点,自行精心设计、实现的一套类 SQL 语言(nSQL)及解析、执行引擎 

  6. Min-velocity:min-velocity 是一个专为代码生成而定制的简化 velocity 模板引擎。它的目标是以 velocity 1.7 为基础, 裁剪出适合用作代码生成的模板引擎。 

  四、数据库/存储

  1. AliSQL:AliSQL 是基于 MySQL 官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。AliSQL 版本在强度和广度上都经历了极大的考验。最新的 AliSQL 版本不仅从其他开源分支比如:Percona,MariaDB,WebScaleSQL 等社区汲取精华,也沉淀了阿里巴巴多年在 MySQL 领域的经验和解决方案。AliSQL 增加更多监控指标,并针对电商秒杀、物联网大数据压缩、金融数据安全等场景提供个性化的解决方案。“在通用基准测试场景下,AliSQL 版本比 MySQL 官方版本有着 70% 的性能提升。在秒杀场景下,性能提升 100 倍。”

  2. OceanBase :OceanBase 是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百 TB 数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。 

  3. Tair:Tair 是由淘宝网自主开发的 Key/Value 结构数据存储系统,在淘宝网有着大规模的应用。 

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

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

  6. Wasp:Wasp 是类 Google MegaStore & F1 的分布式关系数据库。它是分布式的、支持 SQL 的、事务型数据库。 

  7. ADFS:ADFS (Ali Distributed File System)是基于 hadoop 开源分布式系统 HDFS 的一种优化实现,能够将 HDFS 中单点 master namenode 节点中的内存数据结构利用高速存储介质同步到磁盘中,同时能够提供很高的吞吐和性能 。

  五、平台/系统

  1. Zeus:宙斯是一个完整的 Hadoop 的作业平台从 Hadoop 任务的调试运行到生产任务的周期调度宙斯支持任务的整个生命周期。 

  2. DataX:DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、HDFS、Hive、OceanBase、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 

  3. Reliable :Reliable 是由 Macaca 团队的成员开发的分布式架构的持续集成系统。它是用 Node.js 和 Javascript 编写的,并且使用 MongoDD 作为数据源、Redis 作为缓存,Docker 作为运行环境,具有集群负载,合理调配、提供插件机制,易扩展、部署非常简单、便于接入 Gitlab 和 Github 社区化系统、与 Macaca 无缝融合等特点,因而适用于集成构建、集成构建等场景。 

  4. Toast:TOAST (Toast Open Automation System for Test) 是一淘广告技术测试团队开发的一套自动化测试任务调度平台。 

  5. cnpmjs:CNPM 是阿里巴巴开发的一个私有 npm 仓库和 web 服务 

  6. ruby.taobao.org:RubyGems Mirror Web page 

  7. ali_kernel:在 RHEL6 source codes 基础上做的更新,以及一些新功能加入。

  六、解决方案:

  1. Hilo:一套 HTML5 跨终端的互动游戏解决方案。Hilo 支持了多届淘宝&天猫狂欢城等双十一大型和日常营销活动。内核极简,提供包括 DOM,Canvas,Flash,WebGL 等多种渲染方案,满足全终端和性能要求。支持多种模块范式的包装版本以及开放的扩展方式,方便接入和扩展。提供对 2D 物理,骨骼动画的内建和扩展支持。 

  2. Weex:移动端高性能动态化,跨平台移动开发解决方案,A framework for building Mobile cross-platform UI

  3. Macaca:Macaca 是一套完整的自动化测试解决方案,它的特性包括支持移动端和 PC 端、支持 Native,Hybrid,H5 等多种应用类型和提供客户端工具和持续集成服务。 

  4. F2etest:F2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。F2e test = Front to End Test = 前端测试 

  5. LuaView:LuaView 是一种运行在一个 ViewController/Activity 中,可以灵活加载 Lua 脚本,并能够按照 Native 的方式运行的一种面向业务的开发技术方案。 

  6. Cube:Cube 是一套跨终端、响应式、低设计耦合的 CSS 解决方案。包含全新基础重置、布局、按钮、工具类、字体图标等相对独立的模块。 

  7. BeeHive:BeeHive 是用于 iOS 的 App 模块化编程的框架实现方案,吸收了 Spring 框架 Service 的理念来实现模块间的 API 耦合。 

  七、工具

  1. Tsar Tsar:是淘宝的采集工具,主要用来收集服务器的系统信息(如 cpu,io,mem,tcp 等)以及应用数据(如 squid haproxy nginx 等),tsar 支持实时查看和历史查看,方便了解应用和服务器的信息! 

  2. yugong:阿里巴巴去 Oracle 数据迁移同步工具(全量+增量,目标支持 MySQL/DRDS) 

  3. AndFix:AndFix,全称“Andriod hot-fix”,是阿里开源的 Android 应用热修复工具,用来帮助 Android 开发者修复应用的线上问题。AndFix 实现原理是方法体的替换,目前支持的平台有 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时。 

  4. tblive:tblive 开源项目对应的产品是千牛主播,是一个独立的 PC 端主播工具,基于开源软件 OBS Studio 来修改定制,增强了交互和功能上的可用性,同时引入统一登陆 sdk(UnifiedAuthSDK.dll),可以支持淘宝账号的验证以及免登 url 的拼接,能更好的支持淘系 webview 页面。 

  5. canal:阿里巴巴 mysql 数据库 binlog 的增量订阅&消费组件 

  6. RAP :是通过 GUI 工具帮助 WEB 工程师更高效的管理接口文档的工具。它在管理的同时通过分析接口结构自动生成 Mock 数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。正因为有了结构化的 API 数据,RAP 可以为使用者做更多地事,从而避免更多重复劳动。

  7. tclip:自动头像识别的图片裁剪项目 

  8. TProfiler:TProfiler 是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点对象创建热点线程状态分析等数据,为查找系统性能瓶颈提供数据支持. 

  9. Tao-ReviewBoard:Tao-ReviewBoard 是淘宝开发的基于 eclipse 的 reviewboard 插件,能很好的解决安装和使用的问题。 

  10. Mock.js:Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。 

  11. Flex GateWay :Flex GateWay 提供了 VPN、SNAT 基础服务。 

  12. Sqlautoreview:淘宝开源的 SQLautoReview 是一个 SQL 自动化审核的程序 

  13. ossfs:ossfs 是用 Perl 语言写的基于 aliyun OSS 的 fuse 客户端。它能够让用户在 Linux/Mac OS X 系统中把 Aliyun OSS bucket 挂载到本地文件系统中,使用户能够便捷地通过本地文件系统操作 OSS 上的对象,实现数据的共享。 " 

  14. Darko:Darko 是阿里妈妈的 THX 团队编写的一个站点生成工具,与 Jekyll 兼容,在不便安装 Jekyll 的平台上,可以试试 Darko。 

  15. Asyncload:Asyncload 是一款异步并行加载工具(依赖字节码技术)。用于常用的 IO 需求

  16. DragonBonesJS:DragonBonesJS 是 DragonBones 的 JS 版本,是 DragonBones 的改进版。而 DragonBones 是 Adobe 支持的一个开源项目,用于制作和播放骨骼动画

  17. otter:阿里巴巴分布式数据库同步系统(解决中美异地机房) 

  18. Freeline:Freeline 是蚂蚁聚宝团队在 Android 平台上的量身定做的一个增量开发的工具,支持 mPaas。 

  19. uirecorder:UI 测试用例录制工具

  八、中间件

  1. RocketMQ:"消息队列(Message Queue,简称 MQ)是阿里云商用的专业消息中间件,是企业级互联网架构的核心产品,基于高可用分布式集群技术,搭建了包括发布订阅、消息轨迹、资源统计、定时(延时)、监控报警等一套完整的消息云服务。RocketMQ:是 MQ 的开源版本"

  2. Cobar:Cobar 是提供关系型数据库(MySQL)分布式服务的中间件,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。 

  3. Tbschedule:一种异步任务处理系统,目的是用来可以提高用户体验,以及增大系统的可扩转性,正因为它的种种优势和特性,Tbschedule 得到大量的应用。

  九、Web Server 

  1. Tengine:Tengine 是由淘宝网发起的 Web 服务器项目。它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性,是目前全球 9 大流行 web server 之一。Tengine 的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的 Web 平台。

  2. AnyProxy:AnyProxy 是一个基于 Node.js 的代理服务器。代理服务器是个中间人,站在了客户端和服务端中间,双方通信的每个比特,都会滴水不漏地经过它。它控制了完整的请求头、请求体、响应头、响应体,可以在客户端与服务端都无感知的情况下介入处理所有的流程。 

  十、设计

  1. Ant-design:Ant Design 是一个致力于提升『用户』和『设计者』使用体验的中台设计语言。它模糊了产品经理、交互设计师、视觉设计师、前端工程师、开发工程师等角色边界,将进行 UE 设计和 UI 设计人员统称为『设计者』,利用统一的规范进行设计赋能,全面提高中台产品体验和研发效率。

2016阿里巴巴73款开源产品全向图