阿里巴巴开源技术体系

阿里巴巴为开源社区贡献了大量优秀的软件产品,这些开源软件经过了阿里亿万级流量的验证,性能和稳定性都值得信赖。 现在阿里的开源软件已经成为了一个生态,这里对应用较多的的开源产品进行简单整理,大家在技术选型时可以参考。

开发框架

移动开发框架 Weex

Weex是一款跨平台移动开发工具。Weex可以让移动开发者通过简捷的前端语法写出Native级别的性能体验,而且并支持iOS、安卓、YunOS及Web等多端部署,阿里已经将Weex项目捐赠给Apache基金会开始孵化。 Weex使用 Vue 作为上层框架,并遵循 W3C 标准实现了统一的 JSEngine 和 DOM API。

Weex 表面上是一个客户端技术,但实际上它串联起了从本地开发环境到云端部署和分发的整个链路。

前端开发框架 KISSY

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

模块加载框架 SeaJS

Sea.JS 是一个遵循 CommonJS 规范的模块加载框架,可用来轻松愉悦地加载任意JavaScript模块。 SeaJS 支持的标准模块遵循 Modules/Wrappings 规范的 define 形式,可运行于 Web 浏览器以及 node.JS 等环境中。

Web开发框架 Webx

Webx是一套基于Java Servlet API的通用Web框架,在Alibaba集团内部被广泛使用。

整个Webx框架分成三个层次:

  1. SpringExt:基于Spring,提供扩展组件的能力。它是整个框架的基础。
  2. Webx Framework:基于Servlet API,提供基础的服务,例如:初始化Spring、初始化日志、接收请求、错误处理、开发模式等。 Webx Framework只和servlet及spring相关 —— 它不关心Web框架中常见的一些服务, 例如Action处理、表单处理、模板渲染等。 因此,事实上,你可以用Webx Framework来创建多种风格的Web框架。
  3. Webx Turbine:基于Webx Framework,实现具体的网页功能,例如:Action处理、表单处理、模板渲染等。

基础组件

Json解析 fastjson

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。

数据库连接池 Druid

Druid是一个JDBC组件,它包括三部分:

  • DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系
  • DruidDataSource 高效可管理的数据库连接池
  • SQLParser

数据库中间层 Taobao Distributed Data Layer

TDDL主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。

配置管理 Diamond

Diamond 一个提供持久配置的工具,支持各种持久信息(比如各种规则,数据库配置等)的发布和订阅,同类产品有百度的Disconf等。

虚拟机优化 TaobaoJVM

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

定制Nginx Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。

分布式组件

分布式服务框架 Dubbo

Dubbo 是一个分布式服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,以及SOA服务治理方案。 Dubbo是一个功能强大的服务治理方案。

分布式调度框架 Tbschedule

TBSchedule将调度作业从业务系统中分离出来,降低或者是消除和业务系统的耦合度,进行高效异步任务处理。目前被应用于阿里巴巴、淘宝、支付宝、京东、聚美、汽车之家、国美等很多互联网公司的流程调度系统。

消息中间件

高性能消息队列 Notify

Notify是一个消息中间件。应用程序或组件之间可以使用消息中间件进行可靠的异步通讯来降低系统之间的耦合度,从而提高整个系统的可扩展性和可用性。

Notify在设计思路上与传统的MQ有一定的不同,核心设计理念:

  • 为了消息堆积而设计系统
  • 无单点,可自由扩展的设计

分布式消息队列 RocketMQ

RocketMQ即阿里内部的MetaQ消息队列,是一款分布式、队列模型的消息中间件。分为Topic与Queue两种模式,Push和Pull两种方式消费,支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。

RocketMQ借鉴了Kafka的思想,并结合互联网应用场景对性能的要求,对数据的存储结构进行了全新设计。在功能层面,增加了更适合大型互联网特色的功能点。

  • 能够保证严格的消息顺序
  • 提供丰富的消息拉取模式
  • 高效的订阅者水平扩展能力
  • 实时的消息订阅机制
  • 亿级消息堆积能力

两款消息中间件对比

  • Notify侧重于交易消息,分布式事务消息方面
  • MetaQ侧重于顺序消息场景,例如binlog同步。以及主动拉消息场景,例如流计算等

存储与数据处理

分布式缓存 Tair

Tair是一个高性能、分布式、可扩展、高可靠的Key-Value结构存储系统,专注于高速缓存场景。该项目诞生于淘宝,并在阿里巴巴集团内部大规模使用,是集团内调用量最大的系统之一。在多年的阿里巴巴“双十一”全球狂欢节上,为了承受数亿次的调用服务, Tair部署了将上百个集群,数千台的物理机,单节点QPS峰值近百万次,集群缓存命中率达90%以上,承担了天猫、淘宝、聚划算主站的大多数访问压力。

