前言
今天給大家分享的是,騰訊T8高級架構(gòu)師教大家學(xué)習(xí)的中小研發(fā)團隊架構(gòu)實踐PDF,被稱之“成為高級架構(gòu)師捷徑”的實用技術(shù),希望大家能夠喜歡!!!
互聯(lián)技術(shù)經(jīng)過幾十年的發(fā)展,已經(jīng)從“鐵器時代”進入“機器時代”。得益于開源運動的蓬勃發(fā)展,以及技術(shù)的日益開放,原本只有大公司才能擁有的技術(shù)和系統(tǒng)已經(jīng)是“舊時王謝堂前燕,飛入尋常百姓家”了,中小團隊甚至初創(chuàng)公司都能夠基于這些技術(shù)和系統(tǒng)快速完成系統(tǒng)的開發(fā),使團隊能夠更加聚焦于業(yè)務(wù)的發(fā)展。
但這并不意味著簡單采用“拿來主義”就萬事大吉,中小團隊在構(gòu)建系統(tǒng)架構(gòu)的時候往往面臨幾個核心問題 首先 類似的技術(shù)和方案太多 具體該用哪個并不是一目了然的 其次,即使選定了具體技術(shù)或方案,如果沒有經(jīng)驗積累,這些技術(shù)和方案的最佳實踐和注意事項(俗稱“坑”)是很難預(yù)先知道的;最后,構(gòu)建一個完整的大網(wǎng)站需要的技術(shù)投很多,如果沒有系統(tǒng)的指導(dǎo),則很可能是 摸著石頭過、河”,進入“踩坑填坑的循環(huán)。
本文是多年技術(shù)、經(jīng)驗、思考和感悟的一個集大成的總結(jié),涵蓋了架構(gòu)設(shè)計技術(shù)校的方方面面,很好地解答了上述三個問題,具有非常強的指導(dǎo)意義,形象一點來說就是 照著做,你也能設(shè)計和 BAT 一樣好的架構(gòu)!!

主要內(nèi)容簡介
本文結(jié)合作者近幾年的工作經(jīng)驗,總結(jié)了一套可直接落地、基于開源、成本低、可快速搭建的中小研發(fā)團隊架構(gòu)實踐方法。
全文共5篇22章,開篇是本文的導(dǎo)讀;
架構(gòu)篇是設(shè)計思想的提升,包括企業(yè)總體架構(gòu)、應(yīng)用架構(gòu)設(shè)計、統(tǒng)一應(yīng)用分層等;
框架篇主講中間件和工具的使用,包括消息隊列、緩存、Job、集中式日志、應(yīng)用監(jiān)控和微服務(wù)等;
公共應(yīng)用篇是技術(shù)與業(yè)務(wù)的結(jié)合,包括單點登錄和企業(yè)支付網(wǎng)關(guān):進階篇是從架構(gòu)到管理,包括技改案例、技術(shù)與業(yè)務(wù)的匹配與融合等。
從架構(gòu)、框架、公共應(yīng)用,到案例實戰(zhàn)和技術(shù)管理,本文將大公司的工程理念壓縮應(yīng)用到中小研發(fā)團隊,使小團隊也能構(gòu)建大網(wǎng)站。
2企業(yè)總體架構(gòu)
企業(yè)總體架構(gòu)是什么,有什么用,具體怎么做呢?以筆者曾任職的公司為案例,一起來探討這個問題 家公司當(dāng)時有 200 個研發(fā)人員和 200 多臺服務(wù)器,筆者剛進這家公司時,他們的系統(tǒng),總是出現(xiàn)各種問題 例如,日常發(fā)布系統(tǒng)時或訪問量稍微過大時系統(tǒng)就會出現(xiàn)很多故障,而且找不到故障發(fā)生的根本原因 筆者進公司后的主 務(wù)就是對這個系統(tǒng)進行升級改造,花了一個半月的時間寫了一份企業(yè)總體架構(gòu)設(shè)計文檔。
3應(yīng)用架構(gòu)設(shè)計
有幾個問題要與讀者 起探討 你做架構(gòu)設(shè)計了嗎?你認為要不要做架構(gòu)設(shè)計?你的公司有沒有做架構(gòu)設(shè)計?在筆者得到的答案中 大部分人認為要做架構(gòu)設(shè)計,但自己卻很少做,自己經(jīng)歷的公司也很少做架構(gòu)設(shè)計 這里是矛盾的,難道大部分人和公司都犯錯了嗎? 應(yīng)該不是這樣!
4統(tǒng)一應(yīng)用分層:
應(yīng)用分層這件事情看起來很簡單,但每個程序員都有自己的 套方法,哪怕是初學(xué)者。如何讓一家公司的幾百 應(yīng)用采用統(tǒng)一的分層結(jié)構(gòu),并得到大部分程序員的認同呢?
5生產(chǎn)環(huán)境診斷工具WinDbg
生產(chǎn)環(huán)境偶爾會出現(xiàn)- -些異常問題,WinDbg 或GDB是解決此類問題的利器。調(diào)試工具WinDbg如同醫(yī)生的聽診器,是系統(tǒng)“生病”時進行診斷的逆向分析工具。Dump文件類似于飛機的黑匣子,記錄生產(chǎn)環(huán)境程序運行的狀態(tài)。本章主要介紹調(diào)試工具WinDbg和抓包工具ProcDump的使用,并分享一個真實的案例。多年前不知誰寫的代碼,導(dǎo)致每一兩個月偶爾出現(xiàn)CPU飆高的現(xiàn)象。我們先使用ProcDump在生產(chǎn)環(huán)境中抓取異常進程的Dump文件,然后在不了解代碼的情況下通過WinDbg命令進行分析,最終定位有問題的那行代碼。


