阿里巴巴开源技术体系

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

开发框架

移动开发框架 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、广告、应用研发等部门共同完成。

 

posted @ 2017-06-08 20:47  邴越  阅读(1844)  评论(0编辑  收藏  举报