1. 程式人生 > >大公司都有哪些開源專案

大公司都有哪些開源專案

大公司都有哪些開源專案

紅色字型是現階段比較火的

----------------------------------------------------------------------------------------------------------------

奇虎360 https://github.com/Qihoo360

1.MySQL中間層 Atlas

Atlas是由 Qihoo 360,  Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的資料中間層專案。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該專案在360公司內部得到了廣泛應用,很多MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達幾十億條。

主要功能:
* 讀寫分離
* 從庫負載均衡
* IP過濾
* SQL語句黑白名單
* 自動分表

更多內容:https://github.com/Qihoo360/Atlas

 

2.360黑科技=》DroidPlugin 

​DroidPlugin 是360手機助手在 Android 系統上實現了一種新的外掛機制:它可以在無需安裝、修改的情況下執行APK檔案,此機制對改進大型APP的架構,實現多團隊協作開發具有一定的好處。

特點:

  1. 支援Androd 2.3以上系統

  2. 外掛APK完全不需做任何修改,可以獨立安裝執行、也可以做外掛執行。要以外掛模式執行某個APK,你無需

    重新編譯、無需知道其原始碼。

  3. 外掛的四大元件完全不需要在Host程式中註冊,支援Service、Activity、BroadcastReceiver、ContentProvider四大元件

  4. 外掛之間、Host程式與外掛之間會互相認為對方已經"安裝"在系統上了。

  5. API低侵入性:極少的API。HOST程式只是需要一行程式碼即可整合Droid Plugin

  6. 超強隔離:外掛之間、外掛與Host之間完全的程式碼級別的隔離:不能互相呼叫對方的程式碼。通訊只能使用Android系統級別的通訊方法。

  7. 支援所有系統API

  8. 資源完全隔離:外掛之間、與Host之間實現了資源完全隔離,不會出現資源竄用的情況。

  9. 實現了程序管理,外掛的空程序會被及時回收,佔用記憶體低。

  10. 外掛的靜態廣播會被當作動態處理,如果外掛沒有執行(即沒有外掛程序執行),其靜態廣播也永遠不回被觸發。

更多檢視:https://github.com/Qihoo360/DroidPlugin/

 

3.高效能分散式儲存服務 HustStore

huststore 是一個高效能的分散式儲存服務,不但提供了 10w QPS 級別的 kv 儲存的功能,還提供了 hash、set 等一系列資料結構的支援,並且支援 二進位制 的 kv 儲存,可以完全取代 Redis 的功能。此外,huststore 還結合特有的 HA 模組實現了分散式訊息佇列的功能,包括訊息的流式推送,以及訊息的 釋出-訂閱 等功能,可以完全取代 RabbitMQ 的功能。

特性

huststore 分為 hustdb 以及 HA 模組兩大部分。hustdb (儲存引擎)的底層設計採用了自主開發的 fastdb,通過一套獨特的 md5 db 將QPS 提升至 10w 級別的水準(含網路層的開銷)。HA 以 nginx 模組的方式開發。nginx 是工業級的 http server 標準,得益於此,huststore 具備以下特性:

    • 高吞吐量
      hustdb 的網路層採用了開源的 libevhtp 來實現,結合自主研發的高效能 fastdb 儲存引擎,效能測試 QPS 在 10w 以上。

    • 高併發
      參考 nginx 的併發能力。

    • 高可用性
      huststore 整體架構支援 Replication (master-master),支援 load balance 。
      HA 的可用性由nginx 的 master-worker 架構所保證。當某一個 worker 意外掛掉時, master 會自動再啟動一個 worker 程序,而且多個 worker 之間是相互獨立的,從而保證了 HA 的高可用性。
      huststore 的高可用性由其整體架構特點保證。由於 hustdb 的儲存節點採用了 master-master 的結構,當某一個儲存節點掛掉時,HA 會自動將請求打到另外一臺 master,同時 HA 會按照自動進行負載均衡,將資料分佈儲存在多個 hustdb節點上,因此儲存引擎不存在單點限制。
      同時 HA 叢集本身也是分散式的設計,而且每個 HA 節點都是獨立的,當某一臺 HA 掛掉時, LVS 會自動將請求打到其他可用的 HA 節點,從而解決了 HA 得單點限制。

    • 通用性的介面
      huststore 使用 http 作為通用協議,因此客戶端的實現不限制於語言。

    • 支援二進位制的 key-value