6 RabbitMQ快速入門及應(yīng)用
使用過分布式中間件的人都知道,中間件使用起來并不復(fù)雜,常用的客戶端API就那么幾個,比我們?nèi)粘>帉懗绦驎r用到的API要少得多。但是分布式中間件在中小研發(fā)團隊中使用得并不多,為什么會這樣呢?原因是中間件的職責(zé)相對單-一, 客戶端的使用雖然簡單,但整個環(huán)境搭起來卻不容易。所以對于中間件的使用,我們重點放在解決門檻問題上,把服務(wù)端環(huán)境搭好(生產(chǎn)環(huán)境可直接使用云或運維解決),把中間件的基本職責(zé)和功能介紹好,把客戶端Demo寫好,讓程序員“抬抬腳”,在調(diào)試代碼中即可輕松入門。根據(jù)我們以往的經(jīng)驗,初次接觸也可以自主快速學(xué)習(xí)。文字描述和Demo以實用為主,能用代碼說明的就不用文字。以下是消息隊列RabbitMQ的快速入門及應(yīng)用。
7 redis快速入門及應(yīng)用
Redis的使用難嗎?不難。Redis 用好容易嗎?不容易。Redis 的使用雖然不難,但與業(yè)務(wù)結(jié)合的應(yīng)用場景特別多、特別密切,用好并不容易。我們希望通過簡單的文字介紹及Demo,讀者即可輕松、快速入門并學(xué)會應(yīng)用。
8任務(wù)調(diào)度Job
Job類似于數(shù)據(jù)庫中的作業(yè),多用于實現(xiàn)定時執(zhí)行任務(wù)。適用場景主要包括定時輪詢數(shù)據(jù)庫同步、定時處理數(shù)據(jù)和定時郵件通知等。我們的Job分為操作系統(tǒng)級別定時任務(wù)WinJob和HttpJob ,其中, WinJob使用開源的任務(wù)調(diào)度框架Quartz.NET+ZooKeeper實現(xiàn),HttpJob的服務(wù)端是自主開發(fā)實現(xiàn)的,可以直接定時調(diào)用計劃任務(wù)(如微服務(wù))。
9應(yīng)用監(jiān)控系統(tǒng)Metrics
應(yīng)用監(jiān)控系統(tǒng)Metrics 由Metrics.NET+InfluxDB+Grafana 組合而成,通過客戶端Metrics.NET在業(yè)務(wù)代碼中埋點, Metrics.NET會把收集的數(shù)據(jù)存儲在InfluxDB數(shù)據(jù)庫中,然后通過Grafana來展示監(jiān)控數(shù)據(jù)。其中, InfluxDB服務(wù)端部署的版本號是1.3.1, Grafana部署的版本號是4.0.1。
10集中式日志ELK
日志可分為系統(tǒng)日志、應(yīng)用日志和業(yè)務(wù)日志,系統(tǒng)日志給運維人員使用,應(yīng)用日志給研發(fā)人員使用,業(yè)務(wù)日志給業(yè)務(wù)操作人員使用。這里主要講解應(yīng)用日志,通過應(yīng)用日志來了解應(yīng)用的信息和狀態(tài),以及分析應(yīng)用錯誤發(fā)生的原因等。隨著系統(tǒng)的日益復(fù)雜,大數(shù)據(jù)時代的來臨,需要幾十甚至上百臺的服務(wù)器是常有的事,因此迫切需要有一-套針對日志且能夠集中式管理的產(chǎn)品。ELK就實現(xiàn)了集中式日志管理,統(tǒng)一-涵蓋了分布式日志收集、檢索、統(tǒng)計、分析,以及對日志信息的Web管理等集中化管控。
11微服務(wù)架構(gòu)MSA
微服務(wù)架構(gòu)MSA是Microservice Architecture的簡稱,它是一種架構(gòu)模式,它提倡將單一應(yīng)用程序劃分成一-組小的服務(wù),服務(wù)之間互相通信、互相配合,為用戶提供最終價值。
12搜索服務(wù)Solr
Apache Solr 是-一個開源的搜索服務(wù)器,Solr 使用JAVA 語言開發(fā),主要基于HTTP和Apache Lucene實現(xiàn)。Apache Lucene是- -個高效的、基于Java的全文檢索庫。另外一個基于Lucene的搜索服務(wù)器是Elasticsearch,由于項目歷史原因,以及工程師有Solr 的使用經(jīng)驗,我們選擇了Solr 而不是Elasticsearch。 如果是一個全新的項目,則Elasticsearch也是當(dāng)下不錯的選擇。
13分布式協(xié)調(diào)器ZooKeeper
Apache ZooKeeper是由Apache Hadoop 的子項目發(fā)展而來的,于2010年11月正式成為Apache的頂級項目。
ZooKeeper是一個開放源代碼的分布式協(xié)調(diào)服務(wù)。它具有高性能、高可用的特點,同時具有嚴格的順序訪問控制能力(主要是寫操作的嚴格順序性)。基于對ZAB協(xié)議.( ZooKeeper Atomic Broadcast, ZooKeeper 原子消息廣播協(xié)議)的實現(xiàn),它能夠很好地保證分布式環(huán)境中數(shù)據(jù)的一致性。也正是基于這樣的特性,使得ZooKeeper成為解決分布式數(shù)據(jù)一致性問題的利器。
14小工具合集
當(dāng)每月發(fā)布次數(shù)變得越來越多時,如超過500 次,則發(fā)布工作人員的工作量會翻倍增長,此時由人工發(fā)布操作失誤引起的風(fēng)險會變得越來越大。為了提高項目的發(fā)布效率,也為了降低由人工操作失誤帶來的風(fēng)險,需要引進持續(xù)集成工具。
15 一鍵發(fā)布和測試之持續(xù)集成工具Jenkins
Jenkins是-一個用Java語言編寫的開源的持續(xù)集成工具,最開始被稱為Hudson,Jenkins在持續(xù)集成領(lǐng)域市場份額中居于主導(dǎo)地位,被各種規(guī)模的團隊用于用各種語言實現(xiàn)的各類項目中。例如,C#、Java、Ruby、Groovy、Grails、 php等。



