快上車!“正經”文章告訴你如何“構建與使用快速響應的分散式中介軟體平臺實踐”
文:徐海峰 徐海峰
首先,請相信我:這是一篇技術文章,正不正經,那就只有看完才能知道了!
前幾天,一則“前沿數控因使用騰訊雲而資料全部丟失”的新聞震驚了整個IT圈。當我看到這新聞的時候,突然的想法是這樣的:
不過在我們這個業務為王的特殊環境下確實也不是大新聞。過幾天,換個話題就都過去了。但是作為一個技術人,必須要振臂高呼一句:基礎建設要自主。
所以這次借了 SACC2018 的東風,推出了關於基礎建設的深度培訓課程: 《構建與使用快速響應的分散式中介軟體平臺實踐》 。整個課程從頭至尾講述了怎麼樣快速並且低成本的構建一個屬於自己的中介軟體平臺,從方案的整體架構設計開始,到開發的難點分析,再到真實環境的具體實施過程,以及使用一段時候後對於初版的改進升級等,一應俱全,應有盡有。
整個計劃主要分為三個部分:
▍1. 以業務開發為核心驅動的技術棧中介軟體設計與實現。
這部分主要以Java語言開發為主,主要講述以Java語言為主開發的技術棧Albianj與任務排程系統Scher與Jinwei系統。
Albianj是一個類似於spring+hbm的高效能擴充套件版。類比spring與hbm,IOC、DI響應的做了簡單化處理,但是增強了對於資料庫分庫分表的資料路由功能、分散式事務的控制功能等一序列面對海量資料與網際網路快速開發要求的實現。
整個albianj不僅僅只有spring與hbm的功能,它更是我們業務開發的核心,整個架構圖如下圖:
Scher與Jinwei是我們任務排程的兩個不同型別的區分。他們分別完成定時和實時任務的排程。
它們基於Albianj實現,有著相同的物理與邏輯架構,並且有著90%重疊的功能,但是我們卻在設計、開發與部署的時候進行了強制性的隔離,這裡的原因痛苦而無奈,想知道為什麼嗎?來,我告訴你。
▍ 2. 高效能開發為主的中介軟體設計與實現。
這部分主要由linux下的C開發為主,主要講述我們自我實現的分散式id生成器Chaos,分散式檔案系統DFS、分散式快取系統lest與分散式協調器lax,通訊協議hms與使用JNI實現的http服務Aru。
分散式id生成器Chaos主要為我們的業務生成全站唯一的、視覺化、區間內單調遞增的id,用於取代老舊的MySQL自增id或者是uuid作為主鍵的方案。
Chaos生成的id和albianj的資料路由進行緊密的配合,可以使開發者在無感知、無侵入的情況下快速而有效的開發出可以抵擋億級PV的分散式業務系統。
DFS就不用多說了,這是一個網際網路公司走向中介軟體自主的必經之路,也是標誌之一。因為我們業務的特殊性,要求對於DFS儲存的內容可進行頻繁的更改,所以市面上其實並無相應的成熟DFS可用,故我們別無選擇。我們在DFS上花了很大的時間進行設計和優化,使其滿足我們每天億級新增/更改的需求。
有了DFS的內容儲存,我們又對其增加了一個出口:這就是我們的Arch系統。說起Arch系統,這僅僅是出於我們自己的看不慣和“2”的精神。因為覺得netty太過複雜,所以就動了自己寫一個精簡NIO的惻隱之心,所以就在“好玩”的驅使下,我們使用JNI自己封裝了一個C版本的NIO,然後因為想試試它的完備性、健壯性和效能,思來想去http最簡單,那就搞一個小心的http伺服器吧。所以arch由此誕生。目前arch執行在我們的圖片、音訊等專案中,為漫畫、精排、封面提供每天億級訪問的服務。
對於圖片、音訊等當然是主要輸出就可以了。但是對於內容就沒有那麼簡單了,所以我們在DFS上又增加了一套基於大資料和AI的關鍵字鑑別與分析系統,這樣將DFS完整的平臺化。
分散式快取系統lest和分散式協調器lax則不同,他們的出現來自於我們對於快取管理的無奈和懊惱,還有對於zookeeper的失望。以前我們的快取使用了26臺的redis來進行管理,機器數量增加的同時也增加了成本,並且redis客戶端的分散式模式時間長了真的很難管理。所以我們開發了lest,一個不需要大記憶體而基於ssd的快取系統。
為了給lest增加嚴格的版本控制,實驗了zookeeper,不管是部署還是效能,都不滿足我們的需求和胃口,再者zk的功能太多了,我們又及其討厭開源軟體的“複雜稅”,所以在迫於無奈的情況下,我們只能自己開發了分散式協調器lax。從而將lest和lax組合成一個完整的系統。
又因為lest和lax的儲存與通訊的需要,在研究了google的pb等所謂的通訊協議後,還是不太滿意這些開源的通訊協議不要中間協議檔案與編譯的步驟,所以在此基礎上我們構建了hms通訊與存續協議。
並且是hms不僅僅滿足儲存與通訊協議的需求,我們更是將hms的物件作為一個物件樹,還整合了簡單的查詢方法,可以提供簡單的大於,小於,等於等等查詢。
▍ 3. 最後一部分
我們將討論一點哲學問題:人、團隊、架構、業務程式碼之間的4角關係。
說了那麼多,其實我就是想表達一個觀點:完全自主化中介軟體並不難。我們一個團隊花了沒多少時間就開發了那麼多的東西,雖然中間也碰到了各種的問題,好在最後都順利的解決了。
還是印證了那句話:
每天的業務開發是不是讓你已經厭倦了整天加班的痛苦?
所以,你準備好了嗎?中介軟體開發這門藝術幾乎就要失傳了,你還不趕快來參加我們?
什麼?你說完整技術大綱?往下看就是了
識別二維碼 檢視完整課程大綱
最後,請相信我,這是一篇技術文章!
細心的朋友們已經又在問了,參會的渠道在哪裡呢?往這兒看 點選http://sacc.it168.com/goupiao.html就可以直達優惠購票通道了,對了, SACC 2 018 大會門票 8.8 折優惠限時優惠中! 還猶豫什麼呢?識別下方二維碼就是了。
長按識別上方二維碼 立即報名
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31509949/viewspace-2212317/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 第九章 webase 分散式中介軟體平臺快速部署Web分散式
- 如何使用Zebee構建高度可擴充套件的分散式工作流中介軟體?套件分散式
- 【vue】用圖告訴你響應式原理Vue
- 自媒體有哪些平臺?今天告訴你五個好做的平臺,建議收藏
- 構建dubbo分散式平臺-maven構建根專案分散式Maven
- 分散式資料庫中介軟體 MyCat | 分庫分表實踐分散式資料庫
- 構建dubbo分散式平臺-dubbo簡介分散式
- 分散式訊息中介軟體分散式
- [分散式][訊息中介軟體]訊息中介軟體如何實現每秒幾十萬的高併發寫入分散式
- 使用 Proxy 構建響應式系統
- MyCat的坑如何在分散式中介軟體DBLE上改善分散式
- Tailwind CSS 實戰指南:快速構建響應式網頁設計AICSS網頁
- 中介軟體---分散式跟蹤---Pinpoint分散式
- 響應式架構與 RxJava 在有贊零售的實踐架構RxJava
- 搭建JEESZ分散式架構--訊息中介軟體簡介分散式架構
- 民生銀行資料中臺體系的構建與實踐
- 如何實施標準作業?這篇文章告訴你
- 構件與中介軟體
- 分散式監控平臺Centreon實踐真傳分散式
- 快速構建企業級應用的開發平臺
- 企業使用CRM系統的前景如何?這篇文章告訴你
- 為什麼你要使用這麼強大的分散式訊息中介軟體——kafka分散式Kafka
- 告訴你製作直播平臺都需要什麼硬體和軟體的乾貨文
- [平臺建設] HBase平臺建設實踐
- 淺談分散式 ID 的實踐與應用分散式
- 本地使用 Docker Compose 與 Nestjs 快速構建基於 Dapr 的 Redis 釋出/訂閱分散式應用DockerJSRedis分散式
- Active Network實踐:構建Kubernetes平臺的最佳工具
- 平臺安全之中介軟體安全
- 大資料告訴你買車的正確姿勢!大資料
- 使用Electron構建跨平臺的桌面應用
- 使用 MacBook Pro 時如何防止過熱,這篇文章告訴你Mac
- 如何看懂DOE分析報告?這篇文章告訴你
- C#Winform快速開發平臺與軟體配置平臺C#ORM
- 畫像標籤體系構建與應用實踐
- 前端響應式佈局原理與實踐前端
- 車路協同雲控平臺建設實踐
- 如何構建分散式系統的知識體系分散式
- 分散式系統訊息中介軟體——RabbitMQ的使用進階篇分散式MQ