奇虎360
1.MySQL中間層 Atlas
Atlas是由 Qihoo 360, Web平臺部基礎架構團隊開發(fā)維護的一個基于MySQL協(xié)議的數(shù)據(jù)中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內(nèi)部得到了廣泛應用,很多MySQL業(yè)務已經(jīng)接入了Atlas平臺,每天承載的讀寫請求數(shù)達幾十億條。
主要功能:
* 讀寫分離
* 從庫負載均衡
* IP過濾
* SQL語句黑白名單
* 自動分表2.360黑科技=》DroidPlugin
DroidPlugin 是360手機助手在 Android 系統(tǒng)上實現(xiàn)了一種新的插件機制:它可以在無需安裝、修改的情況下運行APK文件,此機制對改進大型App的架構,實現(xiàn)多團隊協(xié)作開發(fā)具有一定的好處。
特點: 支持Androd 2.3以上系統(tǒng) 插件APK完全不需做任何修改,可以獨立安裝運行、也可以做插件運行。要以插件模式運行某個APK,你無需重新編譯、無需知道其源碼。 插件的四大組件完全不需要在Host程序中注冊,支持Service、Activity、BroadcastReceiver、ContentProvider四大組件 插件之間、Host程序與插件之間會互相認為對方已經(jīng)"安裝"在系統(tǒng)上了。 API低侵入性:極少的API。HOST程序只是需要一行代碼即可集成Droid Plugin 超強隔離:插件之間、插件與Host之間完全的代碼級別的隔離:不能互相調(diào)用對方的代碼。通訊只能使用Android系統(tǒng)級別的通訊方法。 支持所有系統(tǒng)API 資源完全隔離:插件之間、與Host之間實現(xiàn)了資源完全隔離,不會出現(xiàn)資源竄用的情況。 實現(xiàn)了進程管理,插件的空間進程會被及時回收,占用內(nèi)存空間。 插件的靜態(tài)廣播會被當作動態(tài)處理,如果插件沒有運行(即使沒有插件進程運行),其靜態(tài)廣播也永遠不會被觸發(fā)。
3.高性能分布式存儲服務 HustStore
huststore 是一個高性能的分布式存儲服務,不但提供了 10w QPS 級別的 kv 存儲的功能,還提供了 hash、set 等一系列數(shù)據(jù)結構的支持,并且支持 二進制 的 kv 存儲,完全可以完全取代 redis 的功能。此外,huststore 還結合特有的 HA 模塊實現(xiàn)了分布式消息隊列的功能,包括消息的流式推送,以及消息的 發(fā)布-訂閱 等功能,可以完全取代 RabbitMQ 的功能。
特性
huststore 分為 hustdb 以及 HA 模塊兩大部分。hustdb (存儲引擎)的底層設計采用了自主開發(fā)的 fastdb,通過一套獨特的 md5 db 將QPS 提升至 10w 級別的水準(含網(wǎng)絡層的開銷)。HA 以 Nginx 模塊的方式開發(fā)。nginx 是工業(yè)級的 http server 標準,得益于此,huststore 具備以下特性:
高吞吐量
hustdb 網(wǎng)絡層采用了開源的方式 libevhtp 來實現(xiàn),結合自主研發(fā)的高性能 fastdb 存儲引擎,性能測試 QPS 在 10w 以上。高并發(fā)
參考 nginx 的并發(fā)能力。高可用性
huststore 整體架構支持 Replication (master-master),支持 load balance 。
HA 的可用性由nginx 的 master-worker 架構所保證。當某一個 worker 意外掛掉時, master 會自動再啟動一個 worker 進程,而且多個 worker 之間是相互獨立的,從而保證了 HA 的高可用性。
huststore 的高可用性由其整體架構特點保證。由于 hustdb 存儲節(jié)點采用了 master-master 的結構,當某一個存儲節(jié)點掛掉時,HA 會自動將請求打到另外一臺 master,同時 HA 會自動進行負載均衡,將數(shù)據(jù)分布存儲在多個位置 hustdb節(jié)點上,因此存儲引擎不存在單點限制。
同時 HA 集群本身也是分布式的設計,而且每個 HA 節(jié)點都是獨立的,當某一臺 HA 掛掉時, LVS 會自動將請求打到其他可用的地方 HA 節(jié)點,從而解決了問題 HA 的單點限制。通用性的接口
huststore 使用 http 作為通用協(xié)議,因此客戶端的實現(xiàn)不限制于語言。支持二進制的 key-value
4.分布式配置管理工具 QConf
QConf 是奇虎 360 內(nèi)部分布式配置管理工具。用來替代傳統(tǒng)的配置文件,使得配置信息和程序代碼分離,同時配置變化能夠實時同步到客戶端,而且保證用戶高效讀取配置,這使的工程師從瑣碎的配置修改、代碼提交、配置上線流程中解放出來,極大地簡化了配置管理工作。
特點 一處修改,所有機器實時同步更新 高效讀取配置 安裝部署方便,使用簡單 服務器宕機、網(wǎng)絡中斷、集群遷移等異常情況對用戶透明 支持c/c++、shell、php、Python、lua 等語言。
5.開源類Redis存儲系統(tǒng) Pika
Pika 是 360 DBA 和基礎架構組聯(lián)合開發(fā)的類 Redis 存儲系統(tǒng),完全支持 Redis 協(xié)議,用戶不需要修改任何代碼,就可以將服務遷移至 Pika。有維護 Redis 經(jīng)驗的 DBA 維護 Pika 不需要學習成本。
Pika 主要解決的是用戶使用 Redis 的內(nèi)存大小超過 50G、80G 等等這樣的情況,會遇到啟動恢復時間長,一主多從代價大,硬件成本貴,緩沖區(qū)容易寫滿等問題。Pika 就是針對這些場景的一個解決方案。
特點
容量大,支持百G數(shù)據(jù)量的存儲
兼容redis,不用修改代碼即可平滑從redis遷移到pika
支持主從(slaveof)
完善的運維命令
6.對象緩存服務器 kmemcache
分布式linux內(nèi)核內(nèi)存對象緩存服務器,實現(xiàn)基于memcached v1.4.15,基本兼容memcached的所有操作。經(jīng)初步測試,內(nèi)存數(shù)據(jù)操作比memcached快1倍,網(wǎng)絡并發(fā)量比memcached的也大許多,目前處于alpha版本。
優(yōu)點:由于在內(nèi)核的socket層實現(xiàn),所有處理網(wǎng)絡事件性能比epoll機制快,另外無需內(nèi)存由用戶空間到內(nèi)核空間的拷貝。
缺點:不建議在32bits下使用。
7.ngx_http_subrange_module
當Nginx作為文件下載服務的反向代理,用戶請求一個非常大的文件的時候,它會一直占滿反向代理服務器與后端主機之間的帶寬。因為nginx一次獲取整個文件,緩沖獲取到的文件,導致客戶端不能馬上讀取到。帶寬使用和iowait會很高。
ngx_http_subrange_module就是為了解決這個問題,它能分割HTTP requests。將大數(shù)據(jù)量的HTTP請求切分為多個子請求,當下載一個1 G的文件,subrange將從后端主機中下載文件塊,比如先獲取5 M,然后再獲取5 M,直到客戶端下載完整個文件。
8.同步到異步的類庫 Mario
Mario是一個讓編寫從同步到異步的類庫,它的線程安全較大,易于使用。Mario 的最基本的想法就是為了減少人員的安排,降低成本和時間投入。但是有了這個類庫,操作人員就可以抽出精力做別的事情了。所以 Mario 類庫能夠很輕易的解決你的問題,你只需要你自己的消息功能。
引擎類型:
memory,這種類型就是將數(shù)據(jù)緩沖存儲器留在內(nèi)存里。
file,這種類型就是能夠在本地日志路徑里創(chuàng)建做出一個 write2file。
更多l(xiāng)inux內(nèi)核視頻教程文本資料免費獲取后臺私信【內(nèi)核】。
----------------------------------------------------------------------------------------------------------------
百度 Baidu
1.UEditor 編輯器
UEditor是由百度web前端研發(fā)部開發(fā)所見即所得富文本web編輯器,具有輕量,可定制,注重用戶體驗等特點。
主要特點:
輕量級:代碼精簡,加載迅速。
定制化:
全新的分層理念,滿足多元化的需求。
采用三層架構:
1. 核心層: 為命令層提供底層API,如range/selection/domUtils類。
2. 命令插件層: 基于核心層開發(fā)command命令,命令之間相互獨立。
3. 界面層: 為命令層提供用戶使用界面。
滿足不同層次用戶的需求。2.ECharts 圖表庫
ECharts開源來自百度商業(yè)前端數(shù)據(jù)可視化團隊,基于html5 Canvas,是一個純JAVAscript圖表庫,提供直觀,生動,可交互,可個性化定制的數(shù)據(jù)可視化圖表。創(chuàng)新的拖拽重計算、數(shù)據(jù)視圖、值域漫游等特性大大增強了用戶體驗,賦予了用戶對數(shù)據(jù)進行挖掘、整合的能力。提供商業(yè)產(chǎn)品常用圖表,底層基于ZRender(一個全新的輕量級canvas類庫),創(chuàng)建了坐標系,圖例,提示,工具箱等基礎組件,并在此上構建出折線圖(區(qū)域圖)、柱狀圖(條狀圖)、散點圖(氣泡圖)、餅圖(環(huán)形圖)、K線圖、地圖、力導向布局圖以及和弦圖,同時支持任意維度的堆積和多圖表混合展現(xiàn)。
ECharts-X是 ECharts 團隊推出的全新 3D 可視化庫,它是基于 ECharts 的擴展,底層深度整合了 WebGL 庫QTEK和 Canvas2D 庫ZRender。
3.WebUploader 上傳控件
WebUploader 是由Baidu WebFE(FEX)團隊開發(fā)的一個簡單的以HTML5為主,F(xiàn)LASH為輔的現(xiàn)代文件上傳組件。在現(xiàn)代的瀏覽器里面能充分發(fā)揮HTML5的優(yōu)勢,同時又不摒棄主流IE瀏覽器,延用原來的FLASH運行時,兼容IE6+,Andorid 4+,IOS 6+。兩套運行時,同樣的調(diào)用方式,可供用戶任意選用。采用大文件分片并發(fā)上傳,極大的提高了文件上傳效率。
4.百度腦圖 KityMinder
KityMinder 是百度FEX團隊的f-cube小組(原UEditor小組)的又一力作。作為一款在線的腦圖編輯工具,它有著很多Native編輯工具的交互體驗。KM與UE有著一樣的宗旨,就是注重最終用戶的使用體驗。同時,它充分發(fā)揮了Web云存儲的優(yōu)勢,可以直接將編輯中的腦圖同步到云端。此外,借由獨創(chuàng)的 “云盤分享”功能,用戶可以一鍵將當前編輯的腦圖直接生成在線鏈接共享給其他用戶,實現(xiàn)無縫溝通。
KM是基于SVG技術實現(xiàn),使用JavaScript+html實現(xiàn)。支持絕大多數(shù)的主流瀏覽器。
支持列表如下
1. chrome
2. firefox
3. safari
4. ie9-115.人工智能系統(tǒng) WARP-CTC
WARP-CTC 基于 CTC 方法,當前可用的一些 CTC 實現(xiàn)通常要求大量的內(nèi)存或者是慢十到幾百倍。
百度研究所首席科學家 Andrew Ng 稱他的研究主要是人工神經(jīng)網(wǎng)絡如何在圖形處理單元 (GPUs) 上運行,讓 WARP-CTC 實現(xiàn)對 GPUs 和 x86 CPUs 的支持。
connectionist temporal classification (CTC) 方法可以追溯到 2006 年,在 Swiss AI 研究所 IDSIA 論文上有記錄。 百度研究所開發(fā)的 WARP-CTC 就基于 CTC 方案,但是改進了其自身的語音識別功能
----------------------------------------------------------------------------------------------------------------
騰訊 QQ
1.WeUI 為微信Web服務量身設計
WeUI 是一套同微信原生視覺體驗一致的基礎樣式庫,由微信官方設計團隊為微信 Web 開發(fā)量身設計,可以令用戶的使用感知更加統(tǒng)一。包含button、cell、dialog、 progress、 toast、article、actionsheet、icon等各式元素。
2.手機前端開發(fā)調(diào)試利器 vConsole
我們在開發(fā)手機版網(wǎng)頁的時候,常常會出現(xiàn)下面的情景:
(1) 開發(fā)時,在自己電腦上運行得好好的,在手機上打開就掛了,但是手機上又看不到error log;
(2) 上線后,某用戶表示頁面失靈,但我們自己又重現(xiàn)不出來,看不到用戶側的出錯信息。
如果說(1)還可以通過電腦連接手機以查看log來解決,那(2)在沒有完善的前端上報體系時就非常被動了。
作為開發(fā)者,我們的訴求很簡單:有沒有快捷的方法在手機前端頁面看到log日志?vConsole就這樣出現(xiàn)了!
3.專業(yè)級Web圖像處理引擎 AlloyImage
AlloyImage是一個使用Javascript語言開發(fā)的,基于Web的在線圖像處理引擎,除了核心底層圖像處理引擎,還同時集成了一些方便快捷的圖像處理API,您可以將它簡單快捷的引用到您的Web網(wǎng)頁中,做出與Photoshop一樣的優(yōu)美效果。甚至,你可以用AlloyImage來開發(fā)一個Web在線圖像處理軟件。
4. GoPng 圖片合并并生成css
Css Sprite,有時也稱為雪碧圖、精靈圖,是每一個前端開都會遇到的問題,也是常見的小圖片加載優(yōu)化手段。
5.可視化Web構建工具 AlloyDesigner
AlloyDesigner 是一款致力于提高前端生產(chǎn)效率的瀏覽器內(nèi)運行工具,AlloyDesigner + Chrome F12(Especially with WorkSpace) 打造前端新的開發(fā)和測試模式
6.Koala跨平臺圖形編譯工具
Koala是一款預處理器語言圖形編譯工具,支持Less、Sass、CoffeeScript、Compass framework 的即時編譯。 無需手動輸入命令去編譯,后臺監(jiān)聽文件是否有改變,如有修改會自動進行編譯。能夠大大提升 Web 開發(fā)中的工作效率。
功能特性 多語言支持 支持Less、Sass、CoffeeScript 和 Compass Framework。 實時編譯 監(jiān)聽文件,當文件改變時自動執(zhí)行編譯,這一切都在后臺運行,無需人工操作。 編譯選項 可以設置各個語言的編譯選項。 項目配置 支持為項目創(chuàng)建一個全局配置,為文件設置統(tǒng)一編譯選項。 錯誤提示 在編譯時如果遇到語法的錯誤,koala將在右下角彈出錯誤信息,方便開發(fā)者定位代碼錯誤位置。 跨平臺 windows、Linux、mac都能完美運行。 系統(tǒng)支持及要求
Koala支持跨平臺運行,完美兼容Windows、Linux與Mac 。
Linux系統(tǒng)下需安裝好ruby運行環(huán)境, e.g. $ sudo apt-get install ruby.7.輕量級 CSS3 動畫庫 JX.Animate
JX.Animate 是一個開源的輕量級的CSS3動畫庫。動畫可以使用標準的CSS3關鍵幀動畫(KeyFrame)制作,也可以使用JavaScript制作,而且還可以支持在JavaScript中動態(tài)生成動畫關鍵幀。
8.Fanvas swf轉為html5 canvas
Fanvas是一個把swf轉為html5 canvas動畫的系統(tǒng),由兩部分組成:Actionscript實現(xiàn)的解析器、js運行庫。Flash做動畫是最成熟最高效的方式,但由于終端基本不支持Flash播放,這給終端的動畫制作帶來了不少麻煩。Fanvas是Flash和Canvas的完美結合,可以把swf(包括矢量和位圖)完美地轉化為canvas動畫.
9.隨身調(diào)測平臺 GT
GT(隨身調(diào))是APP的隨身調(diào)測平臺,它是直接運行在手機上的“集成調(diào)測環(huán)境”(IDTE, Integrated Debug Environment)。利用GT,僅憑一部手機,無需連接電腦,您即可對APP進行快速的性能測試(CPU、內(nèi)存、流量、電量、幀率/流暢度等等)、 開發(fā)日志的查看、Crash日志查看、網(wǎng)絡數(shù)據(jù)包的抓取、APP內(nèi)部參數(shù)的調(diào)試、真機代碼耗時統(tǒng)計等。如果您覺得GT提供的功能還不夠滿足您的需要,您還 可以利用GT提供的基礎API自行開發(fā)有特殊功能的GT插件,幫助您解決更加復雜的APP調(diào)試問題。
10.Frozen UI 移動端UI框架
Frozen UI是一個開源的簡單易用,輕量快捷的移動端UI框架。基于手Q樣式規(guī)范,選取最常用的組件,做成手Q公用離線包減少請求,升級方式友好,文檔完善,目前全面應用在騰訊手Q增值業(yè)務中。
11.LivePool Web 開發(fā)調(diào)試工具
LivePool 是一個基于 NodeJS,類似 Fiddler 支持抓包和本地替換的 Web 開發(fā)調(diào)試工具,是 Tencent AlloyTeam 在開發(fā)實踐過程總結出的一套的便捷的 WorkFlow 以及調(diào)試方案。
特性 基于 NodeJS, 跨平臺 支持 http 抓包和本地替換調(diào)試,Https/WebSockets 直接代理轉發(fā)(暫不支持本地替換) 便捷的 UI 管理界面,跟 Fiddler 類似,降低學習成本 可以脫離 UI 后臺運行,適應于某些不需要抓包,只需要使用替換和簡單路由的場景 基于項目的替換規(guī)則管理,方便高效,規(guī)則支持拖曳排序 支持基于請求路徑的本地文件替換,支持基于請求路徑的路由轉發(fā)(host 配置) 替換類型支持:文件/文件夾替換,combo合并替換,qzmin替換(批量combo),delay延時等 支持自動設置系統(tǒng)代理 支持規(guī)則過濾,只顯示關注的請求 提供構建 http get/post 請求界面,方便接口調(diào)試 特色功能:模擬gprs/3g等低網(wǎng)速(mac only) 特色功能:支持離線站點到本地,并自動代碼格式化
12.KNVProtoEngine 高性能樹型協(xié)議處理引擎
KNV是一個模式自由的高性能樹型協(xié)議處理引擎,是對Key-Value的一個通用結構化擴展。
應用特性
正如NoSQL對SQL的徹底變革一樣,KNV是對Key-Value的徹底變革!
大家都很熟悉Key-Value系統(tǒng),但KV操作極不方便:
-- 你不得不自己做樂觀鎖(讀返回seq->修改->帶seq寫->seq變化則重頭開始);
-- 你不得不拉取一堆數(shù)據(jù),然后再提取你想要的部分;
-- 為了修改一個bit,你不得不把一串數(shù)據(jù)拉取修改后再一起提交更新
不過現(xiàn)在有KNV,一切都解決了。KNV時代來了,你還在猶豫嗎?應用場景
KNV是專門針對以Protocol Buffers(或類似樹型結構)存儲的存儲系統(tǒng)開發(fā)的,有3個應用場景:
存儲系統(tǒng) 處理用戶請求的通用解決方法(Get/Set/Delete),可以適配任意用戶自定義的數(shù)據(jù)結構。
代理/通用邏輯層 服務器處理Protocol Buffers協(xié)議的通用方法 – 比如通用Proxy,透傳多個協(xié)議, 對請求包進行鑒權、限頻、統(tǒng)計等等操作,還支持對包體內(nèi)容進行審計,使用KNV協(xié)議, 這種方法就有可能而且很簡單。
原生態(tài) Protocol Buffers打解包庫 的高性能代替品。
13.Behaviac 游戲AI的開發(fā)框架組件
Behaviac是游戲AI的開發(fā)框架組件,也是游戲原型的快速設計工具。支持行為樹BT,狀態(tài)機FSM,HTN等多種范式,方便的編輯和調(diào)試。支持全平臺,適用于客戶端和服務器,助力游戲快速迭代開發(fā)。編輯器可以運行在PC上,操作方便直觀可靠,支持實時和離線調(diào)試;編輯器可以導出xml,bson等多種格式,更可以導出C++,C#源碼,提供最高效率。運行時支持全平臺,有C++和C#兩個版本,原生支持Unity。
已被《天天炫斗》、《QQ飛車》、《全民突擊》、《全民奪寶》、《九龍戰(zhàn)》等游戲及其他更多預研項目使用。
14.現(xiàn)代構建系統(tǒng) Typhoon Blade
Blade主要定位于linux下的大型C++項目,密切配合研發(fā)流程,比如單元測試,持續(xù)集成,覆蓋率統(tǒng)計等。但像unix下的文本過濾程序一 樣,保持相對的獨立性,可以單獨運行。目前重點支持i386/x86_64 Linux,未來可以考慮支持其他的類Unix系統(tǒng)。
特點: 自動分析頭文件依賴關系,構建受影響的代碼。 增量編譯和鏈接,只構建因變更受影響而需要構建的。 自動計算庫的間接依賴,庫的作者只需要寫出直接依賴,構建時自動檢查所依賴的庫是否需要重新構建。 在任意代碼樹的任意子目錄下都能構建。 支持一次遞歸構建多個目錄下的所有目標,也支持只構建任意的特定的目標。 無論構建什么目標,這些目標所依賴的目標也會被自動連坐更新。 內(nèi)置 debug/release 兩種構建類型。 彩色高亮構建過程中的錯誤信息。 支持 ccache 支持 distcc 支持基于構建多平臺目標 支持構建時選擇編譯器(不同版本的gcc,clang等) 支持編譯 protobuf,lex, yacc, swig 支持自定義規(guī)則 支持測試,在命令行跑多個測試 支持并行測試(多個測試進程并發(fā)運行) 支持增量測試(無需重新運行的測試程序自動跳過) 集成 gperftools,自動檢測測試程序的內(nèi)存泄露 構建腳本 vim 語法高亮 svn 式的子命令命令行接口。 支持 bash 命令行補全 用 Python 編寫,無需編譯,直接安裝使用。
徹底避免以下問題:
頭文件更新,受影響的模塊沒有重新構建。
被依賴的庫需要更新,而構建時沒有被更新,比如某子目錄依賴遙遠的某外部目錄的代碼,我在這個目錄構建,外部目錄的代碼會被自動檢查是否也需要重新構建。
15.RapidJSON C++的JSON開發(fā)包
Rapidjson 是一個 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 風格的 API 設計。
16. 微信開源PhxSQL
PhxSQL是一個兼容MySQL、服務高可用、數(shù)據(jù)強一致的關系型數(shù)據(jù)庫集群。PhxSQL以單Master多Slave方式部署,在集群內(nèi)超過一半機器存活的情況下,可自身實現(xiàn)自動Master切換,且保證數(shù)據(jù)一致性。
----------------------------------------------------------------------------------------------------------------
新浪:WeiBo
1.分布式緩存服務器 memcachedb
memcachedb是 一個由新浪網(wǎng)的開發(fā)人員開放出來的開源項目,給memcached分布式緩存服務器添加了Berkeley DB的持久化存儲機制和異步主輔復制機制,讓memcached具備了事務恢復能力、持久化能力和分布式復制能力,非常適合于需要超高性能讀寫速度,但是 不需要嚴格事務約束,能夠被持久化保存的應用場景,例如memcachedb被應用在新浪博客上面。
2.動態(tài)流量管理方案 Upsync
Upsync,微博開源基于Nginx容器動態(tài)流量管理方案 。Nginx 以其超高的性能與穩(wěn)定性,在業(yè)界獲得了廣泛的使用,微博的七層就大量使用了 Nginx 。結合 Nginx 的健康檢查模塊,以及動態(tài) reload 機制,可以近乎無損的服務的升級上線與擴容。這個時候擴容的頻次比較低,大多數(shù)情況下是有計劃的擴容。Upsync,開發(fā)了模塊 nginx-upsync-module,它的功能是拉取 consul 的后端 server 的列表,并更新 Nginx 的路由信息。此模塊不依賴于任何第三方模塊。consul 作為 Nginx 的 db,利用 consul 的 KV 服務,每個 Nginx work 進程獨立的去拉取各個 upstream 的配置,并更新各自的路由。
3.高性能的內(nèi)核 Socket 實現(xiàn) Fastsocket
Fastsocket 是一個高擴展性的 Socket 以及 Linux 內(nèi)核的底層網(wǎng)絡實現(xiàn)。可以在多核機器上提供極好的性能,此外使用和維護還非常簡單。目前該項目已經(jīng)在新浪的生產(chǎn)環(huán)境中使用。該項目由清華大學和新浪網(wǎng)聯(lián)合組成的 Fastos 團隊開發(fā),該團隊的使命是提升 Linux 內(nèi)核的效率。Fastsocket 目前已經(jīng)使用在新浪微博的生產(chǎn)環(huán)境上,主要用于提供負載均衡服務的 HAProxy,線上實際性能提升一倍,從2014年3月份穩(wěn)定運行至今,預計2014年底完成負載均衡全部集群的 Fastsocket 升級。Fastsocket 完全兼容 BSD Socket API,現(xiàn)有各類基于 Socket 的網(wǎng)絡應用可以直接使用 Fastsockt。 目前經(jīng)過兼容測試的常用服務軟件有:HAProxy、Nginx、Lighttpd、Redis 和 Memcached。
4.輕量級 RPC 框架 Motan
Motan 是一套高性能、易于使用的分布式遠程服務調(diào)用(RPC)框架。
功能 支持通過spring配置方式集成,無需額外編寫代碼即可為服務提供分布式調(diào)用能力。 支持集成consul、zookeeper等配置服務組件,提供集群環(huán)境的服務發(fā)現(xiàn)及治理能力。 支持動態(tài)自定義負載均衡、跨機房流量調(diào)整等高級服務調(diào)度能力。 基于高并發(fā)、高負載場景進行優(yōu)化,保障生產(chǎn)環(huán)境下RPC服務高可用。
5.TCP 性能剖析工具 Tcpdive
Tcpdive 是 TCP 性能剖析工具,主要特性:
更多 TCP 內(nèi)部性能信息
定量評估 TCP 性能改進
描述在 TCP 層的 HTTP 處理,依賴于 HTTP Apps
容易部署,使用友好
Tcpdive 已經(jīng)在新浪的生產(chǎn)環(huán)境上部署使用:
提高微博圖片服務質量
提高微博視頻服務質量
在有線和無線網(wǎng)絡中比較 TCP 性能
記錄不同應用的 TCP 流量
6.PHP框架 Yaf
Yaf是一個C語言編寫的PHP框架,Yaf 的特點:
用C語言開發(fā)的PHP框架, 相比原生的PHP, 幾乎不會帶來額外的性能開銷.
所有的框架類, 不需要編譯, 在PHP啟動的時候加載, 并常駐內(nèi)存.
更短的內(nèi)存周轉周期, 提高內(nèi)存利用率, 降低內(nèi)存占用率.
靈巧的自動加載. 支持全局和局部兩種加載規(guī)則, 方便類庫共享.
高性能的視圖引擎.
高度靈活可擴展的框架, 支持自定義視圖引擎, 支持插件, 支持自定義路由等等.
內(nèi)建多種路由, 可以兼容目前常見的各種路由協(xié)議.
強大而又高度靈活的配置文件支持. 并支持緩存配置文件, 避免復雜的配置結構帶來的性能損失.
在框架本身,對危險的操作習慣做了禁止.
更快的執(zhí)行速度, 更少的內(nèi)存占用.
----------------------------------------------------------------------------------------------------------------
小米:XiaoMi
1.分布式的發(fā)布和監(jiān)控系統(tǒng) Minos
Minos 是小米公司開發(fā)的一個分布式的發(fā)布和監(jiān)控系統(tǒng)。最初是小米開發(fā)的用來在 Hadoop 和 ZooKeeper 集群上發(fā)布和管理的工具。Minos 可輕松擴展來支持其他的系統(tǒng),目前已經(jīng)支持包括 HDFS、YARN 和 Impala 。
2.互聯(lián)網(wǎng)企業(yè)級監(jiān)控系統(tǒng) OpenFalcon
Open-Falcon 是小米運維部開源的一款互聯(lián)網(wǎng)企業(yè)級監(jiān)控系統(tǒng)解決方案.
監(jiān)控系統(tǒng)是整個運維環(huán)節(jié),乃至整個產(chǎn)品生命周期中最重要的一環(huán),事前及時預警發(fā)現(xiàn)故障,事后提供翔實的數(shù)據(jù)用于追查定位問題。監(jiān)控系統(tǒng)作為一個成熟的運維產(chǎn)品,業(yè)界有很多開源的實現(xiàn)可供選擇。當公司剛剛起步,業(yè)務規(guī)模較小,運維團隊也剛剛建立的初期,選擇一款開源的監(jiān)控系統(tǒng),是一個省時省力,效率最高的方案。之后,隨著業(yè)務規(guī)模的持續(xù)快速增長,監(jiān)控的對象也越來越多,越來越復雜,監(jiān)控系統(tǒng)的使用對象也從最初少數(shù)的幾個SRE,擴大為更多的DEVS,SRE。這時候,監(jiān)控系統(tǒng)的容量和用戶的“使用效率”成了最為突出的問題。
監(jiān)控系統(tǒng)業(yè)界有很多杰出的開源監(jiān)控系統(tǒng)。我們在早期,一直在用zabbix,不過隨著業(yè)務的快速發(fā)展,以及互聯(lián)網(wǎng)公司特有的一些需求,現(xiàn)有的開源的監(jiān)控系統(tǒng)在性能、擴展性、和用戶的使用效率方面,已經(jīng)無法支撐了。
因此,我們在過去的一年里,從互聯(lián)網(wǎng)公司的一些需求出發(fā),從各位SRE、SA、DEVS的使用經(jīng)驗和反饋出發(fā),結合業(yè)界的一些大的互聯(lián)網(wǎng)公司做監(jiān)控,用監(jiān)控的一些思考出發(fā),設計開發(fā)了小米的監(jiān)控系統(tǒng):Open-Falcon。
Highlights and features 數(shù)據(jù)采集免配置:agent自發(fā)現(xiàn)、支持Plugin、主動推送模式 容量水平擴展:生產(chǎn)環(huán)境每秒50萬次數(shù)據(jù)收集、告警、存儲、繪圖,可持續(xù)水平擴展。 告警策略自發(fā)現(xiàn):Web界面、支持策略模板、模板繼承和覆蓋、多種告警方式、支持回調(diào)動作。 告警設置人性化:支持最大告警次數(shù)、告警級別設置、告警恢復通知、告警暫停、不同時段不同閾值、支持維護周期,支持告警合并。 歷史數(shù)據(jù)高效查詢:秒級返回上百個指標一年的歷史數(shù)據(jù)。 Dashboard人性化:多維度的數(shù)據(jù)展示,用戶自定義Dashboard等功能。 架構設計高可用:整個系統(tǒng)無核心單點,易運維,易部署。
3.物聯(lián)網(wǎng)框架 IoT.js
IoT.js 旨在為物聯(lián)網(wǎng)提供一個基于 Web 技術的可相互操作的服務平臺。IoT.js 的目標是要在資源受限的設備上良好運行,例如只有幾 KB 的 RAM。所以它支持廣泛的物聯(lián)。
----------------------------------------------------------------------------------------------------------------
豆瓣 DouBan
1.分布式計算框架 DPark
DPark 是 Spark 的 Python 克隆,是一個Python實現(xiàn)的分布式計算框架,可以非常方便地實現(xiàn)大規(guī)模數(shù)據(jù)處理和迭代計算。 DPark 由豆瓣實現(xiàn),目前豆瓣內(nèi)部的絕大多數(shù)數(shù)據(jù)分析都使用DPark 完成,正日趨完善。
2.iOS/Mac 音頻播放器 DOUAudioStreamer
DOUAudioStreamer 是 iOS 和 Mac 的基于核心音頻的流媒體音頻播放器。
3.CODE 豆瓣代碼托管系統(tǒng)
Douban CODE 是豆瓣開發(fā)的一個基于 git 版本控制系統(tǒng)的協(xié)作平臺。
CODE —— C: Community O: Original D: Developer E: Eldamar
目前 CODE 僅開放了一個框架,支持:
clone & push project
create project
create user
準備環(huán)境
MySQL
Memcached
Python >= 2.7
pip >= 1.4.1
virtualenv
git
----------------------------------------------------------------------------------------------------------------
網(wǎng)易 NetEase
1.分布式TCP壓力測試工具 tcpcopy
tcpcopy是一種應用請求復制(基于tcp的packets)工具,其應用領域較廣,目前已經(jīng)應用于國內(nèi)各大互聯(lián)網(wǎng)公司。
總體說來,tcpcopy主要有如下功能:
1)分布式壓力測試工具,利用在線數(shù)據(jù),可以測試系統(tǒng)能夠承受的壓力大小(遠比ab壓力測試工具真實地多),也可以提前發(fā)現(xiàn)一些bug
2)普通上線測試,可以發(fā)現(xiàn)新系統(tǒng)是否穩(wěn)定,提前發(fā)現(xiàn)上線過程中會出現(xiàn)的諸多問題,讓開發(fā)者有信心上線
3)對比試驗,同樣請求,針對不同或不同版本程序,可以做性能對比等試驗
4)利用多種手段,構造無限在線壓力,滿足中小網(wǎng)站壓力測試要求
5)實戰(zhàn)演習(架構師必備)2.桌面應用軟件的跨平臺解決方案 heX
heX 是網(wǎng)易有道搜索部門開發(fā)的一個允許你采用前端技術(HTML,CSS,JavaScript)開發(fā)桌面應用軟件的跨平臺解決方案,基于HTML5 + node.js,類似appjs。是你開發(fā)桌面應用的一種新的選擇,意在解決傳統(tǒng)桌面應用開發(fā)中繁瑣的UI和交互開發(fā)工作,使其變的簡單而高效。特別適合重UI,重交互的桌面應用軟件。
3.Android性能測試工具 Emmagee
Emmagee是監(jiān)控指定被測應用在使用過程中占用機器的CPU、內(nèi)存、流量資源的性能測試小工具。
支持SDK:Android2.2以及以上版本
Emmagee功能介紹
1、檢測當前時間被測應用占用的CPU使用率以及總體CPU使用量
2、檢測當前時間被測應用占用的內(nèi)存量,以及占用的總體內(nèi)存百分比,剩余內(nèi)存量
3、檢測應用從啟動開始到當前時間消耗的流量數(shù)
4、測試數(shù)據(jù)寫入到CSV文件中,同時存儲在手機中
5、可以選擇開啟浮窗功能,浮窗中實時顯示被測應用占用性能數(shù)據(jù)信息
6、在浮窗中可以快速啟動或者關閉手機的wifi網(wǎng)絡
4.基于udp的請求復制工具 udpcopy
udpcopy用來解決udp應用的一個開源軟件,與tcpcopy同屬于xcopy系列,可以導入udp流量到測試系統(tǒng)中去,這樣就可以有效地對系統(tǒng)進行各種測試,比如壓力測試,冒煙測試等等。
5.實時編輯刷新的前端服務器 Puer (推薦:browser-sync
https://github.com/BrowserSync/browser-sync)簡而言之,Puer是一個可以實時編輯刷新的前端服務器。特性一覽:
提供一個當前或指定路徑的靜態(tài)服務器
所有瀏覽器的實時刷新:編輯css實時更新(update)頁面樣式,其它文件則重載(reload)頁面
提供簡單熟悉的mock請求的配置功能,并且配置也是自動更新。
可用作代理服務器,調(diào)試開發(fā)既有服務器的頁面,可與mock功能配合使用
集成了weinre,并提供二維碼地址,方便移動端的調(diào)試
可以作為connect中間件使用(前提是后端為nodejs,否則請使用代理模式)
--------------------------阿里巴巴開源的好軟件太多,請自行選擇所需,我列幾個我們用的-------------------------
阿里巴巴
1.分布式key/value存儲系統(tǒng) Tair
Tair是由淘寶網(wǎng)自主開發(fā)的Key/Value結構數(shù)據(jù)存儲系統(tǒng),在淘寶網(wǎng)有著大規(guī)模的應用。您在登錄淘寶、查看商品詳情頁面或者在淘江湖和好友“搗漿糊”的時候,都在直接或間接地和Tair交互。Tair是一個Key/Value結構數(shù)據(jù)的解決方案,它默認支持基于內(nèi)存和文件的兩種存儲方式,分別和我們通常所說的緩存和持久化存儲對應。
Tair除了普通Key/Value系統(tǒng)提供的功能,比如get、put、delete以及批量接口外,還有一些附加的實用功能,使得其有更廣的適用場景,包括:
Version支持
原子計數(shù)器
Item支持
2.TFS 分布式文件系統(tǒng)
TFS(Taobao FileSystem)是一個高可擴展、高可用、高性能、面向互聯(lián)網(wǎng)服務的分布式文件系統(tǒng),其設計目標是支持海量的非結構化數(shù)據(jù)。
目前,國內(nèi)自主研發(fā)的文件系統(tǒng)可謂鳳毛麟角。淘寶在這一領域做了有效的探索和實踐,Taobao File System(TFS)作為淘寶內(nèi)部使用的分布式文件系統(tǒng),針對海量小文件的隨機讀寫訪問性能做了特殊優(yōu)化,承載著淘寶主站所有圖片、商品描述等數(shù)據(jù)存儲。
3.消息中間件 RocketMQ
https://github.com/alibaba/RocketMQ
https://github.com/alibaba/RocketMQ-docs
4.分布式計算系統(tǒng) JStorm
Jstorm是參考storm的實時流式計算框架,在網(wǎng)絡IO、線程模型、資源調(diào)度、可用性及穩(wěn)定性上做了持續(xù)改進,已被越來越多企業(yè)使用
5.淘寶Web服務器 Tengine
Tengine是由淘寶網(wǎng)發(fā)起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網(wǎng)站的需求,添加了很多高級功能和特性。Tengine的性能和穩(wěn)定性已經(jīng)在大型的網(wǎng)站如淘寶網(wǎng),天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩(wěn)定、安全、易用的Web平臺。
以下沿引項目主頁上的特性介紹:
繼承Nginx-1.2.8的所有特性,100%兼容Nginx的配置;
動態(tài)模塊加載(DSO)支持。加入一個模塊不再需要重新編譯整個Tengine;
更多負載均衡算法支持。如會話保持,一致性hash等;
輸入過濾器機制支持。通過使用這種機制Web應用防火墻的編寫更為方便;
動態(tài)腳本語言Lua支持。擴展功能非常高效簡單;
支持管道(pipe)和syslog(本地和遠端)形式的日志以及日志抽樣;
組合多個CSS、JavaScript文件的訪問請求變成一個請求;
可以對后端的服務器進行主動健康檢查,根據(jù)服務器狀態(tài)自動上線下線;
自動根據(jù)CPU數(shù)目設置進程個數(shù)和綁定CPU親緣性;
監(jiān)控系統(tǒng)的負載和資源占用從而對系統(tǒng)進行保護;
顯示對運維人員更友好的出錯信息,便于定位出錯機器;
更強大的防攻擊(訪問速度限制)模塊;
更方便的命令行參數(shù),如列出編譯的模塊列表、支持的指令等;
可以根據(jù)訪問文件類型設置過期時間;
6.SeaJS 模塊加載框架
Sea.JS 是一個遵循 CommonJS 規(guī)范的模塊加載框架,可用來輕松愉悅地加載任意 JavaScript 模塊。SeaJS 支持的標準模塊遵循 Modules/Wrappings 規(guī)范的 define 形式,可運行于 Web 瀏覽器以及 node.JS 等環(huán)境中。
7.阿里巴巴分布式數(shù)據(jù)庫同步系統(tǒng) otter
otter 基于數(shù)據(jù)庫增量日志解析,準實時同步到本機房或異地機房的mysql/oracle數(shù)據(jù)庫. 一個分布式數(shù)據(jù)庫同步系統(tǒng)。
8.Taobao Open API 客戶端 TOP (有Net版)
TOP 是 Taobao Open API 客戶端。
APIs User taobao.user.buyer.get 查詢買家信息API taobao.user.get 獲取單個用戶信息 taobao.user.seller.get 查詢賣家用戶信息 taobao.users.get 獲取多個用戶信息 Category (Working)
taobao.itemcats.authorize.get 查詢商家被授權品牌列表和類目列表 taobao.itemcats.get 獲取后臺供賣家發(fā)布商品的標準商品類目 taobao.itemcats.increment.get 增量獲取后臺類目數(shù)據(jù) taobao.itemprops.get 獲取標準商品類目屬性 taobao.itempropvalues.get 獲取標準類目屬性值 taobao.topats.itemcats.get 全量獲取后臺類目數(shù)據(jù) Shop taobao.shop.get (白名單用戶才能調(diào)用)9.模擬數(shù)據(jù)生成器 Mock.js
Mock.js 是一款模擬數(shù)據(jù)生成器,旨在幫助前端攻城師獨立于后端進行開發(fā),幫助編寫單元測試。提供了以下模擬功能:
根據(jù)數(shù)據(jù)模板生成模擬數(shù)據(jù)
模擬 Ajax 請求,生成并返回模擬數(shù)據(jù)
基于 HTML 模板生成模擬數(shù)據(jù)
10.服務框架 Dubbo
Dubbo 是阿里巴巴公司開源的一個高性能優(yōu)秀的服務框架,使得應用可通過高性能的 RPC 實現(xiàn)服務的輸出和輸入功能,可以和 Spring框架無縫集成。
主要核心部件:
Remoting: 網(wǎng)絡通信框架,實現(xiàn)了 sync-over-async 和 request-response 消息機制.
RPC: 一個遠程過程調(diào)用的抽象,支持負載均衡、容災和集群功能
Registry: 服務目錄框架用于服務的注冊和服務事件發(fā)布和訂閱
11.接口文檔管理工具 RAP
RAP通過GUI工具幫助WEB工程師更高效的管理接口文檔,同時通過分析接口結構自動生成Mock數(shù)據(jù)、校驗真實接口的正確性,使接口文檔成為開發(fā)流程中的強依賴。有了結構化的API數(shù)據(jù),RAP可以做的更多,而我們可以避免更多重復勞動。
https://github.com/thx/RAP
----------------------------------------------------------------------------------------------------------------
其他項目:
1.去哪兒:
MySQL自動化運維工具 Inception
MySQL語句的審核,在業(yè)界都已經(jīng)基本被認同了,實際上也是對MySQL語句寫法的統(tǒng)一化,標準化,而之前的人工審核,針對標準這個問題其實是很 吃力的,標準越多,DBA越累,開發(fā)也越累。 那么在這個都追求自動化運維的時代,審核也必須要跟上步伐,因此Inception誕生了。而Inception可以做的工作遠不止是一個自動化審核工 具,同時還具備執(zhí)行,生成對影響數(shù)據(jù)的回滾語句(類似閃回的功能),這樣一條龍服務的工具,將會給DBA的工作帶來翻天覆地的變化,DBA從此就從繁重的 審核、登上去執(zhí)行,出錯了很難回滾(如果提前沒有備份的話)的被動局面解放了出來,突然發(fā)現(xiàn),做DBA原來可以這么輕松,工作可以不飽和了,那就有更多的 自由時間學習、進一步向自動化運維平臺的實現(xiàn)等更智能化的方向去發(fā)展,是具有里程碑意義的。
2.大眾點評:
實時應用監(jiān)控平臺 CAT
CAT 由大眾點評開發(fā)的,基于 Java 的實時應用監(jiān)控平臺,包括實時應用監(jiān)控,業(yè)務監(jiān)控。
CAT 支持的監(jiān)控消息類型包括:
Transaction 適合記錄跨越系統(tǒng)邊界的程序訪問行為,比如遠程調(diào)用,數(shù)據(jù)庫調(diào)用,也適合執(zhí)行時間較長的業(yè)務邏輯監(jiān)控,Transaction用來記錄一段代碼的執(zhí)行時間和次數(shù)。
Event 用來記錄一件事發(fā)生的次數(shù),比如記錄系統(tǒng)異常,它和transaction相比缺少了時間的統(tǒng)計,開銷比transaction要小。
Heartbeat 表示程序內(nèi)定期產(chǎn)生的統(tǒng)計信息, 如CPU%, MEM%, 連接池狀態(tài), 系統(tǒng)負載等。
Metric 用于記錄業(yè)務指標、指標可能包含對一個指標記錄次數(shù)、記錄平均值、記錄總和,業(yè)務指標最低統(tǒng)計粒度為1分鐘。
Trace 用于記錄基本的trace信息,類似于log4j的info信息,這些信息僅用于查看一些相關信息
消息樹
CAT監(jiān)控系統(tǒng)將每次URL、Service的請求內(nèi)部執(zhí)行情況都封裝為一個完整的消息樹、消息樹可能包括Transaction、Event、Heartbeat、Metric和Trace信息。
3.搜狐:
Redis云管理平臺 CacheCloud
CacheCloud提供一個Redis云管理平臺:實現(xiàn)多種類型(Redis Standalone、Redis Sentinel、Redis Cluster)自動部署、解決Redis實例碎片化現(xiàn)象、提供完善統(tǒng)計、監(jiān)控、運維功能、減少開發(fā)人員的運維成本和誤操作,提高機器的利用率,提供靈活的伸縮性,提供方便的接入客戶端。
基于 MySQL 的數(shù)據(jù)庫中間件 SOHU-DBProxy
SOHU-DBProxy 是由 搜狐 數(shù)據(jù)庫團隊開發(fā)維護的一個基于MySQL協(xié)議的數(shù)據(jù)中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.3版本的基礎上, 修改了大量bug,添加了很多功能特性。現(xiàn)在已經(jīng)在sohu的多個業(yè)務線上使用
DBProxy 主要功能:
1 即使在同一個連接(只要不在同一個事務中)也能連接復用
2 負載均衡提高讀性能,支持動態(tài)擴展
3 動態(tài)添加的SQL審核和過濾。能夠統(tǒng)計的SQL長時間運行影響性能,并且阻止其運行
4 用戶連接限制
5 自動摘除宕機的DB
6 讀寫分離(當前版本沒有,代碼和測試已經(jīng)完成,沒有合并到當前版本)