阿里巴巴的 20 个开源项目

640?wx_fmt=gif

ALIBABA的 20 个开源项目

640?wx_fmt=gif

前言

开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来。阿里巴巴各个团队都是发自内心地将踩过的坑和总结的经验融入到开源项目中,供业界所有人使用,希望帮助他人解决问题。

阿里巴巴作为apache 基金会成员、Linux 基金会成员,同时是 Xen 顾问委员会成员。亦把开源当作一条使命。下面我们就来说说阿里巴巴那些开源的项目。

分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba

Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。

主要功能

  • 服务限流降级:默认支持 Servlet、Feign、RestTemplate、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。

  • 服务注册与发现:适配 SpringCloud 服务注册与发现标准,默认集成了 Ribbon的支持。

  • 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。

  • 消息驱动能力:基于 SpringCloudStream 为微服务应用构建消息驱动能力。

  • 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。

  • 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

GitHub地址:

https://github.com/spring-cloud-incubator/spring-cloud-alibaba

设计语言 & 前端框架 Ant Design

Ant Design 是蚂蚁金服开发和正在使用的一套企业级的前端设计语言和基于 React 的前端框架实现。它的特性:企业级金融产品的交互语言和视觉体系;丰富实用的 React UI 组件;基于 React 的组件化开发模式;背靠 npm 生态圈;基于 webpack 的调试构建方案,支持 ES6。

优点如下:

  • 优雅美观:基于 Ant Design 体系精心设计

  • 常见设计模式:提炼自中后台应用的典型页面和场景

  • 最新技术栈:使用 React/dva/antd 等前端前沿技术开发

  • 响应式:针对不同屏幕大小设计

  • 主题:可配置的主题满足多样化的品牌诉求

  • 国际化:内建业界通用的国际化方案

  • 最佳实践:良好的工程实践助您持续产出高质量代码

  • Mock 数据:实用的本地数据调试方案

  • UI 测试:自动化测试保障前端产品质量

地址:

https://github.com/ant-design/ant-design

JDBC 连接池、监控组件 Druid

Druid是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

Druid是阿里巴巴开发的号称为监控而生的数据库连接池!

地址:

https://github.com/alibaba/druid

Java 的 JSON 处理器 fastjson

FastJson是阿里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。

FastJson特点如下:

(1)能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。

(2)顾名思义,FastJson操作JSON的速度是非常快的。

(3)无其他包的依赖。

(4)使用比较方便。

参考文档

https://www.w3cschool.cn/fastjson/fastjson-api.html

GitHub地址

https://github.com/alibaba/fastjson

服务框架 Dubbo

Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用。阿里分布式服务框架 dubbo现在已成为了外面很多中小型甚至一些大型互联网公司作为服务治理的一个首选或者考虑方案,相信大家在日常工作中或多或少都已经用过或者接触过dubbo了。

地址:

https://github.com/alibaba/dubbo

企业级流式计算引擎 JStorm

JStorm 是一个分布式实时计算引擎,类似Hadoop MapReduce的系统, 用户按照规定的编程规范实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个worker 发生意外故障, 调度器立即分配一个新的worker替换这个失效的worker。因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用。从系统角度,JStorm一套类似MapReduce的调度系统。从数据的角度,是一套基于流水线的消息处理机制。实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的 Hadoop Map Reduce,逐渐满足不了需求,因此在这个领域需求不断。

在Storm和JStorm出现以前,市面上出现很多实时计算引擎,但自storm和JStorm出现后,基本上可以说一统江湖。

地址:

https://github.com/alibaba/jstorm

数据驱动的高交互可视化图形语法

AntV - G2

G2本身是一门图形语法,G2和传统的图表系统(HighCharts,ACharts等)不同,G2是一个基于统计分析的语义化数据可视化系统。它真正做到了让数据驱动图形,让你在使用它时候不用关心绘图细节,只需要知道你想通过它怎么展示你关心的数据。

构成的四个部分:

数据处理模块,对数据进行加工的模块,包括一些数据处理方法。例如:合并、分组、排序、过滤、计算统计信息等

图形映射模块,将数据映射到图形视觉通道的过程。例如:将数据映射成颜色、位置、大小等

图形展示模块,决定使用何种图形来展示数据,点、线、面等图形标记

辅助信息模块,用于说明视觉通道跟数据的映射关系,例如:坐标轴、图例、辅助文本等

地址:

https://github.com/antvis/g2

 前端构建和工程化工具 Dawn

Dawn 取「黎明、破晓」之意,是阿里云·业务运营团队内部的前端构建和工程化工具,现已完全开源。它通过 pipeline 和 middleware 将开发过程抽象为相对固定的阶段和有限的操作,简化并统一了开发人员的日常构建与开发相关的工作。

特点如下:

