架構思考

閒來無事,總結了下架構設計方面的一些思考數據庫

    一、穩定性跨域

            。一切以穩定爲中心緩存

            。架構儘量簡單、清晰服務器

            。不過分設計架構

    二、解耦/拆分運維

            。穩定部分與易變部分分離異步

            。核心業務與非核心業務分離分佈式

            。主流程與輔流程分離組件化

            。應用與數據分離架構設計

            。服務與實現細節分離

            。數據拆分:讀寫分離、分庫分表、冷熱數據分離

    三、抽象化

            。應用抽象化:應用只依賴服務抽象,不依賴服務實現細節、位置

            。數據庫抽象化:應用只依賴邏輯數據庫,不須要關心物理庫的位置和分片

    四、鬆耦合

            。跨域調用異步化:不一樣業務域之間儘可能異步解耦

            。非核心業務儘可能異步化:核心、非核心業務之間,儘可能異步解耦

            。必須同步調用時,須要設置超時時間和任務隊列長度

    五、高可用

            。集羣容錯:應用系統集羣,避免單點

            。多機房容災,異地多活

            。分流:水平可擴展-在線擴容機器

            。降級:非核心業務可根據狀況降級處理(業務直接不展現或mock數據或直接利用本地緩存)

            。限流:對流量作過濾,保證部分請求可用

            。自動化運維

    六、靈活

            。支持灰度發佈,分步切流量

            。功能開關,可回退

            。A/B test,配備相應數據展現層,及時感知數據變化

    七、監控

            。服務器監控:內存、cpu、i/o、負載

            。應用監控:qps、rt、gc

            。異常監控報警

            。分佈式鏈路追蹤監控:zipkin、pinpoint

            。業務監控:核心業務生命週期監控,好比根據訂單號獲取全部相關生命週期和數據

    八、領域建設

            。釐清業務邊界,建設領域模型

            。基礎業務/服務下沉,可複用

            。平臺/組件化:可搭積木式構建新業務,下降成本

            。數據收斂:只能經過服務來訪問其餘領域的數據

    九、依賴原則

            。禁止循環依賴

            。穩定部分依賴:穩定部分不依賴易變部分、易變部分能夠依賴穩定部分

            。核心服務依賴:核心服務不依賴非核心服務、非核心服務可依賴核心服務,保證核心服務穩定

            。基礎服務依賴:基礎服務不向上依賴流程服務、流程服務/組合服務可向下依賴基礎服務,保證基礎服務穩定

            。平臺服務依賴:平臺服務不依賴上層應用、上層應用可依賴平臺服務,保證平臺服務穩定

            。非功能性服務依賴:非功能性服務不依賴功能性服務、功能性服務可依賴非功能性服務,保證非功能性服務穩定

            。跨業務域調用時,儘量異步弱依賴

    十、服務設計

            。無狀態,接口調用冪等

            。可複用,複用粒度是有業務邏輯的抽象服務,不是服務細節

            。鬆耦合、高內聚

            。可治理

            。基礎服務之間物理隔離,包括數據層

寫了這麼多,無非就是圍繞穩定性、可擴展性、易用性、靈活性展開的,其中重中之重是穩定性

失去了穩定性,其餘一切都是扯淡

另外,架構必須緊貼業務,拋開了業務,全部技術也都是扯淡,產生不了價值

相關文章
相關標籤/搜索