這是什么?
這是一部以“如何構建一套可靠的分布式大型軟件系統”為敘事主線的開源文檔,是一幅幫助開發人員整理現代軟件架構各條分支中繁多知識點的技能地圖。文章《什么是“鳳凰架構”》詳細闡述了這部文檔的主旨、目標與名字的來由,文章《如何開始》簡述了文檔每章討論的主要話題與內容詳略分布,供閱前參考。
筆者出于以下目的,撰寫這部文檔:
- 筆者從事大型企業級軟件的架構研發工作,借此機會,系統性地整理自己的知識,查缺補漏,將它們都融入既有的知識框架之中。
- 筆者正式出版的前七本計算機技術書籍都不是與自己本職工作直接相關,能按照自己的興趣去寫作,還能獲得不菲的經濟報酬是一件很快樂的事情;而撰寫一部工作中能直接使用的、能隨時更新、與人交流的在線文檔,同樣也是一件很實用、很有價值的事情。
- 筆者認為技術人員成長有一“捷徑”,學技術不僅要去看、去讀、去想、去用,更要去說、去寫。將自己“認為掌握了的”知識敘述出來,能夠說得清晰有條理,講得理直氣壯;能夠讓他人聽得明白,釋去心中疑惑;能夠把自己的觀點交予別人的審視,乃至質疑,在此過程之中,會挖掘出很多潛藏在“已知”背后的“未知”。未有知而不行者,知而不行,只是未知。
除文檔部分外,筆者同時還建立了若干配套的代碼工程,這是針對不同架構、技術方案(如單體架構、微服務、服務網格、無服務架構,等等)的演示程序。它們既是文檔中所述知識的實踐示例,亦可作為實際項目新創建時的可參考引用的基礎代碼。
如何使用?
根據“使用”的所指含義的不同,筆者列舉以下幾種情況:
在線閱讀:本文檔在線閱讀地址為:https://icyfenix.cn。
網站由 GitHub Pages 提供網站存儲空間;由 Travis-CI 提供的持續集成服務實時把 Git 倉庫的 Markdown 文檔編譯同步至網站,并推送至 CDN,提供國內的訪問加速。離線閱讀:
部署離線站點:文檔基于 Vuepress 構建,如你希望在企業內部搭建文檔站點,請使用如下命令:
# 克隆獲取源碼 $ git clone https://github.com/fenixsoft/awesome-fenix.git && cd awesome-fenix # 安裝工程依賴 $ npm install # 運行網站,地址默認為http://localhost:8080 $ npm run dev
生成PDF文件:工程源碼中已帶有基于 vuepress-plugin-export 改造(針對本文檔定制過)的PDF導出插件,如你希望生成全文 PDF 文件,請在已進行上一步工程克隆和依賴安裝的前提下使用如下命令:
# 編譯PDF,結果將輸出在網站根目錄 $ npm run export
PDF 全文編譯時間較長,在筆者機器上約耗時25分鐘,在 Travis-CI 上約需要約8分鐘,可以從在這里下載更新時由 Travis-CI 自動編譯的PDF。PDF 中文字體采用阿里巴巴普惠字體渲染,此字體被允許免費使用與傳播。
二次演繹、傳播和發行:本文檔中所有的內容,如引用其他資料,均在文檔中明確列出資料來源,一切權利歸屬原作者。除此以外的所有內容,包括但不限于文字、圖片、表格,等等,均屬筆者原創,這些原創內容,筆者聲明以知識共享署名 4.0發行,只要遵循許可協議條款中署名、非商業性使用、相同方式共享的條件,你可以在任何地方、以任何形式、向任何人使用、修改、演繹、傳播本文檔中任何部分的內容。詳細可見本文檔的“協議”一節。
運行技術演示工程:筆者專門在探索起步中的“技術演示工程”詳細介紹了配套工程的使用方法,如果你對構建運行環境也有所疑問,在附錄中的“環境依賴”部分也已包括了詳細的環境搭建步驟。此外,這些配套工程也均有使用 Travis-CI 提供的持續集成服務,自動輸出到 Docker 鏡像庫,如果你只關心運行效果,或只想了解部分運維方面的知識,可以直接運行 Docker 鏡像而無需關心代碼部分。你可以通過下面所列的地址,查看到本文檔所有工程代碼和在線演示的地址:
- 文檔工程:
- 鳳凰架構:https://icyfenix.cn
- Vuepress 支持的文檔工程:https://github.com/fenixsoft/awesome-fenix
- 前端工程:
- Mock.js 支持的純前端演示:https://bookstore.icyfenix.cn
- Vue.js 2實現前端工程:https://github.com/fenixsoft/fenix-bookstore-frontend
- 后端工程:
- Spring Boot 實現單體架構:https://github.com/fenixsoft/monolithic_arch_springboot
- Spring Cloud 實現微服務架構:https://github.com/fenixsoft/microservice_arch_springcloud
- Kubernetes 為基礎設施的微服務架構:https://github.com/fenixsoft/microservice_arch_kubernetes
- Istio 為基礎設施的服務網格架構:https://github.com/fenixsoft/servicemesh_arch_istio
- AWS Lambda 為基礎的無服務架構:https://github.com/fenixsoft/serverless_arch_awslambda
- 文檔工程:
協議
本作品代碼部分采用 Apache 2.0協議進行許可。遵循許可的前提下,你可以自由地對代碼進行修改,再發布,可以將代碼用作商業用途。但要求你:
- 署名:在原有代碼和衍生代碼中,保留原作者署名及代碼來源信息。
- 保留許可證:在原有代碼和衍生代碼中,保留Apache 2.0協議文件。
本作品文檔部分采用知識共享署名 4.0 國際許可協議進行許可。 遵循許可的前提下,你可以自由地共享,包括在任何媒介上以任何形式復制、發行本作品,亦可以自由地演繹、修改、轉換或以本作品為基礎進行二次創作。但要求你:
- 署名:應在使用本文檔的全部或部分內容時候,注明原作者及來源信息。
- 非商業性使用:不得用于商業出版或其他任何帶有商業性質的行為。如需商業使用,請聯系作者。
- 相同方式共享的條件:在本文檔基礎上演繹、修改的作品,應當繼續以知識共享署名 4.0國際許可協議進行許可。
備案
網站備案信息:粵ICP備18088957號