BAT等大廠已開源的70個實用工具盤點(附下載地址)

MSUP發表於2017-10-12

前面的一篇文章《微軟、谷歌、亞馬遜、Facebook等矽谷大廠91個開源軟體盤點(附下載地址)》列舉了國外8個網際網路公司(包括微軟、Google、亞馬遜、IBM、Facebook、Twitter、eBay、VMware)的開源軟體專案,今天我們來盤點一下國內幾個體量較大的網際網路大廠(騰訊、百度、阿里、美團點評、華為)都有哪些開源軟體。快點Mark起來並轉發給需要的人吧。

百度開源軟體

1、ECharts:JavaScript 圖表庫
ECharts是一款由百度前端技術部開發的,基於Javascript的資料視覺化圖表庫,提供直觀,生動,可互動,可個性化定製的資料視覺化圖表。
提供大量常用的資料視覺化圖表,底層基於ZRender(一個全新的輕量級canvas類庫),建立了座標系,圖例,提示,工具箱等基礎元件,並在此上構建出折線圖(區域圖)、柱狀圖(條狀圖)、散點圖(氣泡圖)、餅圖(環形圖)、K線圖、地圖、力導向佈局圖以及和絃圖,同時支援任意維度的堆積和多圖表混合展現。
詳情:www.oschina.net/p/echarts
GitHub地址:
github.com/baidu/echar…

2、ApolloAuto:開源自動駕駛平臺
Apollo (阿波羅)是一個開放的、完整的、安全的平臺,將幫助汽車行業及自動駕駛領域的合作伙伴結合車輛和硬體系統,快速搭建一套屬於自己的自動駕駛系統。
Apollo 是百度重點打造的 AI 開放平臺之一,計劃主要包含 4 個技術模組:定位/感知模組、車輛規劃與運營(AI+大資料,精準控制車輛,適合不同路況)、軟體運營框架(支援英特爾、英偉達等多種晶片)。
詳情:www.oschina.net/p/apolloaut…

3、BFS-Baidu:百度檔案系統
百度的核心資料庫Tera將資料持久化在分散式檔案系統上,分散式檔案系統的效能、可用性和擴充套件性對整個上層搜尋業務的穩定性與效果有著至關重要的影響。現有的分散式檔案系統(如HDFS等)無法滿足低延遲、高可用、跨地域擴充套件等方面的需求,所以我們從百度搜尋的業務特點出發,開發了自己的分散式檔案系統BFS。
系統主要由NameServer、MetaServer、ChunkServer、SDK、bfs_mount和bfs_client等幾個模組構成。
其中NameServer是中心控制模組,採用叢集化部署,負責目錄樹的管理;ChunkServer是資料節點負責提供檔案塊的讀寫服務;SDK以靜態庫的形式提供了使用者使用的API;bfs_mount通過libfuse,將bfs掛載到本地,作為本地檔案系統訪問;bfs_client是一個二進位制的管理工具。
詳情:www.oschina.net/p/baidu-fil…

4、Kity Minder:線上腦圖編輯器
KityMinder 是百度FEX團隊的f-cube小組(原UEditor小組)的又一力作。作為一款線上的腦圖編輯工具,它有著很多Native編輯工具的互動體驗。KM與UE有著一樣的宗旨,就是注重終端使用者的使用體驗。同時,它充分發揮了Web雲端儲存的優勢,可以直接將編輯中的腦圖同步到雲端。此外,藉由獨創的 “雲盤分享”功能,使用者可以一鍵將當前編輯的腦圖直接生成線上連結共享給其他使用者,實現無縫溝通。
詳情:www.oschina.net/p/kityminde…

5、Disconf:分散式配置管理平臺
專注於各種 分散式系統配置管理 的通用元件/通用平臺, 提供統一的配置管理服務。包括 百度、滴滴叫車、銀聯、網易、拉勾網 等知名網際網路公司正在使用!
詳情:www.oschina.net/p/disconf

6、Tera:分散式表格系統
Tera 是一個高效能、可伸縮的資料庫系統,被設計用來管理搜尋引擎萬億量級的超鏈與網頁資訊。為實現資料的實時分析與高效訪問,我們使用按行鍵、列名和時間戳全域性排序的三維資料模型組織資料,使用多級Cache系統,充分利用新一代伺服器硬體大記憶體、SSD盤和萬兆網路卡的效能優勢,做到模型靈活的同時,實現了高吞吐與水平擴充套件。
詳情:www.oschina.net/p/tera
Gitbub地址:
github.com/baidu/tera