更多檢視:https://github.com/Qihoo360/huststore

 

4.分散式配置管理工具 QConf

QConf 是奇虎 360 內部分散式配置管理工具。用來替代傳統的配置檔案,使得配置資訊和程式程式碼分離,同時配置變化能夠實時同步到客戶端,而且保證使用者高效讀取配置,這使的工程師從瑣碎的配置修改、程式碼提交、配置上線流程中解放出來,極大地簡化了配置管理工作。

特點

  • 一處修改,所有機器實時同步更新

  • 高效讀取配置

  • 安裝部署方便,使用簡單

  • 伺服器宕機、網路中斷、叢集遷移等異常情況對使用者透明

  • 支援c/c++、shell、php、python、lua 等語言

更多檢視:https://github.com/Qihoo360/QConf

 

5.開源類Redis儲存系統 Pika

Pika 是 360 DBA 和基礎架構組聯合開發的類 Redis 儲存系統,完全支援 Redis 協議,使用者不需要修改任何程式碼,就可以將服務遷移至 Pika。有維護 Redis 經驗的 DBA 維護 Pika 不需要學習成本。

Pika 主要解決的是使用者使用 Redis 的記憶體大小超過 50G、80G 等等這樣的情況,會遇到啟動恢復時間長,一主多從代價大,硬體成本貴,緩衝區容易寫滿等問題。Pika 就是針對這些場景的一個解決方案。

特點

  • 容量大,支援百G資料量的儲存

  • 相容redis,不用修改程式碼即可平滑從redis遷移到pika

  • 支援主從(slaveof)

  • 完善的運維命令

更多內容:https://github.com/Qihoo360/pika

 

6.物件快取伺服器 kmemcache

分散式linux核心記憶體物件快取伺服器,實現基於memcached v1.4.15,基本相容memcached的所有操作。經初步測試,記憶體資料操作比memcached快1倍,網路併發量比memcached的也大許多,目前處於alpha版本。

優點:由於在核心的socket層實現,所有處理網路事件效能比epoll機制快,另外無需記憶體由使用者空間到核心空間的拷貝。

缺點:不建議在32bits下使用。

更多內容: https://github.com/Qihoo360/kmemcache

 

7.ngx_http_subrange_module

當Nginx作為檔案下載服務的反向代理,使用者請求一個非常大的檔案的時候,它會一直佔滿反向代理伺服器與後端主機之間的頻寬。因為nginx一次獲取整個檔案,緩衝獲取到的檔案,導致客戶端不能馬上讀取到。頻寬使用和iowait會很高。

ngx_http_subrange_module就是為了解決這個問題,它能分割HTTP requests。將大資料量的HTTP請求切分為多個子請求,當下載一個1 G的檔案,subrange將從後端主機中下載檔案塊,比如先獲取5 M,然後再獲取5 M,直到客戶端下載完整個檔案。

更多檢視:https://github.com/Qihoo360/ngx_http_subrange_module

 

8.同步到非同步的類庫 Mario

Mario是一個讓編寫從同步到非同步的類庫,它的執行緒安全較大,易於使用。Mario 的最基本的想法就是為了減少人員的安排,降低成本和時間投入。但是有了這個類庫,操作人員就可以抽出精力做別的事情了。所以 Mario 類庫能夠很輕易的解決你的問題,你只需要你自己的訊息功能。

引擎型別:

  • memory,這種型別就是將資料緩衝儲存器留在記憶體裡。

  • file,這種型別就是能夠在本地日誌路徑裡建立做出一個 write2file。

更多檢視:https://github.com/Qihoo360/Mario

 

其他系列請去360github庫觀看

 ----------------------------------------------------------------------------------------------------------------

百度 Baidu https://github.com/fex-team/

https://github.com/ecomfe

 

1.UEditor 編輯器

UEditor是由百度web前端研發部開發所見即所得富文字web編輯器,具有輕量,可定製,注重使用者體驗等特點。

主要特點:

輕量級:程式碼精簡,載入迅速。

定製化:
全新的分層理念,滿足多元化的需求。
採用三層架構:
1. 核心層: 為命令層提供底層API,如range/selection/domUtils類。
2. 命令外掛層: 基於核心層開發command命令,命令之間相互獨立。
3. 介面層: 為命令層提供使用者使用介面。
滿足不同層次使用者的需求。

