阿里十大開源項目

編程語言 JSON Java Java虛擬機 Node.js HELLO開源 2018-12-16

1:JSON處理器 fastjson

fastjson 是一個性能很好的 Java 語言實現的 JSON 解析器和生成器,來自阿里巴巴的工程師開發。

主要特點:

  • 快速FAST (比其它任何基於Java的解析器和生成器更快,包括jackson)
  • 強大(支持普通JDK類包括任意Java Bean Class、Collection、Map、Date或enum)
  • 零依賴(沒有依賴其它任何類庫除了JDK)

示例代碼:

import com.alibaba.fastjson.JSON;
Group group = new Group();
group.setId(0L);
group.setName("admin");
User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");
User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");
group.getUsers().add(guestUser);
group.getUsers().add(rootUser);
String jsonString = JSON.toJSONString(group);
System.out.println(jsonString);

2:JVM-Sandbox

JVM-Sandbox,JVM 沙箱容器,一種基於 JVM 的非侵入式運行期 AOP 解決方案。

阿里十大開源項目

JVM-SANDBOX 的核心功能:

實時無侵入 AOP 框架

在常見的 AOP 框架實現方案中,有靜態編織和動態編織兩種。

  1. 靜態編織
  2. 靜態編織發生在字節碼生成時根據一定框架的規則提前將 AOP 字節碼插入到目標類和方法中,實現 AOP;
  3. 動態編織
  4. 動態編織則允許在 JVM 運行過程中完成指定方法的 AOP 字節碼增強。常見的動態編織方案大多采用重命名原有方法,再新建一個同簽名的方法來做代理的工作模式來完成 AOP 的功能(常見的實現方案如 CgLib),但這種方式存在一些應用邊界:
  • 侵入性
  • 對被代理的目標類需要進行侵入式改造。比如:在 Spring 中必須是託管於 Spring 容器中的 Bean
  • 固化性
  • 目標代理方法在啟動之後即固化,無法重新對一個已有方法進行 AOP 增強

3:分佈式RPC服務框架 Dubbo

Dubbo 是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring 框架無縫集成。

主要核心部件:

  • Remoting: 網絡通信框架,實現了 sync-over-async 和 request-response 消息機制
  • RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集群功能
  • Registry: 服務目錄框架用於服務的註冊和服務事件發佈和訂閱

工作原理:

阿里十大開源項目

阿里十大開源項目

4:Node.js框架 Egg.js

Egg.js,為企業級框架和應用而生,是阿里開源的企業級 Node.js 框架。

特性

  • 深度框架定製
  • 高度可擴展的插件機制
  • 內置多進程管理
  • 基於 koa 開發,性能優異
  • 框架穩定,測試覆蓋率高

開始使用

npm install egg-init -g
$egg-init --type simple showcase && cd showcase
$npm install
$npm run dev
$open http://localhost:7001

5:Ant Design Pro

Ant Design Pro 是一套開箱即用的中臺前端/設計解決方案。

阿里十大開源項目

特性

  • 優雅美觀:基於 Ant Design 體系精心設計
  • 常見設計模式:提煉自中後臺應用的典型頁面和場景
  • 最新技術棧:使用 React/dva/antd 等前端前沿技術開發
  • 響應式:針對不同屏幕大小設計
  • 主題:可配置的主題滿足多樣化的品牌訴求
  • 國際化:內建業界通用的國際化方案
  • 最佳實踐:良好的工程實踐助您持續產出高質量代碼
  • Mock 數據:實用的本地數據調試方案
  • UI 測試:自動化測試保障前端產品質量

6:JDBC連接池,監控組件Druid

Druid是一個JDBC組件,它包括三部分:

  • DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的插件體系。
  • DruidDataSource 高效可管理的數據庫連接池。
  • SQLParser

Druid可以做什麼?

1) 可以監控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統計SQL的執行性能,這對於線上分析數據庫訪問性能有幫助。

2) 替換DBCP和C3P0。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。

3) 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,這是不好的行為,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。

4) SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。

擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴展插件。

如下是一個基於Druid內置擴展StatFilter的監控實現:

阿里十大開源項目

7:NG-ZORRO

NG-ZORRO 是一個企業級的 UI 組件庫,是 Ant Design 的 Angular 4.0 實現,開發和服務於企業級後臺產品。

特性

  • 提煉自企業級中後臺產品的交互語言和視覺風格,定期與 Ant Design React 版本保持更新一致。
  • 開箱即用的高質量 Angular 組件。
  • 使用 TypeScript 構建,提供完整的類型定義文件。

支持環境

  • 現代瀏覽器和 IE9 以上(需要 polyfills)。

兼容版本

當前支持 Angular 4.0.0 版本

阿里十大開源項目

8:容器技術Pouch