7、Cafe:Android自動化測試框架
Cafe 測試框架是一款來自百度QA部門的具有開創性意義的Android平臺的自動化測試框架,框架覆蓋了Android自動化測試的各種需求。框架致力於實現跨程式測試、快速測試、深度測試,解決了Android自動化測試中的諸多難題,比如業界一直沒有解決的跨程式測試問題。
詳情:www.oschina.net/p/cafe

8、Ueditor:富文字編輯器
UEditor是由百度web前端研發部開發所見即所得富文字web編輯器,具有輕量,可定製,注重使用者體驗等特點。
詳情:www.oschina.net/p/ueditor
Gitbub地址:
github.com/baidu/uedit…

9、Mapv:地圖視覺化工具庫
Mapv 是一款基於百度地圖的大資料視覺化開源庫,可以用來展示大量的點、線、面的資料,每種資料也有不同的展示型別,如直接打點、熱力圖、網格、聚合等方式展示資料。
詳情:www.oschina.net/p/mapv
Gitbub地址:
github.com/baidu/mapv

10、ECharts-X:全新 3D 視覺化庫
ECharts-X是 ECharts 團隊推出的全新 3D 視覺化庫,它是基於 ECharts 的擴充套件,底層深度整合了 WebGL 庫QTEK和 Canvas2D 庫ZRender。
詳情:www.oschina.net/p/echarts-x

11、MuPlayer:百度音樂播放核心
MuPlayer 是一款跨平臺、輕量級的音訊播放解決方案,是百度@音樂前端團隊開發維護的瀏覽端音訊播放核心,它基於HTML5 Audio及Flash音訊技術,已在百度音樂多個線上產品線中應用,具備很強的靈活性和穩定性。
詳情:www.oschina.net/p/muplayer

12、WebUploader:檔案上傳元件
WebUploader 是由Baidu WebFE(FEX)團隊開發的一個簡單的以HTML5為主,FLASH為輔的現代檔案上傳元件。在現代的瀏覽器裡面能充分發揮HTML5的優勢,同時又不摒棄主流IE瀏覽器,延用原來的FLASH執行時,相容IE6+,Andorid 4+,IOS 6+。兩套執行時,同樣的呼叫方式,可供使用者任意選用。
詳情:www.oschina.net/p/webupload…
百度更多74個開源專案詳情可檢視:www.oschina.net/project/bai…

阿里巴巴開源軟體

1、Weex:開源移動UI層框架
開源的移動端高效能動態化,跨平臺UI框架。 Weex的出現解決了困擾移動開發領域長期以來的一份設計,多次重複開發的問題,使得開發者能夠通過一次程式碼編寫即可為Androdi,IOS,H5生成美觀高效能的介面。
由於Weex已經捐贈到了Apache基金會孵化,所以程式碼主倉庫已經遷移到了Apache組織下。
Github主倉庫:
github.com/apache/incu…
Github原倉庫:
github.com/alibaba/wee…

2、Ant Design:開源React 元件庫
阿里在React技術棧基礎上開源的全功能通用元件庫,沉澱了大量互動設計最佳實踐。 如果你以React的方式開發你的前端應用Ant Design不容錯過。Ant Design最近還提供了移動版Ant Design Mobile ,同樣風格的元件庫現在可平順的過度到移動Web環境。
Github主倉庫:
github.com/ant-design/…

3、FastJSON:開源JSON解析和生成器
FastJSON是一個超高效能的JSON解析和生成器,在對外零依賴的情況下實現了對多種常用資料結構到JSON的解析和生成。評測資料長期以來一直在同類工具間遙遙領先。對JSON的處理是眾多服務端程式最頻繁執行的任務,啟用FastJSON或許能讓你的後端應用獲得不小的效能提升。
Github主倉庫:
github.com/alibaba/fas…

4、Dubbo:開源分散式開發框架
高效能服務框架,使得應用可通過高效能的 RPC 實現服務的輸出和輸入,可以和 Spring框架無縫整合。 是阿里大規模分散式系統的祕密武器。
Github主倉庫:
github.com/alibaba/dub…

5、Atlas:開源Android平臺容器化開發框架
隨著移動應用規模的增長,大型移動應用,特別是平臺級應用往往由團隊協同開發。如何實現不同功能模組的元件化、解耦化,同時還具備動態性是Android應用開發的一個核心挑戰。Atlas在遵循安卓系統設計規範的情況下,通過反射和輕量的hook方案來實現了這一目標,並將大量的工作放到了編譯期,提高了穩定性。
Github主倉庫:
github.com/alibaba/atl…

