IT架構的本質 原文地址:http://mp.weixin.qq.com/s?__biz=MzAwNTQ4MTQ4NQ==&mid=2453562304&idx=1&sn=be86a7bc682c4e76e06b87a10ad45188&chksm=8cd136a2bba6bfb430103e50f94b670e799412d0a1cae4eded0eb901847b6d462359ae317635&mpshare=1&scene=23&srcid=#rd
這篇文章是由一位具有十二年工作經驗的架構師總結而成,他從自己的工作經驗中總結出五條道理:
1.需求優化最重要:少查少寫少依賴,Less is more
2.群集設計通用規則:前端復制后端拆,實時改異步,三組件互換
3.理解硬件天性:角色選型時要看硬件的天然特性
4.數據的產生和消失:數據不會憑空產生,但會憑空消失
5.各環節都不可盲信:容災設計中都盡人事和聽天命
通過閱讀他總結出的五條經驗,應該會對我們以后的工作有所幫助。
在第一點中提到,一個IT系統是多角色多模塊分層分級的,像OSI模型上層應用簡單依賴下層支撐,SOA設計中同級角色也只看對方的接口。
各角色分工明確方便快速實現業務,但是給架構優化也埋下大坑,底層的盲目支撐是巨大資源浪費,平級調度協作也沒任何彈性。
而做架構設計最重要的就是砍需求,將上層應用的需求優化刪減,讓同級的業務能容錯。
前端對后端少輸入少查詢多容錯,應該抓住核心訴求,不該要的東西都不要。
第二點指出,架構常見技巧就像空中華爾茲一樣自然優雅。要做架構就要上群集,而群集設計調優翻來覆去就是這三板斧:前端復制后端拆,實時改異步,IO-算力-空間可互換。
前端是管道是邏輯,而后端是狀態是數據,所以前端復制后端拆。
絕大部分“實時操作”都不是業務需求,而是某應用無法看到后端和Peer狀態,默認就要實時處理結果了。
在群集性能規劃中,網絡和硬盤IO+CPU算力+磁盤和內存空間是可以互換的,架構師要完成補不足而損有余的選型。
第三點說道:別讓硬盤扛性能,別讓內存保持久,別讓網線扛穩定。
架構層軟件技術已經足夠成熟,所謂技術選型不如說是適應場景;在做具體角色選型時,最深度也最易忽視的原則是順應硬件天性。
如果一個服務依賴硬盤,那這個服務就不適合扛性能壓力。
第四點告訴我們:數據不會憑空產生,我們要便捷輕巧安全可靠的獲取數據,就要選好數據源,保障好傳輸路徑,定義好數據變換規則。
但是會憑空消失,在一個數據生命周期內,為了防止數據全部或部分憑空消失,數據的容錯校驗、關聯復原、冷熱備份和安全刪除都要考慮到位。
最后一點談到,整個IT系統中就沒有可靠的組件,架構師既不能盲目信任撞大運,又不能無限冗余嚇唬自己,而是在盡人事和聽天命之間做好權衡。
?
這篇文章主要講的是架構工作的“道”,對與架構之“術”并不提及。不同的業務系統的架構之術完全不同,能拿來匯總借鑒的只有這幾條簡單的道理。
如果我們有架構之道做思想支撐,即使接手全新業務類型,庖丁可以解牛也可以殺豬,我們一樣能游刃有余心里不慌。
?