16單點登錄
單點登錄的英文全稱是Single Sign On,簡稱SSO。即用戶只需要登錄一次,就可以在個,人權(quán)限范圍內(nèi),訪問所有相互信任的應(yīng)用功能模塊,不管整個應(yīng)用群的內(nèi)部有多么復(fù)雜,對用戶而言,都是一個統(tǒng)-一的整體。用戶訪問Web系統(tǒng)的整個應(yīng)用群與訪問單個系統(tǒng)一樣,登錄和注銷分別只要一次就夠了。
17企業(yè)支付網(wǎng)關(guān)
企業(yè)支付網(wǎng)關(guān)又叫聚合支付,由統(tǒng)-支付服務(wù)、 統(tǒng)一支付通知和統(tǒng)一支付后臺三部分組成,本章我們主要介紹前兩部分。將企業(yè)支付網(wǎng)關(guān)獨立出來非常有必要,它是企業(yè)未來金融事業(yè)部的基礎(chǔ) 當(dāng)前價值也很大。

18技改之路:從單體應(yīng)用到微服務(wù)
技改是技術(shù)改造的簡稱,是技術(shù)的蛻變。本章所談的技改指的是在公司技術(shù)發(fā)展的某個瓶頸階段,按原有的開發(fā)和組織方式已經(jīng)無法“玩下去”,這時公司希望引進架構(gòu)師或技術(shù)牛,人來破解當(dāng)前困局。技改對于公司和技術(shù)人員而言都非常難得,參與者多,主導(dǎo)者少。筆者有幸前后主導(dǎo)過3次OTA系統(tǒng)的技改,規(guī)模有大有小,每次技改環(huán)境和問題雖不一樣,但還是有套路可循的。技改之路少講技術(shù)多講“路”,我們不過多地關(guān)注技術(shù)細節(jié)和中間件的實現(xiàn),而重點講述技改的過程和對技改的思考。
19機票垂直搜索引擎之性能優(yōu)化
20.上云紀要
21技術(shù)與業(yè)務(wù)的匹配與融合
技改是技術(shù)改造的簡稱,是技術(shù)的蛻變。本章所談的技改指的是在公司技術(shù)發(fā)展的某個瓶頸階段,按原有的開發(fā)和組織方式已經(jīng)無法“玩下去”,這時公司希望引進架構(gòu)師或技術(shù)牛,人來破解當(dāng)前困局。技改對于公司和技術(shù)人員而言都非常難得,參與者多,主導(dǎo)者少。筆者有幸前后主導(dǎo)過3次OTA系統(tǒng)的技改,規(guī)模有大有小,每次技改環(huán)境和問題雖不一樣,但還是有套路可循的。技改之路少講技術(shù)多講“路”,我們不過多地關(guān)注技術(shù)細節(jié)和中間件的實現(xiàn),而重點講述技改的過程和對技改的思考。
22研發(fā)團隊文化是怎么”長”出來
從死氣沉沉到充滿激情活力,從固步自封到好學(xué)分享,這是一個有關(guān)團隊文化的主題。寺廟文化傳承千百年,舌尖上的美食流傳至今,它們是如何形成和生長的?是參考大公司或從管理書籍.上挑選幾個詞語,還是腳踏實地,自己一步一步埋頭干?本章與你一起探討!