6、RocketMQ:開源訊息佇列
企業級網際網路架構的核心產品,基於高可用分散式叢集技術,搭建了包括髮布訂閱、訊息軌跡、資源統計、定時(延時)、監控報警等一套完整的訊息佇列服務。
Github主倉庫:
github.com/apache/incu…
Github原倉庫:
github.com/alibaba/Roc…

7、Freeline:開源Android構建工具
Freeline是一個Android平臺上的構建工具,構建速度是其最大特點。它可以充分利用快取檔案,在幾秒鐘內迅速地對程式碼的改動進行編譯並部署到裝置上,有效地減少了日常開發中的大量重新編譯與安裝的耗時。
Github主倉庫:
github.com/alibaba/fre…

8、AliSQL:開源 MySQL資料庫分枝
AliSQL 是基於廣泛使用的資料庫產品 MySQL 的一個開源分支,在 MySQL 社群版的基礎上做了大量的效能與功能的優化改進。尤其適合電商、雲端計算以及金融等行業環境。最新的 AliSQL 版本不僅從其他開源分支比如:Percona,MariaDB,WebScaleSQL 等社群汲取精華,也沉澱了阿里巴巴多年在 MySQL 領域的經驗和解決方案。
Github主倉庫:
github.com/alibaba/Ali…

騰訊開源軟體
1、Blade:現代構建系統
期望的目標是強大而好用,把程式設計師從構建的繁瑣中解放出來。Blade 主要定位於 Linux 下的大型 C++ 專案,密切配合研發流程,比如單元測試,持續整合,覆蓋率統計等。
在騰訊公司“颱風”雲端計算平臺開發過程中,為了解決 GNU Make,Autotools 的難用和繁瑣的問題,開發了這個全新的構建系統,整個系統基於多個宣告式的構建指令碼,在構建指令碼里,只需要宣告要構建什麼目標,目標的原始碼,以及其直接依賴的其它目標,不需要說明如何構建。大大降低了使用難度,提高了開發效率。
Gitbub地址:
github.com/chen3feng/t…

2、Appecker:自動化測試框架
一款用於 iOS 系列系統的自動化測試框架。
Gitbub地址:
github.com/TencentOpen…

3、QcloudMna:追風移動加速
QcloudMna 移動加速是騰訊雲針對移動端應用(APP、遊戲)推出的加速產品,其主要功能包括:動態資料加速、網路流量優化、智慧分析統計,具有接入簡單、多平臺支援、客服支援等特點。
詳情:www.oschina.net/p/mna

4、Ctaxis:雲排序
雲排序用於提供海量資料排序服務, 採用可擴充套件的分散式儲存方案。騰訊雲排序服務主要面向騰訊開放平臺上的第三方應用,應用的使用者量跨越從0到千萬級甚至上億的廣闊區間, 在進行海量資料的排序時,經常會面臨處理方式、處理效能等方面的問題。
詳情:www.oschina.net/p/ctaxis

5、APT:安卓效能測試工具
安卓效能測試工具,安卓平臺高效效能測試套件,用於安卓平臺的基準測試、競品測試。
APT是一個eclipse外掛,可以實時監控Android手機上多個應用的CPU、記憶體資料曲線,並儲存資料;另外還支援自動獲取記憶體快照、PMAP檔案分析等,方便開發人員自測或者測試人員完成效能測試,快速發現產品問題。
GitHub地址:
github.com/shawwinbin/…

6、Koala:跨平臺圖形編譯工具
跨平臺圖形編譯工具,用於快速生成前端 CSS 和 JS。
詳情:www.oschina.net/p/openkoala

7、TDW:騰訊分散式資料倉儲
騰訊分散式資料倉儲,用於幫助企業低成本構建大資料分析系統或資料倉儲。
詳情:code.csdn.net/Tencent/tdw…

8、TscanCode:靜態程式碼掃描工具
靜態程式碼掃描工具,針對 C/C++ 程式碼的靜態程式碼掃描解決方案。
TscanCode旨在助力開發與測試人員從程式碼層面挖掘問題,將那些長期困擾專案的諸如空指標當機等問題,扼殺於萌芽階段。支援使用者根據不同需求自定義配置檢查項,有極強的擴充套件性和可維護性。平均掃描速度10W行/分鐘。
詳情:www.oschina.net/p/tscancode

9、RapidJSON
一個 C++ 的高效能 JSON 解析器及生成器,同時支援 SAX/DOM 風格的 API。
GitHub地址:
github.com/TencentOpen…

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