(1)采用中间件技术,封装常用功能,易于扩展,方便重用;

(2)支持 pipeline 让多个 task 协同完成构建任务;

(3)简单、一致的命令行接口,易于开发人员使用;

(4)支持基于「中心服务」管理中间件和工程模板;

(5)支持搭建私有中心服务,并统一下发构建规则,易于团队统一管理;

地址:

https://alibaba.github.io/dawn/

分布式数据层 TDDL

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

TDDL所处的位置(tddl通用数据访问层,部署在客户端的jar包,用于将用户的SQL路由到指定的数据库中):

640?wx_fmt=png

主要优点:

1.数据库主备和动态切换

2.带权重的读写分离

3.单线程读重试

4.集中式数据源信息管理和动态变更

5.剥离的稳定jboss数据源

6.支持mysql和oracle数据库

7.基于jdbc规范,很容易扩展支持实现jdbc规范的数据源

8.无server,client-jar形式存在,应用直连数据库

9.读写次数,并发度流程控制,动态变更

10.可分析的日志打印,日志流控,动态变更

地址:

https://github.com/alibaba/tb_tddl

轻量级分布式数据访问层 CobarClient

Cobar Client是一个轻量级分布式数据访问层(DAL)基于iBatis(已更名为MyBatis)和Spring框架实现。

640?wx_fmt=png

主要特性:

  • 可以支持垂直和水平数据切分数据库集群的访问;

  • 支持双机热备的HA解决方案, 应用方可以根据情况选用数据库特定的HA解决方案(比如Oracle的RAC),或者选用CobarClient提供的HA解决方案.

  • 小数据量的数据集计(Aggregation), 暂时只支持简单的数据合并.

  • 数据库本地事务的支持, 目前采用Best Efforts 1PC模式的事务管理.

  • 数据访问操作相关SQL的记录, 分析等.(可以采用国际站现有Ark解决方案,但CobarClient提供扩展的切入接口)

地址:

https://github.com/alibaba/cobarclient

 淘宝定制 JVM:TaobaoJVM

淘宝有几万台Java应用服务器,上千名Java工程师、及上百个Java应用。为此,核心系统研发部专用计算组的工作之一是专注于OpenJDK的优化及定制,根据业务、应用特点及开发者需要,提供稳定,高效和深度定制的JVM版本:Taobao JVM。

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

地址:

http://jvm.taobao.org

Java 图片处理类库 SimpleImage

SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。

地址:

https://github.com/alibaba/simpleimage

Redis 的 Java 客户端 Tedis

Tedis 是另一个 redis 的 java 客户端。Tedis 的目标是打造一个可在生产环境直接使用的高可用 Redis 解决方案。

特点:

  • 高可用,Tedis使用多写随机读做HA确保redis的高可用

  • 高性能,使用特殊的线程模型,使redis的性能不限制在客户端

  • 多种使用方式,如果你只有一个redis实例,并不需要tedis的HA功能,可以直接使用tedis-atomic;使用tedis的高可用功能需要部署多个redis实例使用tedis-group

  • 两种API,包括针对byte的底层api和面向object的高层api

  • 多种方便使用redis的工具集合,包括mysql数据同步到redis工具,利用redis做搜索工具等

地址:

https://github.com/justified/tedis

开源 Java 诊断工具 Arthas

Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。Arthas 采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

地址:

https://alibaba.github.io/arthas/

 动态服务发现、配置和服务管理平台 Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。

地址:

https://nacos.io/en-us/

Java 解析 Excel 工具 easyexcel

Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl 。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel 重写了 poi 对 07 版 Excel 的解析,能够原本一个 3M 的 excel 用 POI sax 依然需要 100M 左右内存降低到 KB 级别,并且再大的 excel 不会出现内存溢出,03 版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。

地址:

https://github.com/alibaba/easyexcel

高可用流量管理框架 Sentinel

Sentinel 是面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。

地址:

https://github.com/alibaba/Sentinel

基于多维度 Metrics 的系统度量

和监控中间件 SOFALookout

Lookout 是一个利用多维度的 metrics 对目标系统进行度量和监控的项目。Lookout 的多维度 metrics 参考 Metrics 2.0 标准。Lookout 项目分为客户端部分与服务器端部分。客户端是一个 Java 的类库,可以将它植入您的应用代码中采集 metrics 信息,客户端更多详情。服务端代码部分,将于下一版本提供。通过 LOOKOUT 的服务,可以对 metrics 数据进行收集、加工、存储和查询等处理,另外结合 grafana,可做数据可视化展示。

地址:

https://github.com/alipay/sofa-lookout

基于 Spring Boot 的研发框架 SOFABoot

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFAStack 相关中间件的能力。

地址:

https://github.com/alipay/sofa-boot

640?wx_fmt=png

“扫一扫,关注阿里技术”

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值