https://github.com/fex-team/ueditor

https://github.com/fex-team/umeditor

 

2.ECharts 圖表庫

ECharts開源來自百度商業前端資料視覺化團隊,基於html5 Canvas,是一個純Javascript圖表庫,提供直觀,生動,可互動,可個性化定製的資料視覺化圖表。創新的拖拽重計算、資料檢視、值域漫遊等特性大大增強了使用者體驗,賦予了使用者對資料進行挖掘、整合的能力。提供商業產品常用圖表,底層基於ZRender(一個全新的輕量級canvas類庫),建立了座標系,圖例,提示,工具箱等基礎元件,並在此上構建出折線圖(區域圖)、柱狀圖(條狀圖)、散點圖(氣泡圖)、餅圖(環形圖)、K線圖、地圖、力導向佈局圖以及和絃圖,同時支援任意維度的堆積和多圖表混合展現。

更多:https://github.com/ecomfe/echarts

 

ECharts-X是 ECharts 團隊推出的全新 3D 視覺化庫,它是基於 ECharts 的擴充套件,底層深度整合了 WebGL 庫QTEK和 Canvas2D 庫ZRender。

擴充套件:https://github.com/ecomfe/echarts-x

 

3.WebUploader 上傳控制元件

WebUploader 是由Baidu WebFE(FEX)團隊開發的一個簡單的以HTML5為主,FLASH為輔的現代檔案上傳元件。在現代的瀏覽器裡面能充分發揮HTML5的優勢,同時又不摒棄主流IE瀏覽器,延用原來的FLASH執行時,相容IE6+,Andorid 4+,IOS 6+。兩套執行時,同樣的呼叫方式,可供使用者任意選用。採用大檔案分片併發上傳,極大的提高了檔案上傳效率。

https://github.com/fex-team/webuploader

 

4.百度腦圖 KityMinder

KityMinder 是百度FEX團隊的f-cube小組(原UEditor小組)的又一力作。作為一款線上的腦圖編輯工具,它有著很多Native編輯工具的互動體驗。KM與UE有著一樣的宗旨,就是注重終端使用者的使用體驗。同時,它充分發揮了Web雲端儲存的優勢,可以直接將編輯中的腦圖同步到雲端。此外,藉由獨創的 “雲盤分享”功能,使用者可以一鍵將當前編輯的腦圖直接生成線上連結共享給其他使用者,實現無縫溝通。
KM是基於SVG技術實現,使用JavaScript+html實現。支援絕大多數的主流瀏覽器。
支援列表如下
1. chrome
2. firefox
3. safari
4. ie9-11

https://github.com/fex-team/kityminder

 

5.人工智慧系統 WARP-CTC

WARP-CTC 基於 CTC 方法,當前可用的一些 CTC 實現通常要求大量的記憶體或者是慢十到幾百倍。

百度研究所首席科學家 Andrew Ng 稱他的研究主要是人工神經網路如何在圖形處理單元 (GPUs) 上執行,讓 WARP-CTC 實現對 GPUs 和 x86 CPUs 的支援。

connectionist temporal classification (CTC) 方法可以追溯到 2006 年,在 Swiss AI 研究所 IDSIA 論文上有記錄。 百度研究所開發的 WARP-CTC 就基於 CTC 方案,但是改進了其自身的語音識別功能

https://github.com/baidu-research/warp-ctc

 

其他系列請去baidu github庫觀看

 ----------------------------------------------------------------------------------------------------------------

騰訊 QQ http://alloyteam.github.io/

https://github.com/AlloyTeam/Mars

1.WeUI 為微信Web服務量身設計

WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信 Web 開發量身設計,可以令使用者的使用感知更加統一。包含buttoncelldialog、 progress、 toastarticleactionsheeticon等各式元素。

https://github.com/weui/weui

 

2.手機前端開發除錯利器 vConsole

我們在開發手機版網頁的時候,常常會出現下面的情景:

 (1) 開發時,在自己電腦上執行得好好的,在手機上開啟就掛了,但是手機上又看不到error log; 

 (2) 上線後,某使用者表示頁面失靈,但我們自己又重現不出來,看不到使用者側的出錯資訊。

如果說(1)還可以通過電腦連線手機以檢視log來解決,那(2)在沒有完善的前端上報體系時就非常被動了。