11、WeTest助手:手機端輔助測試工具
WeTest助手是由WeTest(質量開放平臺wetest.qq.com)自主研發的基於手機端的輔助測試工具,目前包括效能測試和遠端除錯兩大功能, 能夠為手遊等專案發現CPU、記憶體、FPS等效能問題,並提供雲端真機用於問題線上除錯,共計為公司內外部專案服務5.4萬次;
手遊客戶端效能測試常用效能維度,CPU,記憶體,FPS,流量一次性全部收集,圖表化展示,資料可按場景化分類,並且支援離線和線上兩種模式, 地鐵上都可以做測試,Web上看報告。遠端除錯配合自研的雲真機技術,支援多點觸控、類手柄遙控,真實還原手遊測試場景,極速流暢、極低延遲, 本地只需要一臺手機即可操控雲端任何一臺手機。
支援ROOT和非ROOT安卓手機,支援越獄iOS系統。
GitHub地址:
github.com/Tencent/WeT…

12、QT4i:iOS開發自動化測試工具
iOS 開發自動化測試工具,全面相容 iOS 真機和模擬器,基於分散式技術,高效併發執行測試。QT4i需要和QTAF一起使用。
GitHub地址:
github.com/tencent/QT4…

13、QT4A:UI 測試自動化測試解決方案
基於 QTA 提供面向 Android 應用的 UI 測試自動化測試解決方案。
需要和QTAF一起使用。
詳情:
www.oschina.net/p/QT4A

14、Fanvas
SWF 轉 HTML5 Canvas 動畫。Fanvas 可以把 SWF(包括向量和點陣圖)完美地轉化為 Canvas 動畫,讓美術妹子一次製作,到處執行。
GitHub地址:
github.com/TencentOpen…

15、HaboMalHunter:惡意軟體分析系統
HaboMalHunter是哈勃分析系統 (habo.qq.com) 的開源子專案,用於Linux平臺下進行自動化分析、檔案安全性檢測的開源工具。使用該工具能夠幫助安全分析人員簡潔高效的獲取惡意樣本的靜態和動態行為特徵。分析報告中提供了程式、檔案、網路和系統呼叫等關鍵資訊。
GitHub地址:
github.com/Tencent/Hab…

16、QTAF:跨平臺測試自動化工具
QTAF 是一個跨平臺的測試自動化工具,適用於後臺、原生或混合型客戶端應用的測試。
GitHub地址:
github.com/Tencent/QTA…

17、WeDemo
微信團隊開源的專案,用於微信開發者進行微信登入、分享功能開發時的參考 Demo。
GitHub地址:
github.com/Tencent/WeD…

18、GAutomator
GAutomator是一個針對Unity手遊的UI自動化測試框架。設計理念與使用方式,類似於Android的UIAutomator。GAutomator以Unity中的GameObject為操作物件,通過操作GameObject實現UI自動化測試。基於GameObject的方式,不存在手機解析度適配的問題,一份指令碼能夠執行在不同手機之上,基於GameObject的另外一個優點為魯棒性較強,遊戲的UI介面經常發生變化,GameObject變化頻率相對較低。
GitHub地址:
github.com/tencent/GAu…

19、MSEC
毫秒服務引擎是騰訊的一個開源框架,適用於在廉價機器組成的叢集上開發和運營分散式後臺服務。
GitHub地址:
github.com/Tencent/MSE…

20、Behaviac:行為樹解決方案
行為樹(Behavior Tree)解決方案。該方案包括編輯器(Designer)和執行時庫(Runtime)。
GitHub地址:
github.com/Tencent/beh…

21、Blueking CMDB(藍鯨配置平臺)
一款面向應用的 CMDB,在 ITIL 體系裡,CMDB 是構建其它流程的基石,而在藍鯨智雲體系裡,配置平臺就扮演著基石的角色,為應用提供了各種運維場景的配置資料服務。
GitHub地址:
github.com/tencent/bk-…

22、GT(隨身調)
GT(隨身調)是APP的隨身除錯平臺,它是直接執行在手機上的“整合除錯環境”(IDTE, Integrated Debug Environment)。
利用GT,僅憑一部手機,無需連線電腦,即可對APP進行快速的效能測試(CPU、記憶體、流量、電量、幀率/流暢度等等)、開發日誌的檢視、Crash日誌檢視、網路資料包的抓取、APP內部引數的除錯、真機程式碼耗時統計等。
GitHub地址:
github.com/Tencent/GT

23、weui-wxss:安卓/iOS手機端調測元件
安卓/iOS 手機端調測元件,用於安卓平臺的效能測試、競品測試及僅憑一臺手機進行 App 測試的場景。
GitHub地址:
github.com/weui/weui-w…

