通過這篇文章我們來學習我們項目系統架構的演變過程。沒部署過項目的或者沒做過項目的小夥伴也可以康康,hhhh..
當我們系統的用戶逐漸增多,我們系統就必須具備了高可用、高併發這樣的特性。如何解決?
1、單體應用架構
這種應用架構就是我們在校園中做項目(例如一個網站、一個小程序等)經常用的架構,說白了,學校也不可能給你幾臺服務器讓你玩分佈式,第一是有這種需求也不會交給學生做,第二是學校的系統一般的併發量還沒達到這個級別。我個人現在大三,在學校做過大大小小很多系統,到最後說白了就是反覆做同一個事,也沒啥難的(吹個牛B)。
優點:(1)所有的功能集成在一個項目工程中(2)項目架構簡單,前期開發成本低,週期短,小型項目的首選。
缺點:(1)全部功能集成在一個工程中,對於大型項目不易開發、擴展及維護(2)系統性能擴展只能通過擴展集羣結點,成本高、有瓶頸。 (3)技術棧受限(4)容錯不好,如果其中一個模塊出現問題,可能導致整個項目崩掉。
單體應用架構
2、垂直應用架構
當訪問量增加,我們就得想一下如何解決問題。將應用拆成互不相干的幾個應用,以提升效率
這裏將三個模塊系統,部署到三臺服務器上,這樣各自應用不會互相干擾,形成分流。三個系統是毫無關係的,但是這樣我們就需要寫一些重複的開發代碼了,比如後臺管理系統要看到電商系統的數據,那麼必然調用電商系統的數據內容。這個架構並沒有根本上解決高併發的問題。只是將原來的項目,一刀切爲3份而已。
優點:(1)項目架構簡單,前期開發成本低,週期短,小型項目的首選。(2)通過垂直拆分,原來的單體項目不至於無限擴大(3)不同的項目可採用不同的技術。
缺點:(1)全部功能集成在一個工程中,對於大型項目不易開發、擴展及維護。(2)系統性能擴展只能通過擴展集羣結點,成本高、有瓶頸。
3、分佈式SOA架構
4、微服務架構
5、soa和微服務的關係
SOA( Service Oriented Architecture )“面向服務的架構”:他是一種設計方法,其中包含多個服 務, 服務之間通過相互依賴最終提供一系列的功能。一個服務 通常以獨立的形式存在與操作系統進程 中。各個服務之間 通過網絡調用。
功能
|
SOA
|
微服務
|
組件大小
|
大塊業務邏輯
|
單獨任務或小塊業務邏輯
|
耦合
|
通常鬆耦合
|
總是鬆耦合
|
公司架構
|
任何類型
|
小型、專注於功能交叉團隊
|
管理
|
着重中央管理
|
着重分散管理
|
目標
|
確保應用能夠交互操作
|
執行新功能、快速拓展開發團隊
|