作為開發者,我們的訴求很簡單:有沒有快捷的方法在手機前端頁面看到log日誌?vConsole就這樣出現了!

https://github.com/WechatFE/vConsole

 

3.專業級Web影象處理引擎 AlloyImage

AlloyImage是一個使用Javascript語言開發的,基於Web的線上影象處理引擎,除了核心底層影象處理引擎,還同時集成了一些方便快捷的影象處理API,您可以將它簡單快捷的引用到您的Web網頁中,做出與PhotoShop一樣的優美效果。甚至,你可以用AlloyImage來開發一個Web線上影象處理軟體。

https://github.com/AlloyTeam/AlloyImage

https://github.com/AlloyTeam/AlloyPhoto 

 

4. GoPng 圖片合併並生成CSS

Css Sprite,有時也稱為雪碧圖、精靈圖,是每一個前端開都會遇到的問題,也是常見的小圖片載入優化手段。 

線上版本:https://alloyteam.github.io/gopng/

原始碼地址:https://github.com/AlloyTeam/gopng

合成分解:https://github.com/luyongfugx/hcSpriteCuter (一個由多張小圖合併而成的雪碧圖中摳出其中一張或者幾張圖片)

 

5.視覺化Web構建工具 AlloyDesigner

AlloyDesigner 是一款致力於提高前端生產效率的瀏覽器內執行工具,AlloyDesigner + Chrome F12(Especially with WorkSpace)  打造前端新的開發和測試模式

https://github.com/AlloyTeam/AlloyDesigner

 

6.Koala跨平臺圖形編譯工具

Koala是一款前處理器語言圖形編譯工具,支援Less、Sass、CoffeeScript、Compass framework 的即時編譯。 無需手動輸入命令去編譯,後臺監聽檔案是否有改變,如有修改會自動進行編譯。能夠大大提升 Web 開發中的工作效率。

功能特性

  • 多語言支援 支援Less、Sass、CoffeeScript 和 Compass Framework。

  • 實時編譯 監聽檔案,當檔案改變時自動執行編譯,這一切都在後臺執行,無需人工操作。

  • 編譯選項 可以設定各個語言的編譯選項。

  • 專案配置 支援為專案建立一個全域性配置,為檔案設定統一編譯選項。

  • 錯誤提示 在編譯時如果遇到語法的錯誤,koala將在右下角彈出錯誤資訊,方便開發者定位程式碼錯誤位置。

  • 跨平臺 Windows、Linux、Mac都能完美執行。

系統支援及要求

Koala支援跨平臺執行,完美相容Windows、Linux與Mac 。
Linux系統下需安裝好ruby執行環境, e.g. $ sudo apt-get install ruby.

https://github.com/oklai/koala

 

7.輕量級 CSS3 動畫庫 JX.Animate

JX.Animate 是一個開源的輕量級的CSS3動畫庫。動畫可以使用標準的CSS3關鍵幀動畫(KeyFrame)製作,也可以使用JavaScript製作,而且還可以支援在JavaScript中動態生成動畫關鍵幀。

https://github.com/AlloyTeam/JXAnimate

 

8.Fanvas swf轉為html5 canvas

Fanvas是一個把swf轉為html5 canvas動畫的系統,由兩部分組成:Actionscript實現的解析器、js執行庫。Flash做動畫是最成熟最高效的方式,但由於終端基本不支援Flash播放,這給終端的動畫製作帶來了不少麻煩。Fanvas是Flash和Canvas的完美結合,可以把swf(包括向量和點陣圖)完美地轉化為canvas動畫.

https://github.com/TencentOpen/Fanvas

 

9.隨身調測平臺 GT

GT(隨身調)是APP的隨身調測平臺,它是直接執行在手機上的“整合調測環境”(IDTE, Integrated Debug Environment)。利用GT,僅憑一部手機,無需連線電腦,您即可對APP進行快速的效能測試(CPU、記憶體、流量、電量、幀率/流暢度等等)、 開發日誌的檢視、Crash日誌檢視、網路資料包的抓取、APP內部引數的除錯、真機程式碼耗時統計等。如果您覺得GT提供的功能還不夠滿足您的需要,您還 可以利用GT提供的基礎API自行開發有特殊功能的GT外掛,幫助您解決更加複雜的APP除錯問題。

https://github.com/TencentOpen/GT

 

