系統設計思考
阿新 • • 發佈:2018-02-24
平臺 base 技術 快速定位 今天 需要 ner 工作 微服務
IT系統設計從早期的Jsp/Servlet類應用為主,到今天的微服務、ServerLess、Docker、Paas、CI&CD、Devops。目標:高效研發、彈性擴展、高效運維。手段:Divide&Conquer (分層,解耦合)。
協議層從早期的HTTp+XML&SOAP 到今天的Restful (Spring)& 輕量級RPC (Dubbo, gRpc),協議的效率和內容自描述性方面得到了很大提高;
功能分離:緩存和消息隊列得到了廣泛的應用。
數據存儲:各類Nosql(Cassandra、Hbase、MongoDB、Nero4J等) 數據庫的出現極大豐富了數據存儲的選擇。
微服務框架:Spring Cloud, Dubbo 等,簡化了微服務開發和治理工作
當前一些有自研需求的公司逐步開始在已有Iaas平臺基礎上,引入Docker,基於K8s實現服務(容器)的治理,逐步實現DevOps & CICD 目標。
實際應用開發中,典型的應用首先會對應用進行分層,客戶端層(微信客戶端、web、Android、Ios)和服務層分離,這樣可以各層實現自我優化;服務層通過分布式技術,使用微服務設計理念,實現服務的彈性擴展和支撐能力;數據層通過分庫分表、讀寫分離等技術擴展數據存儲層面的能力。
對於技術人員來說,需要了解核心的設計思想,在選擇技術框架時,能夠根據不同的層分析不同的適用原則選擇框架,上線運維過程中能夠快速定位問題,並用合適的方式來解決。
系統設計思考