1. 程式人生 > >系統設計思考

系統設計思考

平臺 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)和服務層分離,這樣可以各層實現自我優化;服務層通過分布式技術,使用微服務設計理念,實現服務的彈性擴展和支撐能力;數據層通過分庫分表、讀寫分離等技術擴展數據存儲層面的能力。

對於技術人員來說,需要了解核心的設計思想,在選擇技術框架時,能夠根據不同的層分析不同的適用原則選擇框架,上線運維過程中能夠快速定位問題,並用合適的方式來解決。

系統設計思考