10.Frozen UI 移動端UI框架

Frozen UI是一個開源的簡單易用,輕量快捷的移動端UI框架。基於手Q樣式規範,選取最常用的元件,做成手Q公用離線包減少請求,升級方式友好,文件完善,目前全面應用在騰訊手Q增值業務中。

https://github.com/frozenui/frozenui

 

11.LivePool  Web 開發除錯工具

LivePool 是一個基於 NodeJS,類似 Fiddler 支援抓包和本地替換的 Web 開發除錯工具,是 Tencent AlloyTeam 在開發實踐過程總結出的一套的便捷的 WorkFlow 以及除錯方案。

特性

  • 基於 NodeJS, 跨平臺

  • 支援 http 抓包和本地替換除錯,Https/WebSockets 直接代理轉發(暫不支援本地替換)

  • 便捷的 UI 管理介面,跟 Fiddler 類似,降低學習成本

  • 可以脫離 UI 後臺執行,適應於某些不需要抓包,只需要使用替換和簡單路由的場景

  • 基於專案的替換規則管理,方便高效,規則支援拖曳排序

  • 支援基於請求路徑的本地檔案替換,支援基於請求路徑的路由轉發(host 配置)

  • 替換型別支援:檔案/資料夾替換,combo合併替換,qzmin替換(批量combo),delay延時等

  • 支援自動設定系統代理

  • 支援規則過濾,只顯示關注的請求

  • 提供構建 http get/post 請求介面,方便介面除錯

  • 特色功能:模擬gprs/3g等低網速(mac only)

  • 特色功能:支援離線站點到本地,並自動程式碼格式化

https://github.com/rehorn/livepool

 

12.KNVProtoEngine 高效能樹型協議處理引擎

KNV是一個模式自由的高效能樹型協議處理引擎,是對Key-Value的一個通用結構化擴充套件。

應用特性

正如NoSQL對SQL的徹底變革一樣,KNV是對Key-Value的徹底變革!
大家都很熟悉Key-Value系統,但KV操作極不方便:
-- 你不得不自己做樂觀鎖(讀返回seq->修改->帶seq寫->seq變化則重頭開始);
-- 你不得不拉取一堆資料,然後再提取你想要的部分;
-- 為了修改一個bit,你不得不把一串資料拉取修改後再一起提交更新
不過現在有KNV,一切都解決了。KNV時代來了,你還在猶豫嗎?

應用場景

KNV是專門針對以Protocol Buffers(或類似樹型結構)儲存的儲存系統開發的,有3個應用場景:

  1. 儲存系統 處理使用者請求的通用解決方法(Get/Set/Delete),可以適配任意使用者自定義的資料結構。

  2. 代理/通用邏輯層 伺服器處理Protocol Buffers協議的通用方法 – 比如通用Proxy,透傳多個協議, 對請求包進行鑑權、限頻、統計等等操作,還支援對包體內容進行審計,使用KNV協議, 這種方法就有可能而且很簡單。

  3. 原生態 Protocol Buffers打解包庫 的高效能代替品。

https://github.com/TencentOpen/KNVProtoEngine

 

13.Behaviac 遊戲AI的開發框架元件

Behaviac是遊戲AI的開發框架元件,也是遊戲原型的快速設計工具。支援行為樹BT,狀態機FSM,HTN等多種正規化,方便的編輯和除錯。支援全平臺,適用於客戶端和伺服器,助力遊戲快速迭代開發。編輯器可以執行在PC上,操作方便直觀可靠,支援實時和離線除錯;編輯器可以匯出xml,bson等多種格式,更可以匯出C++,C#原始碼,提供最高效率。執行時支援全平臺,有C++和C#兩個版本,原生支援Unity。

已被《天天炫鬥》、《QQ飛車》、《全民突擊》、《全民奪寶》、《九龍戰》等遊戲及其他更多預研專案使用。

https://github.com/TencentOpen/behaviac

 

14.現代構建系統 Typhoon Blade

Blade主要定位於linux下的大型C++專案,密切配合研發流程,比如單元測試,持續整合,覆蓋率統計等。但像unix下的文字過濾程式一 樣,保持相對的獨立性,可以單獨執行。目前重點支援i386/x86_64 Linux,未來可以考慮支援其他的類Unix系統。