2017年杭州雲棲大會中,阿里巴巴正式宣佈,自主研發的容器技術 Pouch 將以開源的形式回饋社區,希望與開發者共同推動中國容器技術發展,共建容器生態。

阿里十大開源項目

阿里Pouch並不是一個完全創新的技術。最早,阿里基於LXC技術為集團業務提供容器服務,2011年,阿里自研容器技術T4,2016年,阿里內部將容器技術重新命名為Pouch,並於去年支持集團內部大量核心業務,比如電商平臺核心業務、主要應用和部分數據庫、螞蟻金服的支付業務,淘寶網的交易業務等等。

關於Pouch的命名由來,源於阿里作為開放賦能者,注重用戶場景應用的初衷。正如阿里巴巴技術專家孫宏亮所言,Pouch作為從阿里巴巴集團內部大規模場景自研技術,相比docker、rkt等容器技術,差異化的核心價值體現在以下幾個方面:

  • 富容器技術:容器內部的應用體驗如虛擬機般,擁有init進程,且富含系統服務;
  • 豐富的隔離保障:隔離安全避無可避,內核加固與輕量級虛擬機支持,豐富隔離維度;
  • P2P鏡像分發:超大規模場景下的鏡像分發,P2P的方式緩解網絡負載;
  • 內核兼容性:企業內核的升級往往較為緩慢,最大限度適配現有底層基礎設施。

9:開源數據庫AliSQL

AliSQL是基於MySQL官方版本的一個分支,由阿里雲數據庫團隊維護,目前也應用於阿里巴巴集團業務以及阿里雲數據庫服務。該版本在社區版的基礎上做了大量的性能與功能的優化改進。尤其適合電商、雲計算以及金融等行業環境。

阿里雲數據庫資深專家丁奇介紹,AliSQL版本在強度和廣度上都經歷了極大的考驗。最新的AliSQL版本不僅從其他開源分支比如:Percona,MariaDB,WebScaleSQL等社區汲取精華,也沉澱了阿里巴巴多年在MySQL領域的經驗和解決方案。AliSQL增加更多監控指標,並針對電商秒殺、物聯網大數據壓縮、金融數據安全等場景提供個性化的解決方案。

“在通用基準測試場景下,AliSQL版本比MySQL官方版本有著70%的性能提升。在秒殺場景下,性能提升100倍。”丁奇表示。

阿里雲資深總監李津表示,“AliSQL的發展得到了眾多智慧的支持。我們希望將過去幾年沉澱的技術積累回饋到社區,幫助更多使用MySQL的個人和企業,這是社區良性發展的道路。我們也歡迎更多的開發者和技術團隊加入AliSQL開源項目,使之在業內發揮更大的價值。”

和 Oracle 數據庫的性能比較:

阿里十大開源項目

10:可視化編碼的圖形語法AntV - G2

G2 是一套基於可視化編碼的圖形語法,以數據驅動,具有高度的易用性和擴展性,用戶無需關注各種繁瑣的實現細節,一條語句即可構建出各種各樣的可交互的統計圖表。

同時,G2 也是 AntV 最重要的組成,始於《The Grammar of Graphics》一書描述的視覺編碼語法系統(這也是 G2 項目命名的由來)。

特性

  • 簡單、易用:從數據出發,僅需幾行代碼就可以輕鬆獲得想要的圖表展示效果
  • 完備的可視化編碼:以數據驅動,提供了從數據到圖形的完整映射
  • 強大的擴展能力:任何圖表,都可以基於圖形語法靈活繪製,滿足你無限的創意

示例

柱狀圖

阿里十大開源項目

完整代碼:

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>柱狀圖</title> <!-- 引入 G2 文件 --> <script src="https://gw.alipayobjects.com/as/g/datavis/assets/1.0.5/g2/3.0.0/g2.min.js"></script> </head> <body> <!-- 創建圖表容器 --> <div id="c1"></div> <script> const data = [
{ genre: 'Sports', sold: 275 },
{ genre: 'Strategy', sold: 115 },
{ genre: 'Action', sold: 120 },
{ genre: 'Shooter', sold: 350 },
{ genre: 'Other', sold: 150 }
]; // G2 對數據源格式的要求,僅僅是 JSON 數組,數組的每個元素是一個標準 JSON 對象。 // Step 1: 創建 Chart 對象 const chart = new G2.Chart({
container: 'c1', // 指定圖表容器 ID width : 600, // 指定圖表寬度 height : 300 // 指定圖表高度 });
// Step 2: 載入數據源 chart.source(data);
// Step 3:創建圖形語法,繪製柱狀圖,由 genre 和 sold 兩個屬性決定圖形位置,genre 映射至 x 軸,sold 映射至 y 軸 chart.interval().position('genre*sold').color('genre')
// Step 4: 渲染圖表 chart.render();
</script> </body></html>

相關推薦

推薦中...