因為內(nèi)容實在是太多了,小編在此就不做過多的介紹了,需要本技術(shù)文檔的朋友,可以轉(zhuǎn)發(fā)關(guān)注小編,私信小編“技術(shù)”來獲取!!!
專家力薦學(xué)習(xí)
本書從實戰(zhàn)出發(fā),通過-一個個實例闡明架構(gòu)中的種種方法論如何落地,如何在架構(gòu)落地的過程中保持技術(shù)的前瞻性和柔性,如何有效地避免過度設(shè)計。作者以CTO的視角講述了帶領(lǐng)技術(shù)團隊,從業(yè)務(wù)和技術(shù)痛點入手,快速搭建小而美的整體架構(gòu)的過程。本書背后的分析思想和設(shè)計思路,對于快速發(fā)展的中小團隊是非常值得借鑒的經(jīng)驗。一百度 資深架構(gòu)師杜亞明
代碼混亂、結(jié)構(gòu)不清晰、開發(fā)效率低、發(fā)布周期長、發(fā)布出錯率高、排查問題困難困擾著很多互聯(lián)網(wǎng)研發(fā)團隊,也曾是我和作者一起需要面對的問題。 本書第18章技改之路,我是親歷者和見證者,整個過程我與作者一起拼搏奮斗,至今難忘,受益匪淺!-洋碼頭資深架構(gòu)師 戈建華
本書是作者多年技術(shù)、經(jīng)驗、思考和感悟的一-個集大成的總結(jié),涵蓋了架構(gòu)設(shè)計技術(shù)棧的方方面面,具有非常強的指導(dǎo)意義,形象一點來說就是:照著做,你也能設(shè)計和BAT一樣好的架構(gòu)!
一《從零開始學(xué)架構(gòu)》作者,資深技術(shù)專家李運華
本書從框架、架構(gòu)、公共應(yīng)用和性能調(diào)優(yōu),到康威定律、技術(shù)與業(yè)務(wù)的匹配與融合等,從生產(chǎn)力到生產(chǎn)關(guān)系,從架構(gòu)師到技術(shù)管理,均有涉及,這是一個架構(gòu)師的進階之路,也是作者的心路歷程,值得各位讀者參考!-餓了么CTO張雪峰
本書內(nèi)容豐富,涵蓋業(yè)務(wù)分析、領(lǐng)域建模、分布式系統(tǒng)架構(gòu)、中間件和工具、微服務(wù)架構(gòu)、技術(shù)管理及文化建設(shè)等主題。本書是作者近幾年在一線互聯(lián)網(wǎng)公司生產(chǎn)實踐的基礎(chǔ)上,加上自己的系統(tǒng)化和體系化思考之后,沉淀下來的干貨。對于-線架構(gòu)師深入理解互聯(lián)網(wǎng)分布式系統(tǒng)的架構(gòu)設(shè)計并指導(dǎo)生產(chǎn)實踐,本書具有非常大的參考價值。---微服務(wù)技術(shù)專家,拍拍貸基礎(chǔ)框架研發(fā)總監(jiān)楊波