特點:

  • 自動分析標頭檔案依賴關係,構建受影響的程式碼。

  • 增量編譯和連結,只構建因變更受影響而需要構建的。

  • 自動計算庫的間接依賴,庫的作者只需要寫出直接依賴,構建時自動檢查所依賴的庫是否需要重新構建。

  • 在任意程式碼樹的任意子目錄下都能構建。

  • 支援一次遞迴構建多個目錄下的所有目標,也支援只構建任意的特定的目標。

  • 無論構建什麼目標,這些目標所依賴的目標也會被自動連坐更新。

  • 內建 debug/release 兩種構建型別。

  • 彩色高亮構建過程中的錯誤資訊。

  • 支援 ccache

  • 支援 distcc

  • 支援基於構建多平臺目標

  • 支援構建時選擇編譯器(不同版本的gcc,clang等)

  • 支援編譯 protobuf,lex, yacc, swig

  • 支援自定義規則

  • 支援測試,在命令列跑多個測試

  • 支援並行測試(多個測試程序併發執行)

  • 支援增量測試(無需重新執行的測試程式自動跳過)

  • 整合 gperftools,自動檢測測試程式的記憶體洩露

  • 構建指令碼 vim 語法高亮

  • svn 式的子命令命令列介面。

  • 支援 bash 命令列補全

  • 用 Python 編寫,無需編譯,直接安裝使用。

徹底避免以下問題:

  • 標頭檔案更新,受影響的模組沒有重新構建。

  • 被依賴的庫需要更新,而構建時沒有被更新,比如某子目錄依賴遙遠的某外部目錄的程式碼,我在這個目錄構建,外部目錄的程式碼會被自動檢查是否也需要重新構建。

https://github.com/chen3feng/typhoon-blade

 

15.RapidJSON C++的JSON開發包

Rapidjson 是一個 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 風格的 API 設計。

https://github.com/miloyip/rapidjson

 

 更多請自行檢視:http://alloyteam.github.io/

 ----------------------------------------------------------------------------------------------------------------

新浪:WeiBo https://github.com/weibocom

1.分散式快取伺服器 memcachedb

memcachedb是 一個由新浪網的開發人員開放出來的開源專案,給memcached分散式快取伺服器添加了Berkeley DB的持久化儲存機制和非同步主輔複製機制,讓memcached具備了事務恢復能力、持久化能力和分散式複製能力,非常適合於需要超高效能讀寫速度,但是 不需要嚴格事務約束,能夠被持久化儲存的應用場景,例如memcachedb被應用在新浪部落格上面。

https://github.com/stvchu/memcachedb

2.動態流量管理方案 Upsync

Upsync,微博開源基於Nginx容器動態流量管理方案 。Nginx 以其超高的效能與穩定性,在業界獲得了廣泛的使用,微博的七層就大量使用了 Nginx 。結合 Nginx 的健康檢查模組,以及動態 reload 機制,可以近乎無損的服務的升級上線與擴容。這個時候擴容的頻次比較低,大多數情況下是有計劃的擴容。Upsync,開發了模組 nginx-upsync-module,它的功能是拉取 consul 的後端 server 的列表,並更新 Nginx 的路由資訊。此模組不依賴於任何第三方模組。consul 作為 Nginx 的 db,利用 consul 的 KV 服務,每個 Nginx work 程序獨立的去拉取各個 upstream 的配置,並更新各自的路由。

https://github.com/weibocom/nginx-upsync-module

3.高效能的核心 Socket 實現 Fastsocket

Fastsocket 是一個高擴充套件性的 Socket 以及 Linux 核心的底層網路實現。可以在多核機器上提供極好的效能,此外使用和維護還非常簡單。目前該專案已經在新浪的生產環境中使用。該專案由清華大學和新浪網聯合組成的 Fastos 團隊開發,該團隊的使命是提升 Linux 核心的效率。Fastsocket 目前已經使用在新浪微博的生產環境上,主要用於提供負載均衡服務的 HAProxy,線上實際效能提升一倍,從2014年3月份穩定執行至今,預計2014年底完成負載均衡全部叢集的 Fastsocket 升級。Fastsocket 完全相容 BSD Socket API,現有各類基於 Socket 的網路應用可以直接使用 Fastsockt。 目前經過相容測試的常用服務軟體有:HAProxy、Nginx、Lighttpd、Redis 和 Memcached。

https://github.com/fastos/fastsocket

