阿里好的開源項目有哪些(善用工具)

阿里好的開源項目有哪些(善用工具)

1、總結

一句話總結:善用工具,能夠極大的提高開發效率。

 

一、阿里好的開源項目本身目前可能用得上的有哪些(舉兩個)?

JSON處理器 fastjsonhtml

開源數據庫AliSQL前端

 

 

2、阿里十大開源項目,看看你用過幾個

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);

JVM-Sandbox

JVM-Sandbox,JVM 沙箱容器,一種基於 JVM 的非侵入式運行期 AOP 解決方案。
JVM-SANDBOX 的核心功能:
實時無侵入 AOP 框架
在常見的 AOP 框架實現方案中,有靜態編織和動態編織兩種。

靜態編織

靜態編織發生在字節碼生成時根據必定框架的規則提早將 AOP 字節碼插入到目標類和方法中,實現 AOP;

動態編織

動態編織則容許在 JVM 運行過程當中完成指定方法的 AOP 字節碼加強。常見的動態編織方案大多采用重命名原有方法,再新建一個同簽名的方法來作代理的工做模式來完成 AOP 的功能(常見的實現方案如 CgLib),但這種方式存在一些應用邊界:
侵入性
對被代理的目標類須要進行侵入式改造。好比:在 Spring 中必須是託管於 Spring 容器中的 Bean
固化性
目標代理方法在啓動以後即固化,沒法從新對一個已有方法進行 AOP 加強

分佈式RPC服務框架 Dubbo

Dubbo 是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可經過高性能的 RPC 實現服務的輸出和輸入功能,能夠和 Spring 框架無縫集成。
主要核心部件:
  • Remoting: 網絡通訊框架,實現了 sync-over-async 和 request-response 消息機制
  • RPC: 一個遠程過程調用的抽象,支持負載均衡、容災和集羣功能
  • Registry: 服務目錄框架用於服務的註冊和服務事件發佈和訂閱

工做原理:java

 

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

Ant Design Pro

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

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的監控實現:docker

 

NG-ZORRO

NG-ZORRO 是一個企業級的 UI 組件庫,是 Ant Design 的 Angular 4.0 實現,開發和服務於企業級後臺產品。
特性
  • 提煉自企業級中後臺產品的交互語言和視覺風格,按期與 Ant Design React 版本保持更新一致。
  • 開箱即用的高質量 Angular 組件。
  • 使用 TypeScript 構建,提供完整的類型定義文件。
支持環境
  • 現代瀏覽器和 IE9 以上(須要 polyfills)。
兼容版本
  • 當前支持 Angular 4.0.0 版本

容器技術Pouch

2017年杭州雲棲大會中,阿里巴巴正式宣佈,自主研發的容器技術 Pouch 將以開源的形式回饋社區,但願與開發者共同推進中國容器技術發展,共建容器生態。
阿里Pouch並非一個徹底創新的技術。最先,阿里基於LXC技術爲集團業務提供容器服務,2011年,阿里自研容器技術T4,2016年,阿里內部將容器技術從新命名爲Pouch,並於去年支持集團內部大量核心業務,好比電商平臺核心業務、主要應用和部分數據庫、螞蟻金服的支付業務,淘寶網的交易業務等等。
關於Pouch的命名由來,源於阿里做爲開放賦能者,注重用戶場景應用的初衷。正如阿里巴巴技術專家孫宏亮所言,Pouch做爲從阿里巴巴集團內部大規模場景自研技術,相比docker、rkt等容器技術,差別化的核心價值體如今如下幾個方面:
  • 富容器技術:容器內部的應用體驗如虛擬機般,擁有init進程,且富含系統服務;
  • 豐富的隔離保障:隔離安全避無可避,內核加固與輕量級虛擬機支持,豐富隔離維度;
  • P2P鏡像分發:超大規模場景下的鏡像分發,P2P的方式緩解網絡負載;
  • 內核兼容性:企業內核的升級每每較爲緩慢,最大限度適配現有底層基礎設施。

開源數據庫AliSQL

AliSQL是基於MySQL官方版本的一個分支,由阿里雲數據庫團隊維護,目前也應用於阿里巴巴集團業務以及阿里雲數據庫服務。該版本在社區版的基礎上作了大量的性能與功能的優化改進。尤爲適合電商、雲計算以及金融等行業環境。
阿里雲數據庫資深專家丁奇介紹,AliSQL版本在強度和廣度上都經歷了極大的考驗。最新的AliSQL版本不只從其餘開源分支好比:Percona,MariaDB,WebScaleSQL等社區汲取精華,也沉澱了阿里巴巴多年在MySQL領域的經驗和解決方案。AliSQL增長更多監控指標,並針對電商秒殺、物聯網大數據壓縮、金融數據安全等場景提供個性化的解決方案。
「在通用基準測試場景下,AliSQL版本比MySQL官方版本有着70%的性能提高。在秒殺場景下,性能提高100倍。」丁奇表示。
阿里雲資深總監李津表示,「AliSQL的發展獲得了衆多智慧的支持。咱們但願將過去幾年沉澱的技術積累回饋到社區,幫助更多使用MySQL的我的和企業,這是社區良性發展的道路。咱們也歡迎更多的開發者和技術團隊加入AliSQL開源項目,使之在業內發揮更大的價值。」

和 Oracle 數據庫的性能比較:數據庫

 

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

G2 是一套基於可視化編碼的圖形語法,以數據驅動,具備高度的易用性和擴展性,用戶無需關注各類繁瑣的實現細節,一條語句便可構建出各類各樣的可交互的統計圖表。
同時,G2 也是 AntV 最重要的組成,始於《The Grammar of Graphics》一書描述的視覺編碼語法系統(這也是 G2 項目命名的由來)。
特性
  • 簡單、易用:從數據出發,僅需幾行代碼就能夠輕鬆得到想要的圖表展現效果
  • 完備的可視化編碼:以數據驅動,提供了從數據到圖形的完整映射
  • 強大的擴展能力:任何圖表,均可以基於圖形語法靈活繪製,知足你無限的創意
示例

柱狀圖npm

 

完整代碼:
<!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>

原文連接: http://mp.weixin.qq.com/s/sVlp39nazEidglWO3RBLoA
相關文章
相關標籤/搜索