系統設計思考

IT系統設計從早期的Jsp/Servlet類應用爲主,到今天的微服務、ServerLess、Docker、Paas、CI&CD、Devops。目標:高效研發、彈性擴展、高效運維。手段:Divide&Conquer (分層,解耦合)。web

協議層從早期的HTTp+XML&SOAP 到今天的Restful (Spring)& 輕量級RPC (Dubbo, gRpc),協議的效率和內容自描述性方面獲得了很大提升;sql

功能分離:緩存和消息隊列獲得了普遍的應用。數據庫

數據存儲:各種Nosql(Cassandra、Hbase、MongoDB、Nero4J等) 數據庫的出現極大豐富了數據存儲的選擇。緩存

微服務框架:Spring Cloud, Dubbo 等,簡化了微服務開發和治理工做微信

當前一些有自研需求的公司逐步開始在已有Iaas平臺基礎上,引入Docker,基於K8s實現服務(容器)的治理,逐步實現DevOps & CICD 目標。框架

實際應用開發中,典型的應用首先會對應用進行分層,客戶端層(微信客戶端、web、Android、Ios)和服務層分離,這樣能夠各層實現自我優化;服務層經過分佈式技術,使用微服務設計理念,實現服務的彈性擴展和支撐能力;數據層經過分庫分表、讀寫分離等技術擴展數據存儲層面的能力。運維

對於技術人員來講,須要瞭解核心的設計思想,在選擇技術框架時,可以根據不一樣的層分析不一樣的適用原則選擇框架,上線運維過程當中可以快速定位問題,並用合適的方式來解決。分佈式

相關文章
相關標籤/搜索