4.輕量級 RPC 框架 Motan

Motan 是一套高效能、易於使用的分散式遠端服務呼叫(RPC)框架。

功能

  • 支援通過spring配置方式整合,無需額外編寫程式碼即可為服務提供分散式呼叫能力。

  • 支援整合consul、zookeeper等配置服務元件,提供叢集環境的服務發現及治理能力。

  • 支援動態自定義負載均衡、跨機房流量調整等高階服務排程能力。

  • 基於高併發、高負載場景進行優化,保障生產環境下RPC服務高可用。

https://github.com/weibocom/motan

5.TCP 效能剖析工具 Tcpdive

Tcpdive 是 TCP 效能剖析工具,主要特性:

  • 更多 TCP 內部效能資訊

  • 定量評估 TCP 效能改進

  • 描述在 TCP 層的 HTTP 處理,依賴於 HTTP Apps

  • 容易部署,使用友好

Tcpdive 已經在新浪的生產環境上部署使用:

  • 提高微博圖片服務質量

  • 提高微博視訊服務質量

  • 在有線和無線網路中比較 TCP 效能

  • 記錄不同應用的 TCP 流量

https://github.com/fastos/tcpdive

6.PHP框架 Yaf

Yaf是一個C語言編寫的PHP框架,Yaf 的特點:

  1. 用C語言開發的PHP框架, 相比原生的PHP, 幾乎不會帶來額外的效能開銷.

  2. 所有的框架類, 不需要編譯, 在PHP啟動的時候載入, 並常駐記憶體.

  3. 更短的記憶體週轉週期, 提高記憶體利用率, 降低記憶體佔用率.

  4. 靈巧的自動載入. 支援全域性和區域性兩種載入規則, 方便類庫共享.

  5. 高效能的檢視引擎.

  6. 高度靈活可擴充套件的框架, 支援自定義檢視引擎, 支援外掛, 支援自定義路由等等.

  7. 內建多種路由, 可以相容目前常見的各種路由協議.

  8. 強大而又高度靈活的配置檔案支援. 並支援快取配置檔案, 避免複雜的配置結構帶來的效能損失.

  9. 在框架本身,對危險的操作習慣做了禁止.

  10. 更快的執行速度, 更少的記憶體佔用.

https://github.com/laruence/yaf

----------------------------------------------------------------------------------------------------------------

小米:XiaoMi https://github.com/XiaoMi

1.分散式的釋出和監控系統 Minos

Minos 是小米公司開發的一個分散式的釋出和監控系統。最初是小米開發的用來在 Hadoop 和 ZooKeeper 叢集上釋出和管理的工具。Minos 可輕鬆擴充套件來支援其他的系統,目前已經支援包括 HDFS、YARN 和 Impala 。

https://github.com/XiaoMi/minos

 

2.網際網路企業級監控系統 OpenFalcon

Open-Falcon 是小米運維部開源的一款網際網路企業級監控系統解決方案.

監控系統是整個運維環節,乃至整個產品生命週期中最重要的一環,事前及時預警發現故障,事後提供翔實的資料用於追查定位問題。監控系統作為一個成熟的運維產品,業界有很多開源的實現可供選擇。當公司剛剛起步,業務規模較小,運維團隊也剛剛建立的初期,選擇一款開源的監控系統,是一個省時省力,效率最高的方案。之後,隨著業務規模的持續快速增長,監控的物件也越來越多,越來越複雜,監控系統的使用物件也從最初少數的幾個SRE,擴大為更多的DEVS,SRE。這時候,監控系統的容量和使用者的“使用效率”成了最為突出的問題。

監控系統業界有很多傑出的開源監控系統。我們在早期,一直在用zabbix,不過隨著業務的快速發展,以及網際網路公司特有的一些需求,現有的開源的監控系統在效能、擴充套件性、和使用者的使用效率方面,已經無法支撐了。

因此,我們在過去的一年裡,從網際網路公司的一些需求出發,從各位SRE、SA、DEVS的使用經驗和反饋出發,結合業界的一些大的網際網路公司做監控,用監控的一些思考出發,設計開發了小米的監控系統:Open-Falcon。

