前面的一篇文章《微軟、谷歌、亞馬遜、Facebook等硅谷大廠91個開源軟件盤點(diǎn)(附下載地址)》列舉了國外8個互聯(lián)網(wǎng)公司(包括微軟、Google、亞馬遜、IBM、Facebook、Twitter、eBay、VMware)的開源軟件項目,今天我們來盤點(diǎn)一下國內(nèi)幾個體量較大的互聯(lián)網(wǎng)大廠(騰訊、百度、阿里、美團(tuán)點(diǎn)評、華為)都有哪些開源軟件。快點(diǎn)Mark起來并轉(zhuǎn)發(fā)給需要的人吧。
百度開源軟件
1、ECharts:JavaScript 圖表庫
ECharts是一款由百度前端技術(shù)部開發(fā)的,基于Javascript的數(shù)據(jù)可視化圖表庫,提供直觀,生動,可交互,可個性化定制的數(shù)據(jù)可視化圖表。
提供大量常用的數(shù)據(jù)可視化圖表,底層基于ZRender(一個全新的輕量級canvas類庫),創(chuàng)建了坐標(biāo)系,圖例,提示,工具箱等基礎(chǔ)組件,并在此上構(gòu)建出折線圖(區(qū)域圖)、柱狀圖(條狀圖)、散點(diǎn)圖(氣泡圖)、餅圖(環(huán)形圖)、K線圖、地圖、力導(dǎo)向布局圖以及和弦圖,同時支持任意維度的堆積和多圖表混合展現(xiàn)。
詳情:https://www.oschina.net/p/echarts
GitHub地址:
https://github.com/baidu/echarts
2、ApolloAuto:開源自動駕駛平臺
Apollo (阿波羅)是一個開放的、完整的、安全的平臺,將幫助汽車行業(yè)及自動駕駛領(lǐng)域的合作伙伴結(jié)合車輛和硬件系統(tǒng),快速搭建一套屬于自己的自動駕駛系統(tǒng)。
Apollo 是百度重點(diǎn)打造的 AI 開放平臺之一,計劃主要包含 4 個技術(shù)模塊:定位/感知模塊、車輛規(guī)劃與運(yùn)營(AI+大數(shù)據(jù),精準(zhǔn)控制車輛,適合不同路況)、軟件運(yùn)營框架(支持英特爾、英偉達(dá)等多種芯片)。
詳情:https://www.oschina.net/p/apolloauto
3、BFS-Baidu:百度文件系統(tǒng)
百度的核心數(shù)據(jù)庫Tera將數(shù)據(jù)持久化在分布式文件系統(tǒng)上,分布式文件系統(tǒng)的性能、可用性和擴(kuò)展性對整個上層搜索業(yè)務(wù)的穩(wěn)定性與效果有著至關(guān)重要的影響。現(xiàn)有的分布式文件系統(tǒng)(如HDFS等)無法滿足低延遲、高可用、跨地域擴(kuò)展等方面的需求,所以我們從百度搜索的業(yè)務(wù)特點(diǎn)出發(fā),開發(fā)了自己的分布式文件系統(tǒng)BFS。
系統(tǒng)主要由NameServer、MetaServer、ChunkServer、SDK、bfs_mount和bfs_client等幾個模塊構(gòu)成。
其中NameServer是中心控制模塊,采用集群化部署,負(fù)責(zé)目錄樹的管理;ChunkServer是數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)提供文件塊的讀寫服務(wù);SDK以靜態(tài)庫的形式提供了用戶使用的API;bfs_mount通過libfuse,將bfs掛載到本地,作為本地文件系統(tǒng)訪問;bfs_client是一個二進(jìn)制的管理工具。
詳情:https://www.oschina.net/p/baidu-file-system
4、Kity Minder:在線腦圖編輯器
KityMinder 是百度FEX團(tuán)隊的f-cube小組(原UEditor小組)的又一力作。作為一款在線的腦圖編輯工具,它有著很多Native編輯工具的交互體驗。KM與UE有著一樣的宗旨,就是注重最終用戶的使用體驗。同時,它充分發(fā)揮了Web云存儲的優(yōu)勢,可以直接將編輯中的腦圖同步到云端。此外,借由獨(dú)創(chuàng)的 “云盤分享”功能,用戶可以一鍵將當(dāng)前編輯的腦圖直接生成在線鏈接共享給其他用戶,實現(xiàn)無縫溝通。
詳情:https://www.oschina.net/p/kityminder
5、Disconf:分布式配置管理平臺
專注于各種分布式系統(tǒng)配置管理的通用組件/通用平臺, 提供統(tǒng)一的配置管理服務(wù)。包括 百度、滴滴打車、銀聯(lián)、網(wǎng)易、拉勾網(wǎng) 等知名互聯(lián)網(wǎng)公司正在使用!
詳情:https://www.oschina.net/p/disconf
6、Tera:分布式表格系統(tǒng)
Tera 是一個高性能、可伸縮的數(shù)據(jù)庫系統(tǒng),被設(shè)計用來管理搜索引擎萬億量級的超鏈與網(wǎng)頁信息。為實現(xiàn)數(shù)據(jù)的實時分析與高效訪問,我們使用按行鍵、列名和時間戳全局排序的三維數(shù)據(jù)模型組織數(shù)據(jù),使用多級Cache系統(tǒng),充分利用新一代服務(wù)器硬件大內(nèi)存、SSD盤和萬兆網(wǎng)卡的性能優(yōu)勢,做到模型靈活的同時,實現(xiàn)了高吞吐與水平擴(kuò)展。
詳情:https://www.oschina.net/p/tera
Gitbub地址:
https://github.com/baidu/tera
7、Cafe:Android自動化測試框架
Cafe 測試框架是一款來自百度QA部門的具有開創(chuàng)性意義的Android平臺的自動化測試框架,框架覆蓋了Android自動化測試的各種需求??蚣苤铝τ趯崿F(xiàn)跨進(jìn)程測試、快速測試、深度測試,解決了Android自動化測試中的諸多難題,比如業(yè)界一直沒有解決的跨進(jìn)程測試問題。
詳情:https://www.oschina.net/p/cafe
8、Ueditor:富文本編輯器
UEditor是由百度web前端研發(fā)部開發(fā)所見即所得富文本web編輯器,具有輕量,可定制,注重用戶體驗等特點(diǎn)。
詳情:https://www.oschina.net/p/ueditor
Gitbub地址:
https://github.com/baidu/ueditor
9、Mapv:地圖可視化工具庫
Mapv 是一款基于百度地圖的大數(shù)據(jù)可視化開源庫,可以用來展示大量的點(diǎn)、線、面的數(shù)據(jù),每種數(shù)據(jù)也有不同的展示類型,如直接打點(diǎn)、熱力圖、網(wǎng)格、聚合等方式展示數(shù)據(jù)。
詳情:https://www.oschina.net/p/mapv
Gitbub地址:
https://github.com/baidu/mapv
10、ECharts-X:全新 3D 可視化庫
ECharts-X是 ECharts 團(tuán)隊推出的全新 3D 可視化庫,它是基于 ECharts 的擴(kuò)展,底層深度整合了 WebGL 庫QTEK和 Canvas2D 庫ZRender。
詳情:https://www.oschina.net/p/echarts-x
11、MuPlayer:百度音樂播放內(nèi)核
MuPlayer 是一款跨平臺、輕量級的音頻播放解決方案,是百度@音樂前端團(tuán)隊開發(fā)維護(hù)的瀏覽端音頻播放內(nèi)核,它基于HTML5 Audio及Flash音頻技術(shù),已在百度音樂多個線上產(chǎn)品線中應(yīng)用,具備很強(qiáng)的靈活性和穩(wěn)定性。
詳情:https://www.oschina.net/p/muplayer
12、WebUploader:文件上傳組件
WebUploader 是由Baidu WebFE(FEX)團(tuán)隊開發(fā)的一個簡單的以HTML5為主,F(xiàn)LASH為輔的現(xiàn)代文件上傳組件。在現(xiàn)代的瀏覽器里面能充分發(fā)揮HTML5的優(yōu)勢,同時又不摒棄主流IE瀏覽器,延用原來的FLASH運(yùn)行時,兼容IE6+,Andorid 4+,IOS 6+。兩套運(yùn)行時,同樣的調(diào)用方式,可供用戶任意選用。
詳情:https://www.oschina.net/p/webuploader
百度更多74個開源項目詳情可查看:https://www.oschina.net/project/baidu
阿里巴巴開源軟件
1、Weex:開源移動UI層框架
開源的移動端高性能動態(tài)化,跨平臺UI框架。 Weex的出現(xiàn)解決了困擾移動開發(fā)領(lǐng)域長期以來的一份設(shè)計,多次重復(fù)開發(fā)的問題,使得開發(fā)者能夠通過一次代碼編寫即可為Androdi,IOS,H5生成美觀高性能的界面。
由于Weex已經(jīng)捐贈到了Apache基金會孵化,所以代碼主倉庫已經(jīng)遷移到了Apache組織下。
Github主倉庫:
https://github.com/apache/incubator-weex
Github原倉庫:
https://github.com/alibaba/weex
2、Ant Design:開源React 組件庫
阿里在React技術(shù)棧基礎(chǔ)上開源的全功能通用組件庫,沉淀了大量交互設(shè)計最佳實踐。 如果你以React的方式開發(fā)你的前端應(yīng)用Ant Design不容錯過。Ant Design最近還提供了移動版Ant Design Mobile ,同樣風(fēng)格的組件庫現(xiàn)在可平順的過度到移動Web環(huán)境。
Github主倉庫:
https://github.com/ant-design/ant-design
3、FastJSON:開源JSON解析和生成器
FastJSON是一個超高性能的JSON解析和生成器,在對外零依賴的情況下實現(xiàn)了對多種常用數(shù)據(jù)結(jié)構(gòu)到JSON的解析和生成。評測數(shù)據(jù)長期以來一直在同類工具間遙遙領(lǐng)先。對JSON的處理是眾多服務(wù)端程序最頻繁執(zhí)行的任務(wù),啟用FastJSON或許能讓你的后端應(yīng)用獲得不小的性能提升。
Github主倉庫:
https://github.com/alibaba/fastjson
4、Dubbo:開源分布式開發(fā)框架
高性能服務(wù)框架,使得應(yīng)用可通過高性能的RPC 實現(xiàn)服務(wù)的輸出和輸入,可以和 Spring框架無縫集成。 是阿里大規(guī)模分布式系統(tǒng)的秘密武器。
Github主倉庫:
https://github.com/alibaba/dubbo
5、Atlas:開源Android平臺容器化開發(fā)框架
隨著移動應(yīng)用規(guī)模的增長,大型移動應(yīng)用,特別是平臺級應(yīng)用往往由團(tuán)隊協(xié)同開發(fā)。如何實現(xiàn)不同功能模塊的組件化、解耦化,同時還具備動態(tài)性是Android應(yīng)用開發(fā)的一個核心挑戰(zhàn)。Atlas在遵循安卓系統(tǒng)設(shè)計規(guī)范的情況下,通過反射和輕量的hook方案來實現(xiàn)了這一目標(biāo),并將大量的工作放到了編譯期,提高了穩(wěn)定性。
Github主倉庫:
https://github.com/alibaba/atlas
6、RocketMQ:開源消息隊列
企業(yè)級互聯(lián)網(wǎng)架構(gòu)的核心產(chǎn)品,基于高可用分布式集群技術(shù),搭建了包括發(fā)布訂閱、消息軌跡、資源統(tǒng)計、定時(延時)、監(jiān)控報警等一套完整的消息隊列服務(wù)。
Github主倉庫:
https://github.com/apache/incubator-rocketmq
Github原倉庫:
https://github.com/alibaba/RocketMQ
7、Freeline:開源Android構(gòu)建工具
Freeline是一個Android平臺上的構(gòu)建工具,構(gòu)建速度是其最大特點(diǎn)。它可以充分利用緩存文件,在幾秒鐘內(nèi)迅速地對代碼的改動進(jìn)行編譯并部署到設(shè)備上,有效地減少了日常開發(fā)中的大量重新編譯與安裝的耗時。
Github主倉庫:
https://github.com/alibaba/freeline
8、AliSQL:開源 MySQL數(shù)據(jù)庫分枝
AliSQL 是基于廣泛使用的數(shù)據(jù)庫產(chǎn)品 MySQL 的一個開源分支,在 MySQL 社區(qū)版的基礎(chǔ)上做了大量的性能與功能的優(yōu)化改進(jìn)。尤其適合電商、云計算以及金融等行業(yè)環(huán)境。最新的 AliSQL 版本不僅從其他開源分支比如:Percona,MariaDB,WebScaleSQL 等社區(qū)汲取精華,也沉淀了阿里巴巴多年在 MySQL 領(lǐng)域的經(jīng)驗和解決方案。
Github主倉庫:
https://github.com/alibaba/AliSQL
騰訊開源軟件
1、Blade:現(xiàn)代構(gòu)建系統(tǒng)
期望的目標(biāo)是強(qiáng)大而好用,把程序員從構(gòu)建的繁瑣中解放出來。Blade 主要定位于 Linux 下的大型 C++ 項目,密切配合研發(fā)流程,比如單元測試,持續(xù)集成,覆蓋率統(tǒng)計等。
在騰訊公司“臺風(fēng)”云計算平臺開發(fā)過程中,為了解決 GNU Make,Autotools 的難用和繁瑣的問題,開發(fā)了這個全新的構(gòu)建系統(tǒng),整個系統(tǒng)基于多個聲明式的構(gòu)建腳本,在構(gòu)建腳本里,只需要聲明要構(gòu)建什么目標(biāo),目標(biāo)的源代碼,以及其直接依賴的其它目標(biāo),不需要說明如何構(gòu)建。大大降低了使用難度,提高了開發(fā)效率。
Gitbub地址:
https://github.com/chen3feng/typhoon-blade
2、Appecker:自動化測試框架
一款用于iOS 系列系統(tǒng)的自動化測試框架。
Gitbub地址:
https://github.com/TencentOpen/Appecker
3、QcloudMna:追風(fēng)移動加速
QcloudMna 移動加速是騰訊云針對移動端應(yīng)用(APP、游戲)推出的加速產(chǎn)品,其主要功能包括:動態(tài)數(shù)據(jù)加速、網(wǎng)絡(luò)流量優(yōu)化、智能分析統(tǒng)計,具有接入簡單、多平臺支持、客服支持等特點(diǎn)。
詳情:https://www.oschina.net/p/mna
4、Ctaxis:云排序
云排序用于提供海量數(shù)據(jù)排序服務(wù), 采用可擴(kuò)展的分布式存儲方案。騰訊云排序服務(wù)主要面向騰訊開放平臺上的第三方應(yīng)用,應(yīng)用的用戶量跨越從0到千萬級甚至上億的廣闊區(qū)間, 在進(jìn)行海量數(shù)據(jù)的排序時,經(jīng)常會面臨處理方式、處理性能等方面的問題。
詳情:https://www.oschina.net/p/ctaxis
5、APT:安卓性能測試工具
安卓性能測試工具,安卓平臺高效性能測試套件,用于安卓平臺的基準(zhǔn)測試、競品測試。
APT是一個eclipse插件,可以實時監(jiān)控Android手機(jī)上多個應(yīng)用的CPU、內(nèi)存數(shù)據(jù)曲線,并保存數(shù)據(jù);另外還支持自動獲取內(nèi)存快照、PMAP文件分析等,方便開發(fā)人員自測或者測試人員完成性能測試,快速發(fā)現(xiàn)產(chǎn)品問題。
GitHub地址:
https://github.com/shawwinbin/APT
6、Koala:跨平臺圖形編譯工具
跨平臺圖形編譯工具,用于快速生成前端CSS 和 JS。
詳情:https://www.oschina.net/p/openkoala
7、TDW:騰訊分布式數(shù)據(jù)倉庫
騰訊分布式數(shù)據(jù)倉庫,用于幫助企業(yè)低成本構(gòu)建大數(shù)據(jù)分析系統(tǒng)或數(shù)據(jù)倉庫。
詳情:https://code.csdn.net/Tencent/tdw/tree/master
8、TscanCode:靜態(tài)代碼掃描工具
靜態(tài)代碼掃描工具,針對C/C++ 代碼的靜態(tài)代碼掃描解決方案。
TscanCode旨在助力開發(fā)與測試人員從代碼層面挖掘問題,將那些長期困擾項目的諸如空指針宕機(jī)等問題,扼殺于萌芽階段。支持用戶根據(jù)不同需求自定義配置檢查項,有極強(qiáng)的擴(kuò)展性和可維護(hù)性。平均掃描速度10W行/分鐘。
詳情:https://www.oschina.net/p/tscancode
9、RapidJSON
一個C++ 的高性能 JSON 解析器及生成器,同時支持 SAX/DOM 風(fēng)格的 API。
GitHub地址:
https://github.com/TencentOpen/rapidjson
10、Key-N-Value:高性能樹型協(xié)議處理引擎
KNV 是一個模式自由的高性能樹型協(xié)議處理引擎,是對 Key-Value 的一個通用結(jié)構(gòu)化擴(kuò)展。
11、WeTest助手:手機(jī)端輔助測試工具
WeTest助手是由WeTest(質(zhì)量開放平臺http://wetest.qq.com)自主研發(fā)的基于手機(jī)端的輔助測試工具,目前包括性能測試和遠(yuǎn)程調(diào)試兩大功能, 能夠為手游等項目發(fā)現(xiàn)CPU、內(nèi)存、FPS等性能問題,并提供云端真機(jī)用于問題在線調(diào)試,共計為公司內(nèi)外部項目服務(wù)5.4萬次;
手游客戶端性能測試常用性能維度,CPU,內(nèi)存,F(xiàn)PS,流量一次性全部收集,圖表化展示,數(shù)據(jù)可按場景化分類,并且支持離線和在線兩種模式, 地鐵上都可以做測試,Web上看報告。遠(yuǎn)程調(diào)試配合自研的云真機(jī)技術(shù),支持多點(diǎn)觸控、類手柄遙控,真實還原手游測試場景,極速流暢、極低延遲, 本地只需要一臺手機(jī)即可操控云端任何一臺手機(jī)。
支持ROOT和非ROOT安卓手機(jī),支持越獄iOS系統(tǒng)。
GitHub地址:
https://github.com/Tencent/WeTest-Assistant
12、QT4i:iOS開發(fā)自動化測試工具
iOS 開發(fā)自動化測試工具,全面兼容 iOS 真機(jī)和模擬器,基于分布式技術(shù),高效并發(fā)執(zhí)行測試。QT4i需要和QTAF一起使用。
GitHub地址:
https://github.com/tencent/QT4i
13、QT4A:UI 測試自動化測試解決方案
基于QTA 提供面向 Android 應(yīng)用的 UI 測試自動化測試解決方案。
需要和QTAF一起使用。
詳情:
https://www.oschina.net/p/QT4A
14、Fanvas
SWF 轉(zhuǎn) HTML5 Canvas 動畫。Fanvas 可以把 SWF(包括矢量和位圖)完美地轉(zhuǎn)化為 Canvas 動畫,讓美術(shù)妹子一次制作,到處運(yùn)行。
GitHub地址:
https://github.com/TencentOpen/Fanvas
15、HaboMalHunter:惡意軟件分析系統(tǒng)
HaboMalHunter是哈勃分析系統(tǒng) (https://habo.qq.com) 的開源子項目,用于Linux平臺下進(jìn)行自動化分析、文件安全性檢測的開源工具。使用該工具能夠幫助安全分析人員簡潔高效的獲取惡意樣本的靜態(tài)和動態(tài)行為特征。分析報告中提供了進(jìn)程、文件、網(wǎng)絡(luò)和系統(tǒng)調(diào)用等關(guān)鍵信息。
GitHub地址:
https://github.com/Tencent/HaboMalHunter
16、QTAF:跨平臺測試自動化工具
QTAF 是一個跨平臺的測試自動化工具,適用于后臺、原生或混合型客戶端應(yīng)用的測試。
GitHub地址:
https://github.com/Tencent/QTAF
17、WeDemo
微信團(tuán)隊開源的項目,用于微信開發(fā)者進(jìn)行微信登錄、分享功能開發(fā)時的參考Demo。
GitHub地址:
https://github.com/Tencent/WeDemo
18、GAutomator
GAutomator是一個針對Unity手游的UI自動化測試框架。設(shè)計理念與使用方式,類似于Android的UIAutomator。GAutomator以Unity中的GameObject為操作對象,通過操作GameObject實現(xiàn)UI自動化測試。基于GameObject的方式,不存在手機(jī)分辨率適配的問題,一份腳本能夠運(yùn)行在不同手機(jī)之上,基于GameObject的另外一個優(yōu)點(diǎn)為魯棒性較強(qiáng),游戲的UI界面經(jīng)常發(fā)生變化,GameObject變化頻率相對較低。
GitHub地址:
https://github.com/tencent/GAutomator
19、MSEC
毫秒服務(wù)引擎是騰訊的一個開源框架,適用于在廉價機(jī)器組成的集群上開發(fā)和運(yùn)營分布式后臺服務(wù)。
GitHub地址:
https://github.com/Tencent/MSEC
20、Behaviac:行為樹解決方案
行為樹(Behavior Tree)解決方案。該方案包括編輯器(Designer)和運(yùn)行時庫(Runtime)。
GitHub地址:
https://github.com/Tencent/behaviac
21、Blueking CMDB(藍(lán)鯨配置平臺)
一款面向應(yīng)用的CMDB,在 ITIL 體系里,CMDB 是構(gòu)建其它流程的基石,而在藍(lán)鯨智云體系里,配置平臺就扮演著基石的角色,為應(yīng)用提供了各種運(yùn)維場景的配置數(shù)據(jù)服務(wù)。
GitHub地址:
https://github.com/tencent/bk-cmdb
22、GT(隨身調(diào))
GT(隨身調(diào))是APP的隨身調(diào)試平臺,它是直接運(yùn)行在手機(jī)上的“集成調(diào)試環(huán)境”(IDTE, Integrated Debug Environment)。
利用GT,僅憑一部手機(jī),無需連接電腦,即可對APP進(jìn)行快速的性能測試(CPU、內(nèi)存、流量、電量、幀率/流暢度等等)、開發(fā)日志的查看、Crash日志查看、網(wǎng)絡(luò)數(shù)據(jù)包的抓取、APP內(nèi)部參數(shù)的調(diào)試、真機(jī)代碼耗時統(tǒng)計等。
GitHub地址:
https://github.com/Tencent/GT
23、weui-wxss:安卓/iOS手機(jī)端調(diào)測組件
安卓/iOS 手機(jī)端調(diào)測組件,用于安卓平臺的性能測試、競品測試及僅憑一臺手機(jī)進(jìn)行 App 測試的場景。
GitHub地址:
https://github.com/weui/weui-wxss
24、weui.js
WeUI 是由微信官方設(shè)計團(tuán)隊專為微信移動 Web 應(yīng)用設(shè)計的 UI 庫。weui.js是 WeUI 的輕量級 js 封裝。
GitHub地址:
https://github.com/weui/weui.js/
25、Teaf:高性能服務(wù)端框架
Tencent Easy ACE Framework,基于ACE的高性能輕量級服務(wù)框架,單進(jìn)程多線程模型,支持select/epoll等多種網(wǎng)絡(luò)IO模型,同時支持tcp和udp協(xié)議,支持二進(jìn)制(pb等)和文本格式(json等,易于理解),相對多進(jìn)程模型的框架來說更易維護(hù),更輕量。業(yè)務(wù)側(cè)只需要開發(fā)自己的邏輯處理即可實現(xiàn)高性能的業(yè)務(wù)后臺服務(wù)器。已經(jīng)在騰訊互娛(IEG)大部分平臺類產(chǎn)品中成熟應(yīng)用,比如idip,游戲人生,心悅,幫幫,新終端游戲中心aj,cross等,公司其他BG也有很多產(chǎn)品在使用。
GitHub地址:
https://github.com/Tencent/Teaf
26、SQLCipher
SQLCipher 提供了對 SQLite 數(shù)據(jù)庫的傳輸層進(jìn)行全面加密的工具,而通過使用 SQLCipher ,整個加密過程對客戶端是透明的,無需改動應(yīng)用程序。(該項目是騰訊 fork Zetetic 公司的開源項目)
GitHub地址:
https://github.com/Tencent/sqlcipher
27、Tars:高性能RFC開發(fā)框架
基于名字服務(wù)使用Tars 協(xié)議的高性能 RPC 開發(fā)框架,同時配套一體化的服務(wù)治理平臺,幫助個人或者企業(yè)快速的以微服務(wù)的方式構(gòu)建自己穩(wěn)定可靠的分布式應(yīng)用。
Tars是騰訊從2008年到今天一直在使用的后臺邏輯層的統(tǒng)一應(yīng)用框架TAF(Total Application Framework),目前支持C++和Java兩種語言。該框架為用戶提供了涉及到開發(fā)、運(yùn)維、以及測試的一整套解決方案,幫助一個產(chǎn)品或者服務(wù)快速開發(fā)、部署、測試、上線。 它集可擴(kuò)展協(xié)議編解碼、高性能RPC通信框架、名字路由與發(fā)現(xiàn)、發(fā)布監(jiān)控、日志統(tǒng)計、配置管理等于一體,通過它可以快速用微服務(wù)的方式構(gòu)建自己的穩(wěn)定可靠的分布式應(yīng)用,并實現(xiàn)完整有效的服務(wù)治理。
目前該框架在騰訊內(nèi)部,各大核心業(yè)務(wù)都在使用,頗受歡迎,基于該框架部署運(yùn)行的服務(wù)節(jié)點(diǎn)規(guī)模達(dá)到上萬個。
GitHub地址:
https://github.com/Tencent/Tars
28、WeFlow:前端開發(fā)工作流工具
一個高效、強(qiáng)大、跨平臺(macOS & Win)的前端開發(fā)工作流工具,核心基于 tmt-workflow 工作流,代碼開源可定制。
GitHub地址:
https://github.com/Tencent/WeFlow
29、Pebble:分布式開發(fā)框架
基于該框架,可以讓開發(fā)者只需專注于業(yè)務(wù)邏輯的實現(xiàn),而不需要關(guān)注基礎(chǔ)功能的開發(fā),如網(wǎng)絡(luò)通信,數(shù)據(jù)存儲,集群管理等。
GitHub地址:
https://github.com/TencentOpen/Pebble
30、tmt-workflow:前端工作流程
基于Gulp(v4.0)、高效、跨平臺(macOS & Win)、可定制的前端工作流程。
GitHub地址:
https://github.com/Tencent/tmt-workflow
31、WeUI:基礎(chǔ)樣式庫
一套同微信原生視覺體驗一致的基礎(chǔ)樣式庫,為微信Web 開發(fā)量身設(shè)計,可以令用戶的使用感知更加統(tǒng)一。包含button、cell、dialog、toast、article、icon等各式元素。
GitHub地址:
https://github.com/weui
32、WCDB:移動數(shù)據(jù)庫框架
騰訊開源的一個高效、完整、易用的移動數(shù)據(jù)庫框架,基于SQLCipher,支持 iOS、macOS 和 Android。
GitHub地址:
https://github.com/Tencent/wcdb
33、xLua
xLua 為 Unity3D 增加 Lua 腳本編程的能力,進(jìn)而提供代碼邏輯增量更新的可能。
GitHub地址:
https://github.com/Tencent/xLua
34、Libco:C/C++協(xié)程庫
Libco是微信后臺大規(guī)模使用的C/C++協(xié)程庫,2013年至今穩(wěn)定運(yùn)行在微信后臺的數(shù)萬臺機(jī)器上。Libco提供了完善的協(xié)程編程接口、常用的Socket族函數(shù)Hook等,使得業(yè)務(wù)可用同步編程模型快速迭代開發(fā)。
早期微信后臺因為業(yè)務(wù)需求復(fù)雜多變、產(chǎn)品要求快速迭代等需求,大部分模塊都采用了半同步半異步模型。接入層為異步模型,業(yè)務(wù)邏輯層則是同步的多進(jìn)程或多線程模型,業(yè)務(wù)邏輯的并發(fā)能力只有幾十到幾百。隨著微信業(yè)務(wù)的增長,系統(tǒng)規(guī)模變得越來越龐大,每個模塊很容易受到后端服務(wù)/網(wǎng)絡(luò)抖動的影響?;谶@樣的背景,微信開發(fā)了Libco,實現(xiàn)了對業(yè)務(wù)邏輯非侵入的異步化改造。
GitHub地址:
https://github.com/tencent/libco
35、PhxPaxos:生產(chǎn)級paxos類庫
PhxPaxos是微信后臺團(tuán)隊自主研發(fā)的一套基于Paxos協(xié)議的多機(jī)狀態(tài)拷貝類庫。它以庫函數(shù)的方式嵌入到開發(fā)者的代碼當(dāng)中,使得一些單機(jī)狀態(tài)服務(wù)可以擴(kuò)展到多機(jī)器,從而獲得強(qiáng)一致性的多副本以及自動容災(zāi)的特性。PhxPaxos在微信服務(wù)里面經(jīng)過一系列的工程驗證和大量的惡劣環(huán)境下的測試,在一致性的保證上極為健壯。
PhxPaxos的特性包括使用基于消息傳遞機(jī)制的純異步工程架構(gòu)、每次寫盤使用fsync嚴(yán)格保證正確性、支持Checkpoint以及對PaxosLog的自動清理、使用點(diǎn)對點(diǎn)流式協(xié)議進(jìn)行快速學(xué)習(xí)、支持跨機(jī)器的Checkpoint自動拉取、內(nèi)置Master選舉功能、自適應(yīng)的過載保護(hù)等。
GitHub地址:
https://github.com/tencent-wechat/phxpaxos
36、PhxSQL:高可用、強(qiáng)一致的MySQL集群
PhxSQL是一個兼容MySQL、服務(wù)高可用、數(shù)據(jù)強(qiáng)一致的關(guān)系型數(shù)據(jù)庫集群。PhxSQL以單Master多Slave方式部署,在集群內(nèi)超過一半機(jī)器存活的情況下、即可提供服務(wù),并且自身實現(xiàn)自動Master切換、保證數(shù)據(jù)一致性。PhxSQL不依賴于ZooKeeper等任何第三方做存活檢測及選主。PhxSQL基于MySQL的一個分支Percona 5.6開發(fā),功能和實現(xiàn)與MySQL基本一致。
MySQL主備在主機(jī)上支持完整SQL、全局事務(wù)、以repeatable read和serializable級別的事務(wù)隔離,在金融、帳號等關(guān)鍵業(yè)務(wù)中有巨大的價值。但是MySQL傳統(tǒng)主備方案也有其缺點(diǎn)。最明顯的就是主機(jī)故障后的自動換主和新舊主數(shù)據(jù)一致性,即所謂的一致性和可用性。為了解決這個問題,并同時完全兼容MySQL,微信在MySQL的基礎(chǔ)上應(yīng)用Paxos,設(shè)計和開發(fā)了PhxSQL。
GitHub地址:
https://github.com/tencent-wechat/phxsql
37、PhxRPC:RPC框架
PhxRPC是微信后臺團(tuán)隊推出的一個簡潔小巧的RPC框架,編譯生成的庫只有450K(編譯只依賴第三方庫Protobuf)。PhxRPC的特性如下:
使用Protobuf作為IDL用于描述RPC接口以及通信數(shù)據(jù)結(jié)構(gòu)。
基于Protobuf文件自動生成Client以及Server接口,用于Client的構(gòu)建,以及Server的實現(xiàn)。
半同步半異步模式,采用獨(dú)立多IO線程,通過Epoll管理請求的接入以及讀寫,工作線程采用固定線程池。IO線程與工作線程通過內(nèi)存隊列進(jìn)行交互。
提供完善的過載保護(hù),無需配置閾值,支持動態(tài)自適應(yīng)拒絕請求。
提供簡易的Client/Server配置讀入方式。
基于lambda函數(shù)實現(xiàn)并發(fā)訪問Server,可以非常方便地實現(xiàn)Google提出的 Backup Requests 模式。
GitHub地址:
https://github.com/tencent-wechat/phxrpc
38、Mars:終端跨平臺網(wǎng)絡(luò)組件
Mars是微信官方的終端基礎(chǔ)組件,是一個結(jié)合移動應(yīng)用所設(shè)計的基于Socket層的解決方案,在網(wǎng)絡(luò)調(diào)優(yōu)方面有更好的可控性,采用C++開發(fā)。目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。
在微信中,任何網(wǎng)絡(luò)實現(xiàn)的bug都可能導(dǎo)致重大事故。例如微信的容災(zāi)實現(xiàn),如果因為版本的實現(xiàn)差異,導(dǎo)致某些版本上無法進(jìn)行容災(zāi)恢復(fù),將會嚴(yán)重的影響用戶體驗。微信研發(fā)了統(tǒng)一的跨平臺的網(wǎng)絡(luò)基礎(chǔ)庫Mars來滿足發(fā)展的需要,一方面,基礎(chǔ)組件可以提高研發(fā)效率,另外一方面,也可以提高系統(tǒng)的穩(wěn)健性。
在設(shè)計上,Mars以跨平臺、跨業(yè)務(wù)為前提,遵從高可用,高性能,負(fù)載均衡的設(shè)計原則。以網(wǎng)絡(luò)的可用性為例,移動互聯(lián)網(wǎng)有著丟包率高、帶寬受限、延遲波動、第三方影響等特點(diǎn),使得網(wǎng)絡(luò)的可用性,尤其是弱網(wǎng)絡(luò)下的可用性變得尤為關(guān)鍵。Mars 的STN組件作為基于 socket 層的網(wǎng)絡(luò)解決方案,在很多細(xì)節(jié)設(shè)計上會充分考慮弱網(wǎng)絡(luò)下的可用性。
GitHub地址:
https://github.com/Tencent/mars
39、熱補(bǔ)丁技術(shù)Tinker
Tinker是微信官方的Android熱補(bǔ)丁解決方案,它支持動態(tài)下發(fā)代碼、So庫以及資源,讓應(yīng)用能夠在不需要重新安裝的情況下實現(xiàn)更新。
當(dāng)前市面的熱補(bǔ)丁方案有很多,其中比較出名的有阿里的AndFix、美團(tuán)的Robust以及QZone的超級補(bǔ)丁方案,但它們都存在無法解決的問題,所以微信研發(fā)了自己的解決方案。總的來說,AndFix作為native解決方案,首先面臨的是穩(wěn)定性與兼容性問題,更重要的是它無法實現(xiàn)類替換,它是需要大量額外的開發(fā)成本的。而Robust兼容性與成功率較高,但是它與AndFix一樣,無法新增變量與類只能用做的bugFix方案。Qzone方案可以做到發(fā)布產(chǎn)品功能,但是它主要問題是插樁帶來Dalvik的性能問題,以及為了解決Art下內(nèi)存地址問題而導(dǎo)致補(bǔ)丁包急速增大的。
Tinker的具體設(shè)計目標(biāo)如下:
開發(fā)透明:開發(fā)者無需關(guān)心是否在補(bǔ)丁版本,他可以隨意修改,不由框架限制。
性能無影響:補(bǔ)丁框架不能對應(yīng)用帶來性能損耗。
完整支持:支持代碼,So 庫以及資源的修復(fù),可以發(fā)布功能。
補(bǔ)丁大小較小:補(bǔ)丁大小應(yīng)該盡量的小,提高升級率。
穩(wěn)定,兼容性好:保證微信的數(shù)億用戶的使用,盡量減少反射。
GitHub地址:
https://github.com/Tencent/tinker
美團(tuán)點(diǎn)評開源軟件
1、DBProxy:數(shù)據(jù)庫中間件
DBProxy是由美團(tuán)點(diǎn)評公司技術(shù)工程部DBA團(tuán)隊(北京)開發(fā)維護(hù)的一個基于MySQL協(xié)議的數(shù)據(jù)中間層。它在奇虎360公司開源的Atlas基礎(chǔ)上,修改了部分bug,并且添加了很多特性。
通過數(shù)據(jù)庫中間件,可以對數(shù)據(jù)庫進(jìn)行水平擴(kuò)展,由原來單臺數(shù)據(jù)庫擴(kuò)展到多臺數(shù)據(jù)庫,數(shù)據(jù)庫中間件通過路由規(guī)則將數(shù)據(jù)的訪問請求路由到其中一臺數(shù)據(jù)庫上,從而大大降低了數(shù)據(jù)訪問的瓶頸和單臺數(shù)據(jù)庫的壓力。通過數(shù)據(jù)庫中間件還可以將DBA和研發(fā)進(jìn)行解耦,提升DBA運(yùn)維效率。
Github地址:
https://github.com/Meituan-Dianping/DBProxy
2、SQLAdvisor:SQL優(yōu)化工具
SQLAdvisor 是由美團(tuán)點(diǎn)評公司北京DBA團(tuán)隊開發(fā)維護(hù)的 SQL 優(yōu)化工具:輸入SQL,輸出索引優(yōu)化建議。 它基于 MySQL 原生詞法解析,再結(jié)合 SQL 中的 where 條件以及字段選擇度、聚合條件、多表 Join 關(guān)系等最終輸出最優(yōu)的索引優(yōu)化建議。目前 SQLAdvisor 在公司內(nèi)部大量使用,較為成熟、穩(wěn)定。
GitHub地址:https://github.com/Meituan-Dianping/SQLAdvisor
華為開源軟件
1、HBase 的 Spark SQL Astro
Spark SQL on HBase package 項目又名 Astro,端到端整合了 Spark,Spark SQL和HBase的能力,有助于推動幫助Spark進(jìn)入NoSQL的廣泛客戶群,并提供強(qiáng)大的在線查詢和分析以及在垂直企業(yè)大規(guī)模數(shù)據(jù)處理能力。
Apache HBase 是數(shù)據(jù)在 HDFS 上的 Key-Value 存儲。它用來給 Google 的 Big Table 建模,并提供了 API 用于查詢數(shù)據(jù)。這些數(shù)據(jù)通過它的“row keys”來組織、區(qū)分和發(fā)布。在每個分區(qū)上,數(shù)據(jù)被指定的“列”數(shù)據(jù)集合“列族”物理分區(qū)。這些數(shù)據(jù)模型是寬且零散的,在這些表中列是動態(tài)的,零散的。
詳情:https://www.oschina.net/p/huawei-astro
2、LiteOS:華為物聯(lián)網(wǎng)操作系統(tǒng)
Huawei LiteOS 是華為面向IoT領(lǐng)域,構(gòu)建的"統(tǒng)一物聯(lián)網(wǎng)操作系統(tǒng)和中間件軟件平臺",以輕量級(內(nèi)核小于10k)、低功耗(1節(jié)5號電池最多可以工作5年),快速啟動,互聯(lián)互通,安全等關(guān)鍵能力,為開發(fā)者提供 "一站式" 完整軟件平臺,有效降低開發(fā)門檻、縮短開發(fā)周期。
Huawei LiteOS 目前主要應(yīng)用于智能家居、穿戴式、車聯(lián)網(wǎng)、智能抄表、工業(yè)互聯(lián)網(wǎng)等 IoT 領(lǐng)域的智能硬件上。
詳情:https://www.oschina.net/p/liteos
GitHub地址:
https://github.com/Huawei/Huawei_LiteOS_Kernel
3、Apache CarbonData:Hadoop 原生文件格式
CarbonData 是一個為了更快的交互查詢而生的新的Hadoop原生文件格式,用于大數(shù)據(jù)的快速分析和多維度查詢hadoop本地數(shù)據(jù)存儲設(shè)計。
在客戶基準(zhǔn)上,CarbonData已經(jīng)展示出管理運(yùn)行在非常低成本的硬件上的PB級別的數(shù)據(jù),并且比目前的開源解決方案快了近10倍。
詳情:https://www.oschina.net/p/carbondata
4、ServiceComb:多功能微服務(wù)框架
ServiceComb 是華為開源的一套包含代碼框架生成,服務(wù)注冊發(fā)現(xiàn),負(fù)載均衡,服務(wù)可靠性(容錯熔斷,限流降級,調(diào)用鏈追蹤)等功能的微服務(wù)框架。
ServiceComb 是華為 FusionCloud 解決方案中 PaaS 平臺的重要組成部分,內(nèi)置了高可靠性運(yùn)行、動態(tài)治理等運(yùn)維階段的高級能力。ServiceComb 目前已應(yīng)用于華為自身 IT 的多個核心業(yè)務(wù),幫助華為極大地提升了云原生應(yīng)用的開發(fā)效率。
ServiceComb 包括應(yīng)用框架代碼生成,服務(wù)注冊發(fā)現(xiàn)、服務(wù)配置管理、服務(wù)監(jiān)控、服務(wù)調(diào)用追蹤、多通信協(xié)議支持等功能,具有服務(wù)化契約增強(qiáng)、響應(yīng)式編程范式及多語言 SDK 支持等優(yōu)勢特性。ServiceComb 基于開放的架構(gòu),不僅可以支持開發(fā)者根據(jù)自身業(yè)務(wù)需求定制業(yè)務(wù)插件,而且還兼容多種業(yè)界流行的微服務(wù)框架。
詳情:https://www.oschina.net/p/servicecomb
5、hindex:HBase 二級索引
hindex 是華為公司開發(fā)的純 Java 編寫的 HBase 二級索引,兼容 Apache HBase 0.94.8。
當(dāng)前的特性如下:
多個表索引
多個列索引
基于部分列值的索引
使用索引掃描等于和范圍條件
批量加載數(shù)據(jù)來索引表(索引完成批量加載)
詳情:https://www.oschina.net/p/hindex
GitHub地址:
https://github.com/Huawei-Hadoop/hindex
6、oct:開放容器測試框架
oct 是用于開放容器的測試用例和框架,用 Go 語言開發(fā)。
ocp-testing 項目的目標(biāo)是,通過提供全局測試框架給所有的容器項目,來提高開放容器項目。測試包括,ocp 規(guī)范,容器功能和容器性能。
詳情:https://www.oschina.net/p/oct
GitHub地址:
https://github.com/huawei-openlab/oct
7、streamDM:用于 Spark Streaming 的數(shù)據(jù)挖掘
streamDM,是由華為諾亞方舟實驗室開源的使用 Spark Streaming 挖掘大數(shù)據(jù)的開源軟件。
大數(shù)據(jù)流學(xué)習(xí)(Big Data stream learning)比批量或離線學(xué)習(xí)更富有挑戰(zhàn)性,因為數(shù)據(jù)在流動的過程中不太可能保持同一種分布。而且,數(shù)據(jù)流中的每一個樣本只能被處理一次,否則它們就需要占用內(nèi)存進(jìn)行總結(jié),同時該學(xué)習(xí)算法也必須非常高效。
Spark Streaming是核心Spark API 的一個擴(kuò)展,它能讓多個源的數(shù)據(jù)流處理成為可能。Spark 是一個可擴(kuò)展可編程的框架,用于大規(guī)模分布式數(shù)據(jù)集(也稱為彈性分布式數(shù)據(jù)集(RDD))處理。Spark Streaming 接收輸入的數(shù)據(jù)流后將數(shù)據(jù)分批,再由 Spark 引擎處理,生成結(jié)果。
Spark Streaming 數(shù)據(jù)被編成一個 DStreams 序列,內(nèi)在地表示成一個 RDD 序列。
詳情:https://www.oschina.net/p/stream-dm
GitHub地址:
https://github.com/huawei-noah/streamDM/
8、StreamCQL:流處理平臺查詢語言
StreamCQL作為華為FusionInsight產(chǎn)品的重要組件,提供了在分布式流處理平臺上的類SQL查詢能力,包括窗口計算等高級特性,在開源之前已經(jīng)在電信、金融等多個行業(yè)成功應(yīng)用,簡化開發(fā)工作量數(shù)倍。
StreamCQL是一個類SQL的聲明式語言,它用于在流(streams)和可更新關(guān)系(updatable relation)上的可持續(xù)查詢,目的是在流處理平臺分布式計算能力之上,通過使用簡易通用的類SQL語言,使得業(yè)務(wù)邏輯的開發(fā)變得統(tǒng)一和簡易。在架構(gòu)上,除了支持主流的流處理平臺Storm,它支持?jǐn)U展到多種流處理引擎之上,如Flink。在功能上,StreamCQL彌補(bǔ)了傳統(tǒng)流處理平臺上一些基本業(yè)務(wù)功能的缺失,除了過濾、轉(zhuǎn)換等基本SQL能力之外, 還引入基于內(nèi)存窗口的計算、統(tǒng)計、關(guān)聯(lián)等能力,以及流數(shù)據(jù)的拆分、合并等功能。后期StreamCQL的發(fā)展方向包括:模式匹配、CQLServer(CQL遠(yuǎn)程提交,多語言接口,JDBC接口)、可靠性增強(qiáng)等。
詳情:https://www.oschina.net/p/streamcql
GitHub地址:
https://github.com/HuaweiBigData/StreamCQL
9、96Boards:ARM 開放平臺規(guī)范
96Boards 是 ARM 開放平臺規(guī)范,是第一個定義 Cortex-A 開發(fā)板的開放規(guī)范,Cortex-A 是 ARM SoC 供應(yīng)商提供的低耗能,小腳本 32 位和 64 位開發(fā)板。標(biāo)準(zhǔn)化擴(kuò)展 Peripheral I/O 總線,顯示和相機(jī),允許硬件生態(tài)系統(tǒng)開發(fā)一系列兼容組件的產(chǎn)品,在其生命周期可以在任意兼容 96Boards 的平臺上使用。
詳情:https://www.oschina.net/p/96boards
寫給讀者
越來越多的公司正走向開源,編程語言、操作系統(tǒng)、框架、平臺、數(shù)據(jù)庫等方方面面開源軟件也越來越多,這些開源項目為我們的工作帶來很多方便,可以直接“拿來”解決技術(shù)問題,不用重復(fù)造輪子,提高效率的同時也極大地降低了研發(fā)成本。
除了軟件可以開源之外,研發(fā)實踐也可以開源共享,第六屆TOP100全球軟件案例研究峰會將于11月9-12日在北京國家會議中心舉辦,甄選100個本年度最具行業(yè)代表性的軟件研發(fā)案例,現(xiàn)場解讀其解決方案和背后的技術(shù)邏輯,幫助研發(fā)團(tuán)隊快速提高效能。
更多TOP100案例信息及日程請前往[官網(wǎng)]查閱。4天時間集中分享2017年最值得學(xué)習(xí)的100個研發(fā)案例實踐。本平臺共送出10張開幕式單天免費(fèi)體驗票,登錄TOP100summit官網(wǎng)即可申請,數(shù)量有限,先到先得。