Taobao FileSystem

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

实时计算 JSTORM

JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个Worker 发生意外故障, 调度器立即分配一个新的Worker替换这个失效的Worker.JStorm是Storm的Java版本,使用Java重写的同时在其基础上进行了大幅度的改进与优化.与Hadoop对大数据进行离线全量处理相对应,JStorm主要做的是对大数据的实时增量计算与流式计算。

分布式数据库 OceanBase

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

时间: 2024-10-13 09:13:05

阿里巴巴开源技术体系的相关文章

阿里巴巴开源Weex 开发教程

Weex 是什么 Weex是阿里发布的一款用WEB方式开发原生app的开源产品 Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS.安卓.YunOS及Web等多端部署.对于移动开发者来说,Weex主要解决了频繁发版和多端研发两大痛点,同时解决了前端语言性能差和显示效果受限的问题.  开发者只需要在自己的APP中嵌入Weex的SDK,就可以通过撰写HTML/CSS/JavaScript来开发Native级别的Weex界面.Weex界面的生成

干货阿里巴巴 开源软件列表

阿里的开源项目很多,这也跟@淘宝正明的开源态度密不可分.有很多重量级的项目,例如LVS.Tengine,或者很有实践价值的中间件,今天小编为大家汇总了阿里开源的项目,快来看看吧! 服务框架 Dubbo Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. JDBC连接池.监控组件 Druid Druid是一个JDBC组件,它包括三部分: 代理Driver,能够提供基于Filter-Chain模式的插

阿里巴巴 开源软件列表

服务框架 Dubbo Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. JDBC连接池.监控组件 DruidDruid是一个JDBC组件,它包括三部分: 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可管理的数据库连接池. SQLParser Java的JSON处理器 fastjson fastjson 是一个性能很好的 Java 语

解密国内BAT等大厂前端技术体系-百度篇(长文建议收藏)

1 引言 整个业界在前端框架不断迭代中,也寻找到了许多突破方向,例如跨平台中的RN.Flutter,服务端GraphQL.Serverless,前端和客户端的融合越来越紧密,前端在Node和Electron的加持下,也扩展了自己的版图到服务端和桌面. 同时,随着前端开发越来越复杂,整个前端研发也经历了人工化->工具化->工程化->智能化的演变.目前各个大厂在工程化实践不断迭代,出现了许多Low/No Code等前端智能化解决方案,工程化实践也深入到研发的各个环节,不断提升前端研发的标准化

Java 技术体系基础概念

Java 技术体系基础概念 =============================================================================== 概述: =============================================================================== 编程语言: [百度百科解释] 编程语言俗称"计算机语言",种类非常的多,总的来说可以分成机器语言.汇编语言.高级语言三大类.电脑每做的

Java 技术体系图

Java 程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 IO.多线程.实体类. 集合类.正则表达式. XML 和属性文件 图形编程 AWT(Java2D/JavaSound/JMF) .Swing.SWT.JFace 网路编程 Applet.Socket/TCP/UDP.NIO.RMI.CORBA Java 语法基础 类.抽象类.接口.最终类.静态类.匿名类.内部类.异常类.编码规范 Java 开发环境 JDK.JVM.Ec

Druid连接池-阿里巴巴开源JDBC组件

Druid在连接池领域里可以说是比较火的,是阿里巴巴开源的JDBC连接池.监控组件,下面就简单介绍它一下. 它包括三部分:  DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可管理的数据库连接池. SQLParser . 功能:     .  可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助.     .  替换D

Java技术体系图

Java程序员高级特性              反射.泛型.注释符.自动装箱和拆箱.枚举类.可变              参数.可变返回类型.增强循环.静态导入        核心编程             IO.多线程.实体类.             集合类.正则表达式.             XML和属性文件             图形编程             AWT(Java2D/JavaSound/JMF).Swing.SWT.JFace        网路编程     

.NET平台技术体系梳理

.NET平台应用领域众多(桌面开发,web开发,移动开发),不断有新的编程爱好者开始学习或从其他平台转移到.NET开发平台..NET开发平台由微软2000年提出,到今天已经进入到了第14个年头,新技术,新框架层出不穷,目不暇接.本文第一个目的是想揭示下.NET平台一路走来的发展脉络,以飨众多刚刚进入该领域的开发者. 我们总结的泛.NET平台技术圈的知识范畴如下图所示: 二 初学者学习路径建议 由上图可见,.NET平台技术繁多,从头学起需循序渐进.结合自己的学习经验,斗胆给出一份初学者的学习建议.