Highlights and features

  • 資料採集免配置:agent自發現、支援Plugin、主動推送模式
  • 容量水平擴充套件:生產環境每秒50萬次資料收集、告警、儲存、繪圖,可持續水平擴充套件。
  • 告警策略自發現:Web介面、支援策略模板、模板繼承和覆蓋、多種告警方式、支援回撥動作。
  • 告警設定人性化:支援最大告警次數、告警級別設定、告警恢復通知、告警暫停、不同時段不同閾值、支援維護週期,支援告警合併。
  • 歷史資料高效查詢:秒級返回上百個指標一年的歷史資料。
  • Dashboard人性化:多維度的資料展示,使用者自定義Dashboard等功能。
  • 架構設計高可用:整個系統無核心單點,易運維,易部署。

https://github.com/XiaoMi/open-falcon

 

3.物聯網框架 IoT.js

IoT.js 旨在為物聯網提供一個基於 Web 技術的可相互操作的服務平臺。IoT.js 的目標是要在資源受限的裝置上良好執行,例如只有幾 KB 的 RAM。所以它支援廣泛的物聯。

https://github.com/Samsung/iotjs

----------------------------------------------------------------------------------------------------------------

豆瓣 DouBan https://github.com/douban

 

1.分散式計算框架 DPark

DPark 是 Spark 的 Python 克隆,是一個Python實現的分散式計算框架,可以非常方便地實現大規模資料處理和迭代計算。 DPark 由豆瓣實現,目前豆瓣內部的絕大多數資料分析都使用DPark 完成,正日趨完善。

https://github.com/douban/dpark

 

2.iOS/Mac 音訊播放器 DOUAudioStreamer

DOUAudioStreamer 是 iOS 和 Mac 的基於核心音訊的流媒體音訊播放器。

https://github.com/douban/DOUAudioStreamer

 

3.CODE 豆瓣程式碼託管系統

Douban CODE 是豆瓣開發的一個基於 git 版本控制系統的協作平臺。

CODE —— C: Community O: Original D: Developer E: Eldamar

目前 CODE 僅開放了一個框架,支援:

  • clone & push project

  • create project

  • create user

準備環境

  • MySQL

  • Memcached

  • Python >= 2.7

  • pip >= 1.4.1

  • virtualenv

  • git

https://github.com/douban/code

 

----------------------------------------------------------------------------------------------------------------

網易 NetEase https://github.com/netease

 

1.分散式TCP壓力測試工具 tcpcopy

tcpcopy是一種應用請求複製(基於tcp的packets)工具,其應用領域較廣,目前已經應用於國內各大網際網路公司。

總體說來,tcpcopy主要有如下功能:

1)分散式壓力測試工具,利用線上資料,可以測試系統能夠承受的壓力大小(遠比ab壓力測試工具真實地多),也可以提前發現一些bug
2)普通上線測試,可以發現新系統是否穩定,提前發現上線過程中會出現的諸多問題,讓開發者有信心上線
3)對比試驗,同樣請求,針對不同或不同版本程式,可以做效能對比等試驗
4)利用多種手段,構造無限線上壓力,滿足中小網站壓力測試要求
5)實戰演習(架構師必備)

https://github.com/session-replay-tools/tcpcopy

 

2.桌面應用軟體的跨平臺解決方案 heX

heX 是網易有道搜尋部門開發的一個允許你採用前端技術(HTML,CSS,JavaScript)開發桌面應用軟體的跨平臺解決方案,基於HTML5 + node.js,類似appjs。是你開發桌面應用的一種新的選擇,意在解決傳統桌面應用開發中繁瑣的UI和互動開發工作,使其變的簡單而高效。特別適合重UI,重互動的桌面應用軟體。

https://github.com/netease-youdao/hex

https://github.com/netease-youdao/hex-samples

 

3.Android效能測試工具 Emmagee

Emmagee是監控指定被測應用在使用過程中佔用機器的CPU、記憶體、流量資源的效能測試小工具。

支援SDK:Android2.2以及以上版本

Emmagee功能介紹

1、檢測當前時間被測應用佔用的CPU使用率以及總體CPU使用量

2、檢測當前時間被測應用佔用的記憶體量,以及佔用的總體記憶體百分比,剩餘記憶體量

3、檢測應用從啟動開始到當前時間消耗的流量數

4、測試資料寫入到CSV檔案中,同時儲存在手機中

5、可以選擇開啟浮窗功能,浮窗中實時顯示被測應用佔用效能資料資訊

6、在浮窗中可以快速啟動或者關閉手機的wifi網路

<