24、weui.js
WeUI 是由微信官方設計團隊專為微信移動 Web 應用設計的 UI 庫。weui.js是 WeUI 的輕量級 js 封裝。
GitHub地址:
github.com/weui/weui.j…

25、Teaf:高效能服務端框架
Tencent Easy ACE Framework,基於ACE的高效能輕量級服務框架,單程式多執行緒模型,支援select/epoll等多種網路IO模型,同時支援tcp和udp協議,支援二進位制(pb等)和文字格式(json等,易於理解),相對多程式模型的框架來說更易維護,更輕量。業務側只需要開發自己的邏輯處理即可實現高效能的業務後臺伺服器。已經在騰訊互娛(IEG)大部分平臺類產品中成熟應用,比如idip,遊戲人生,心悅,幫幫,新終端遊戲中心aj,cross等,公司其他BG也有很多產品在使用。
GitHub地址:
github.com/Tencent/Tea…

26、SQLCipher
SQLCipher 提供了對 SQLite 資料庫的傳輸層進行全面加密的工具,而通過使用 SQLCipher ,整個加密過程對客戶端是透明的,無需改動應用程式。(該專案是騰訊 fork Zetetic 公司的開源專案)
GitHub地址:
github.com/Tencent/sql…

27、Tars:高效能RFC開發框架
基於名字服務使用 Tars 協議的高效能 RPC 開發框架,同時配套一體化的服務治理平臺,幫助個人或者企業快速的以微服務的方式構建自己穩定可靠的分散式應用。
Tars是騰訊從2008年到今天一直在使用的後臺邏輯層的統一應用框架TAF(Total Application Framework),目前支援C++和Java兩種語言。該框架為使用者提供了涉及到開發、運維、以及測試的一整套解決方案,幫助一個產品或者服務快速開發、部署、測試、上線。 它集可擴充套件協議編解碼、高效能RPC通訊框架、名字路由與發現、釋出監控、日誌統計、配置管理等於一體,通過它可以快速用微服務的方式構建自己的穩定可靠的分散式應用,並實現完整有效的服務治理。
目前該框架在騰訊內部,各大核心業務都在使用,頗受歡迎,基於該框架部署執行的服務節點規模達到上萬個。
GitHub地址:
github.com/Tencent/Tar…

28、WeFlow:前端開發工作流工具
一個高效、強大、跨平臺(macOS & Win)的前端開發工作流工具,核心基於 tmt-workflow 工作流,程式碼開源可定製。
GitHub地址:
github.com/Tencent/WeF…

29、Pebble:分散式開發框架
基於該框架,可以讓開發者只需專注於業務邏輯的實現,而不需要關注基礎功能的開發,如網路通訊,資料儲存,叢集管理等。
GitHub地址:
github.com/TencentOpen…

30、tmt-workflow:前端工作流程
基於 Gulp(v4.0)、高效、跨平臺(macOS & Win)、可定製的前端工作流程。
GitHub地址:
github.com/Tencent/tmt…

31、WeUI:基礎樣式庫
一套同微信原生視覺體驗一致的基礎樣式庫,為微信 Web 開發量身設計,可以令使用者的使用感知更加統一。包含button、cell、dialog、toast、article、icon等各式元素。
GitHub地址:
github.com/weui

32、WCDB:移動資料庫框架
騰訊開源的一個高效、完整、易用的移動資料庫框架,基於 SQLCipher,支援 iOS、macOS 和 Android。
GitHub地址:
github.com/Tencent/wcd…

33、xLua
xLua 為 Unity3D 增加 Lua 指令碼程式設計的能力,進而提供程式碼邏輯增量更新的可能。
GitHub地址:
github.com/Tencent/xLu…

34、Libco:C/C++協程庫
Libco是微信後臺大規模使用的C/C++協程庫,2013年至今穩定執行在微信後臺的數萬臺機器上。Libco提供了完善的協程程式設計介面、常用的Socket族函式Hook等,使得業務可用同步程式設計模型快速迭代開發。
早期微信後臺因為業務需求複雜多變、產品要求快速迭代等需求,大部分模組都採用了半同步半非同步模型。接入層為非同步模型,業務邏輯層則是同步的多程式或多執行緒模型,業務邏輯的併發能力只有幾十到幾百。隨著微信業務的增長,系統規模變得越來越龐大,每個模組很容易受到後端服務/網路抖動的影響。基於這樣的背景,微信開發了Libco,實現了對業務邏輯非侵入的非同步化改造。
GitHub地址:
github.com/tencent/lib…

