X-Frame-Options 是一個HTTP響應頭,用於控制網頁是否可以嵌套在 <frame>, <iframe>, <embed> 或者 <applet> 中。通過設置 X-Frame-Options 頭部,網站管理員可以防止網頁被嵌套到其他網站的框架中,從而有效防範點擊劫持等安全風險。下麵是關 ...
一、傳統的單體架構
1、什麼是單體架構?
單體架構(Monolithic Architecture)是一種傳統的軟體架構模式,將整個應用程式作為一個單一的、統一的單元進行開發、部署和擴展。在單體架構中,所有的功能模塊都被打包在一起,共用同一個代碼庫和資料庫。
2、單體架構的缺點
- 複雜性高
一個大型的項目可能包含的模塊功能非常多,而模塊之間的邊界比較模糊,依賴關係不是很清晰,代碼質量參差不齊,修改一個bug容易造成另一個隱藏的bug。
- 可擴展性差
只能整體擴展,不能按業務模塊的特點進行擴展。比如:當我們發現某一個功能模塊的請求壓力非常大時,想單獨對這個功能做服務節點的擴展,對於單體架構來說是做不到的,只能整個系統做負載均衡。
- 維護困難
隨著應用程式的功能模塊越來越多,代碼庫也會變得越發龐大和複雜,會導致新人學習周期拉長。
- 技術棧受限制
整個系統只能使用單一的技術棧,無法針對業務模塊的特點使用不同的技術棧。
- 可靠性差
一個功能點的bug可能會導致整個應用程式的崩潰。
二、微服務架構
1、什麼是微服務?
微服務架構是將整個大型複雜的應用程式拆分成若幹個微小的服務,將系統各功能模塊分配到各個微服務中,從而降低系統的耦合度,服務之間的通訊通常採用RPC協議或http協議。
2、微服務架構的優點
- 易於開發和維護
每一個微服務都是獨立部署的“小系統”,開發人員只需要關註這個服務自己功能模塊的代碼,所以代碼量和功能相對小很多,開發理解相對也會簡單一些,團隊成員接手也會容易很多。
- 服務啟動速度快
單個微服務的代碼量相對小很多,所以啟動速度會快一些。
- 按需伸縮
當我們發現某個服務的請求壓力過大(較小)時,我們只需要對這個服務增加(減少)節點即可。
- 穩定性更強
如果微服務應用崩潰了,一般情況下不會導致整個應用系統的宕機。
- 技術棧不受限制
每個微服務可以選擇合適的技術棧,不用局限於單一特定的技術體系。
3、微服務架構帶來的問題
- 部署節點變多,管理困難
隨著拆分的服務數量越來越多,用傳統的方式部署和管理配置會變得麻煩。
- 分散式事務一致性問題
微服務之間的調用會存在數據一致性問題,需要引入分散式事務解決方案來處理。
- 調用鏈路變長,問題追蹤定位困難
一個微服務的數據如果依賴於其他服務,如果出現問題,如何定位找到問題的根源所在是相對比較困難的。
4、微服務框架
我們的項目要使用微服務架構模式的開發方式,那麼就需要有一個微服務的框架來解決這些問題。推薦一個最接地氣的.NET微服務框架Wing,項目地址:
gitee:https://gitee.com/linguicheng/Wing
github:https://github.com/linguicheng/Wing