年薪60W實用架構技術,阿里P7架構師教你如何設計解決方案

鏈路追蹤概念

什麼是鏈路追蹤,用來解決什麼問題數據庫

  • 用戶行爲鏈路,如:瀏覽頁面,觀看視頻,購買商品,收藏,評論等等行爲
  • 服務流程鏈路,快速定位異常:用戶發起退貨,遲遲沒收到退回的商品,哪一個鏈條出了問題?
  • 大數據ai畫像,一個鏈條下非業務的動態行爲數據,纔是最貼近用戶的素材

服務追蹤的基礎出發點—記錄足跡

  1. 入口處生成鏈路標識traceid
  2. 傳遞traceid參數給下層業務方法
  3. 各方法內部記錄訪問信息

使用TreadLocal來傳參數

ThreadLocal,不少地方叫作線程本地變量,也有些地方叫作線程本地存儲,其實意思差很少。可能不少朋友都知道ThreadLocal爲變量在每一個線程中都建立了一個副本,那麼每一個線程能夠訪問本身內部的副本變量。服務器

思考:使用TreadLocal來傳參數 markdown

如何讓traceid的傳遞不侵入業務?

  • 儘可能少侵入業務代碼
  • 不須要開發人員來維護

MDC -----Mapped Diagnostic Context架構

  • 與當前線程綁定 ---- Threadlocal
  • 放數據--- MDC.put(traceid,aaa)
  • 取數據--- MDC.get(traceid)
  • 日誌格式----%X{traceId}

分佈式調用來了?

看看dubbo裏的rpc調用

Dubbo使用filter

Dubbo高階---spi擴展機制

完美,優雅地解決掉了rpc的透傳問題!

微服務

軟件架構是一個包含各類組織的系統組織,這些組件包括 Web服務器, 應用服務器, 數據庫,存儲, 通信層), 它們彼此或和環境存在關係。系統架構的目標是解決利益相關者的關注點app

微服務是指開發一個單個小型的但有業務功能的服務,每一個服務都有本身的處理和輕量通信機制,能夠部署在單個或多個服務器上。微服務也指一種種鬆耦合的、有必定的有界上下文的面向服務架構。也就是說,若是每一個服務都要同時修改,那麼它們就不是微服務,由於它們緊耦合在一塊兒;若是你須要掌握一個服務太多的上下文場景使用條件,那麼它就是一個有上下文邊界的服務,這個定義來自DDD領域驅動設計分佈式

相對於單體架構和SOA,它的主要特色是組件化、鬆耦合、自治、去中心化,體如今如下幾個方面

  • 一組小的服務

服務粒度要小,而每一個服務是針對一個單一職責的業務能力的封裝,專一作好一件事情。微服務

  • 獨立部署運行和擴展

每一個服務可以獨立被部署並運行在一個進程內。這種運行和部署方式可以賦予系統靈活的代碼組織方式和發佈節奏,使得快速交付和應對變化成爲可能。組件化

  • 獨立開發和演化

技術選型靈活,不受遺留系統技術約束。合適的業務問題選擇合適的技術能夠獨立演化。服務與服務之間採起與語言無關的API進行集成。相對單體架構,微服務架構是更面向業務創新的一種架構模式。大數據

  • 獨立團隊和自治

團隊對服務的整個生命週期負責,工做在獨立的上下文中,本身決策本身治理,而不須要統一的指揮中心。團隊和團隊之間經過鬆散的社區部落進行銜接。spa

本文到這裏就結束了,喜歡的朋友能夠幫忙轉發和關注一下,感謝支持!

相關文章
相關標籤/搜索