35、PhxPaxos:生產級paxos類庫
PhxPaxos是微信後臺團隊自主研發的一套基於Paxos協議的多機狀態拷貝類庫。它以庫函式的方式嵌入到開發者的程式碼當中,使得一些單機狀態服務可以擴充套件到多機器,從而獲得強一致性的多副本以及自動容災的特性。PhxPaxos在微信服務裡面經過一系列的工程驗證和大量的惡劣環境下的測試,在一致性的保證上極為健壯。
PhxPaxos的特性包括使用基於訊息傳遞機制的純非同步工程架構、每次寫盤使用fsync嚴格保證正確性、支援Checkpoint以及對PaxosLog的自動清理、使用點對點流式協議進行快速學習、支援跨機器的Checkpoint自動拉取、內建Master選舉功能、自適應的過載保護等。
GitHub地址:
github.com/tencent-wec…

36、PhxSQL:高可用、強一致的MySQL叢集
PhxSQL是一個相容MySQL、服務高可用、資料強一致的關係型資料庫叢集。PhxSQL以單Master多Slave方式部署,在叢集內超過一半機器存活的情況下、即可提供服務,並且自身實現自動Master切換、保證資料一致性。PhxSQL不依賴於ZooKeeper等任何第三方做存活檢測及選主。PhxSQL基於MySQL的一個分支Percona 5.6開發,功能和實現與MySQL基本一致。
MySQL主備在主機上支援完整SQL、全域性事務、以repeatable read和serializable級別的事務隔離,在金融、帳號等關鍵業務中有巨大的價值。但是MySQL傳統主備方案也有其缺點。最明顯的就是主機故障後的自動換主和新舊主資料一致性,即所謂的一致性和可用性。為了解決這個問題,並同時完全相容MySQL,微信在MySQL的基礎上應用Paxos,設計和開發了PhxSQL。
GitHub地址:
github.com/tencent-wec…

37、PhxRPC:RPC框架
PhxRPC是微信後臺團隊推出的一個簡潔小巧的RPC框架,編譯生成的庫只有450K(編譯只依賴第三方庫Protobuf)。PhxRPC的特性如下:
使用Protobuf作為IDL用於描述RPC介面以及通訊資料結構。
基於Protobuf檔案自動生成Client以及Server介面,用於Client的構建,以及Server的實現。
半同步半非同步模式,採用獨立多IO執行緒,通過Epoll管理請求的接入以及讀寫,工作執行緒採用固定執行緒池。IO執行緒與工作執行緒通過記憶體佇列進行互動。
提供完善的過載保護,無需配置閾值,支援動態自適應拒絕請求。
提供簡易的Client/Server配置讀入方式。
基於lambda函式實現併發訪問Server,可以非常方便地實現Google提出的 Backup Requests 模式。
GitHub地址:
github.com/tencent-wec…

38、Mars:終端跨平臺網路元件
Mars是微信官方的終端基礎元件,是一個結合移動應用所設計的基於Socket層的解決方案,在網路調優方面有更好的可控性,採用C++開發。目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。
在微信中,任何網路實現的bug都可能導致重大事故。例如微信的容災實現,如果因為版本的實現差異,導致某些版本上無法進行容災恢復,將會嚴重的影響使用者體驗。微信研發了統一的跨平臺的網路基礎庫Mars來滿足發展的需要,一方面,基礎元件可以提高研發效率,另外一方面,也可以提高系統的穩健性。
在設計上,Mars以跨平臺、跨業務為前提,遵從高可用,高效能,負載均衡的設計原則。以網路的可用性為例,移動網際網路有著丟包率高、頻寬受限、延遲波動、第三方影響等特點,使得網路的可用性,尤其是弱網路下的可用性變得尤為關鍵。Mars 的STN元件作為基於 socket 層的網路解決方案,在很多細節設計上會充分考慮弱網路下的可用性。
GitHub地址:
github.com/Tencent/mar…

39、熱補丁技術Tinker
Tinker是微信官方的Android熱補丁解決方案,它支援動態下發程式碼、So庫以及資源,讓應用能夠在不需要重新安裝的情況下實現更新。
當前市面的熱補丁方案有很多,其中比較出名的有阿里的AndFix、美團的Robust以及QZone的超級補丁方案,但它們都存在無法解決的問題,所以微信研發了自己的解決方案。總的來說,AndFix作為native解決方案,首先面臨的是穩定性與相容性問題,更重要的是它無法實現類替換,它是需要大量額外的開發成本的。而Robust相容性與成功率較高,但是它與AndFix一樣,無法新增變數與類只能用做的bugFix方案。Qzone方案可以做到釋出產品功能,但是它主要問題是插樁帶來Dalvik的效能問題,以及為了解決Art下記憶體地址問題而導致補丁包急速增大的。
Tinker的具體設計目標如下:
開發透明:開發者無需關心是否在補丁版本,他可以隨意修改,不由框架限制。
效能無影響:補丁框架不能對應用帶來效能損耗。
完整支援:支援程式碼,So 庫以及資源的修復,可以釋出功能。
補丁大小較小: 補丁大小應該儘量的小,提高升級率。
穩定,相容性好:保證微信的數億使用者的使用,儘量減少反射。
GitHub地址:
github.com/Tencent/tin…

