web 全架構系列(一): 整體分層及各層模組化
介紹
這一系列文章, 旨在描述面對一個從零開始的 B(C)/S 應用的時候, 如何去搭建一個業務無關的平臺, 承載上層應用流量. 這裡要強調這個平臺的幾個特點:
- 業務無關性: 無論業務的形態如何, 均可以在此架構之上執行, 這裡可能會面臨若干情況, 如無狀態服務, 長連線服務等, 後續會根據場景執行描述, 但是這些場景可以看作是一個有限集.
- 可擴充套件性: 這裡的擴充套件性特指兩個方面, 一是業務的擴充套件, 二是流量的增加, 這兩者對於任何一個平臺而言, 都是要著重考慮的.
業務根據不同的指標, 可以分為若干類, 這裡期望通過兩種指標來描述這一系列文章想要覆蓋的場景, 以說明業務無關性
:
-
根據狀態: 分為
無狀態
服務和有狀態
服務 -
根據實時性: 分為
非同步
與實時
應用
這兩個指標可以任意組合, 但是最常用的組合應該是屬於無狀態-非同步
及有狀態-實時
應用了, 但是通常也會有無狀態-實時
應用存在, 比如對於一個部落格系統, 可以認為其是一個無狀態-非同步
應用, 而一個一對一的聊天應用, 則可以看作是無狀態-實時
應用, 而大多數線上遊戲, 則是有狀態-實時
應用, 需要注意的是, 業務場景不會嚴格按照上述概念進行區分, 最終大多都會形成一個無狀態
與有狀態
,非同步
與實時
共存的狀態.
微服務化是滿足擴充套件性的基石, 這也是文章會首先描述的一個整體性架構, 單機應用會在後期引發若干難以解決的問題, 所以這是一開始就需要考慮到的事情.
文章會主要描述以下幾個部分:
- 應用分支與模組化
- 持續整合
- 有狀態的長連線應用擴充套件性設計
- Web 端構建與模組化
微服務的存在, 致使應用分散在若干伺服器叢集中, 如何有效管理叢集是一個比較龐大的話題, 但是目前業界已經有了比較一致的具有完備性的技術方案, 如k8s, rancher等, 特別是雲服務商的出現, 掩蓋了硬體管理這個最複雜的環節, 所以這裡不會去討論關於容器編排相關的話題.