美團點評開源軟體

1、DBProxy:資料庫中介軟體
DBProxy是由美團點評公司技術工程部DBA團隊(北京)開發維護的一個基於MySQL協議的資料中間層。它在奇虎360公司開源的Atlas基礎上,修改了部分bug,並且新增了很多特性。
通過資料庫中介軟體,可以對資料庫進行水平擴充套件,由原來單臺資料庫擴充套件到多臺資料庫,資料庫中介軟體通過路由規則將資料的訪問請求路由到其中一臺資料庫上,從而大大降低了資料訪問的瓶頸和單臺資料庫的壓力。通過資料庫中介軟體還可以將DBA和研發進行解耦,提升DBA運維效率。
Github地址:
github.com/Meituan-Dia…

2、SQLAdvisor:SQL優化工具
SQLAdvisor 是由美團點評公司北京DBA團隊開發維護的 SQL 優化工具:輸入SQL,輸出索引優化建議。 它基於 MySQL 原生詞法解析,再結合 SQL 中的 where 條件以及欄位選擇度、聚合條件、多表 Join 關係等最終輸出最優的索引優化建議。目前 SQLAdvisor 在公司內部大量使用,較為成熟、穩定。
GitHub地址:github.com/Meituan-Dia…

華為開源軟體
1、HBase 的 Spark SQL Astro
Spark SQL on HBase package 專案又名 Astro,端到端整合了 Spark,Spark SQL和HBase的能力,有助於推動幫助Spark進入NoSQL的廣泛客戶群,並提供強大的線上查詢和分析以及在垂直企業大規模資料處理能力。
Apache HBase 是資料在 HDFS 上的 Key-Value 儲存。它用來給 Google 的 Big Table 建模,並提供了 API 用於查詢資料。這些資料通過它的“row keys”來組織、區分和釋出。在每個分割槽上,資料被指定的“列”資料集合“列族”物理分割槽。這些資料模型是寬且零散的,在這些表中列是動態的,零散的。
詳情:www.oschina.net/p/huawei-as…

2、LiteOS:華為物聯網作業系統
Huawei LiteOS 是華為面向IoT領域,構建的"統一物聯網作業系統和中介軟體軟體平臺",以輕量級(核心小於10k)、低功耗(1節5號電池最多可以工作5年),快速啟動,互聯互通,安全等關鍵能力,為開發者提供 "一站式" 完整軟體平臺,有效降低開發門檻、縮短開發週期。
Huawei LiteOS 目前主要應用於智慧家居、穿戴式、車聯網、智慧抄表、工業網際網路等 IoT 領域的智慧硬體上。
詳情:www.oschina.net/p/liteos
GitHub地址:
github.com/Huawei/Huaw…

3、Apache CarbonData:Hadoop 原生檔案格式
CarbonData 是一個為了更快的互動查詢而生的新的Hadoop原生檔案格式,用於大資料的快速分析和多維度查詢hadoop本地資料儲存設計。
在客戶基準上,CarbonData已經展示出管理執行在非常低成本的硬體上的PB級別的資料,並且比目前的開源解決方案快了近10倍。
詳情:www.oschina.net/p/carbondat…

4、ServiceComb:多功能微服務框架
ServiceComb 是華為開源的一套包含程式碼框架生成,服務註冊發現,負載均衡,服務可靠性(容錯熔斷,限流降級,呼叫鏈追蹤)等功能的微服務框架。
ServiceComb 是華為 FusionCloud 解決方案中 PaaS 平臺的重要組成部分,內建了高可靠性執行、動態治理等運維階段的高階能力。ServiceComb 目前已應用於華為自身 IT 的多個核心業務,幫助華為極大地提升了雲原生應用的開發效率。
ServiceComb 包括應用框架程式碼生成,服務註冊發現、服務配置管理、服務監控、服務呼叫追蹤、多通訊協議支援等功能,具有服務化契約增強、響應式程式設計正規化及多語言 SDK 支援等優勢特性。ServiceComb 基於開放的架構,不僅可以支援開發者根據自身業務需求定製業務外掛,而且還相容多種業界流行的微服務框架。
詳情:www.oschina.net/p/serviceco…

5、hindex:HBase 二級索引
hindex 是華為公司開發的純 Java 編寫的 HBase 二級索引,相容 Apache HBase 0.94.8。
當前的特性如下:
多個表索引
多個列索引
基於部分列值的索引
使用索引掃描等於和範圍條件
批量載入資料來索引表(索引完成批量載入)
詳情:www.oschina.net/p/hindex
GitHub地址:
github.com/Huawei-Hado…

6、oct:開放容器測試框架
oct 是用於開放容器的測試用例和框架,用 Go 語言開發。
ocp-testing 專案的目標是,通過提供全域性測試框架給所有的容器專案,來提高開放容器專案。測試包括,ocp 規範,容器功能和容器效能。
詳情:www.oschina.net/p/oct
GitHub地址:
github.com/huawei-open…

7、streamDM:用於 Spark Streaming 的資料探勘
streamDM,是由華為諾亞方舟實驗室開源的使用 Spark Streaming 挖掘大資料的開源軟體。
大資料流學習(Big Data stream learning)比批量或離線學習更富有挑戰性,因為資料在流動的過程中不太可能保持同一種分佈。而且,資料流中的每一個樣本只能被處理一次,否則它們就需要佔用記憶體進行總結,同時該學習演算法也必須非常高效。
Spark Streaming是核心Spark API 的一個擴充套件,它能讓多個源的資料流處理成為可能。Spark 是一個可擴充套件可程式設計的框架,用於大規模分散式資料集(也稱為彈性分散式資料集(RDD))處理。Spark Streaming 接收輸入的資料流後將資料分批,再由 Spark 引擎處理,生成結果。
Spark Streaming 資料被編成一個 DStreams 序列,內在地表示成一個 RDD 序列。
詳情:www.oschina.net/p/stream-dm
GitHub地址:
github.com/huawei-noah…

8、StreamCQL:流處理平臺查詢語言
StreamCQL作為華為FusionInsight產品的重要元件,提供了在分散式流處理平臺上的類SQL查詢能力,包括視窗計算等高階特性,在開源之前已經在電信、金融等多個行業成功應用,簡化開發工作量數倍。
StreamCQL是一個類SQL的宣告式語言,它用於在流(streams)和可更新關係(updatable relation)上的可持續查詢,目的是在流處理平臺分散式計算能力之上,通過使用簡易通用的類SQL語言,使得業務邏輯的開發變得統一和簡易。在架構上,除了支援主流的流處理平臺Storm,它支援擴充套件到多種流處理引擎之上,如Flink。在功能上,StreamCQL彌補了傳統流處理平臺上一些基本業務功能的缺失,除了過濾、轉換等基本SQL能力之外, 還引入基於記憶體視窗的計算、統計、關聯等能力,以及流資料的拆分、合併等功能。後期StreamCQL的發展方向包括:模式匹配、CQLServer(CQL遠端提交,多語言介面,JDBC介面)、可靠性增強等。
詳情:www.oschina.net/p/streamcql
GitHub地址:
github.com/HuaweiBigDa…

9、96Boards:ARM 開放平臺規範
96Boards 是 ARM 開放平臺規範,是第一個定義 Cortex-A 開發板的開放規範,Cortex-A 是 ARM SoC 供應商提供的低耗能,小指令碼 32 位和 64 位開發板。標準化擴充套件 Peripheral I/O 匯流排,顯示和相機,允許硬體生態系統開發一系列相容元件的產品,在其生命週期可以在任意相容 96Boards 的平臺上使用。
詳情:www.oschina.net/p/96boards

寫給讀者
越來越多的公司正走向開源,程式語言、作業系統、框架、平臺、資料庫等方方面面開源軟體也越來越多,這些開源專案為我們的工作帶來很多方便,可以直接“拿來”解決技術問題,不用重複造輪子,提高效率的同時也極大地降低了研發成本。
除了軟體可以開源之外,研發實踐也可以開源共享,第六屆TOP100全球軟體案例研究峰會將於11月9-12日在北京國家會議中心舉辦,甄選100個本年度最具行業代表性的軟體研發案例,現場解讀其解決方案和背後的技術邏輯,幫助研發團隊快速提高效能。

更多TOP100案例資訊及日程請前往官網查閱。4天時間集中分享2017年最值得學習的100個研發案例實踐。本平臺共送出10張開幕式單天免費體驗票,登入TOP100summit官網即可申請,數量有限,先到先得。免費體驗票申請入口:www.top100summit.com/?qd=juejin

相關文章