官术网_书友最值得收藏!

4.2 微服務的拆分規范

4.2.1 領域模型

領域模型是領域驅動設計(Domain-Driven Design,DDD)中的概念,它是對具有清晰邊界的領域對象的一種抽象表示(這種抽象是從業務結合技術的視角出發),領域模型強調的是“邊界劃分”,它通常只關注業務復雜度,從業務視角將應用劃分為一個個獨立的業務子域,比如訂單域、商品域、導購域等;再根據不同的需求場景及團隊對領域知識的不斷積累和認知,對領域內的業務做進一步劃分。

4.2.2 計算密集型業務和I/O密集型業務

計算密集型業務通常分為CPU密集型和GPU密集型兩種,它們的特點都是需要大量的計算資源來完成自身業務,對網絡帶寬的占用不多。比較典型的業務是淘系業務的營銷優惠計算引擎和用戶畫像系統,以及各大互聯網公司中的機器學習系統。將核心主鏈路的計算密集型業務拆分成獨立的微服務,可以有針對性地調配高算力類型的硬件資源進行擴縮容。

I/O密集型業務的特點是需要占用大量網絡帶寬、存儲介質和內存空間以完成自身業務,但只需少量的計算資源。這類業務的典型代表是文件的上傳下載功能,比如淘系商品的圖片空間和視頻空間服務,抖音的小視頻上傳等。將這類業務拆分為獨立服務,可以有針對性地調配存儲資源。在網絡搭建上,我們推薦使用專線服務該類業務,以避免發生網絡阻塞從而影響主鏈路系統。

4.2.3 區分高頻、低頻業務場景和突發流量

分析業務的使用頻率是服務拆分的一個重點。以電商場景為例,主鏈路業務中典型的高頻場景是商品主搜、商品詳情頁等導流端場景,而后臺商品發布服務則是低頻場景。區分高頻、低頻場景,不僅可以對集群資源進行更加精準的調配,在大促等峰值流量沖擊階段,也可以做到細粒度流量整形和服務降級(犧牲非主鏈路上的低頻場景能力,將服務器資源調配給主鏈路上的高頻場景)。

針對雙11爆款商品、微博熱搜等典型的突發流量場景,我們也有特殊的服務拆分手段。在某個資源成為突發熱點的前后,其業務屬性并沒有發生本質的變化,為了防止熱點資源影響整個業務,在服務拆分手段上我們傾向于使用“熱點隔離”的方案。對于秒殺活動等可以預知的突發熱點,我們可以預先將底層數據、緩存從主庫遷移到獨立的“熱點庫”,甚至可以將服務請求路由到專門搭建的熱點集群。而對熱搜等無法提前預知的熱點來說,則可以通過流技術(比如,使用Stream分析RPC接口日志的方式來統計訪問量)分析統計實時業務數據,在某個資源接近熱點閾值的時候,將其動態遷移到熱點庫,這也是目前一線大廠對熱點數據的主要拆分手段。

4.2.4 規劃業務主鏈路

主鏈路規劃是大型應用微服務治理中必不可少的一個環節,其目的是識別出最低限度地完成業務所必須調用的服務鏈路。以電商場景為例,商品搜索、詳情頁、添加購物車和訂單結算是完成下單必不可少的主鏈路服務,而商品用戶評論、導購推薦欄等功能并不包含在主鏈路內,在大促等大流量場景下可以通過彈性縮容和降級的方式,把邊緣業務的系統資源讓給主鏈路上的關鍵服務。

主鏈路服務的故障將對業務產生重大的影響,通過對主鏈路服務進行細粒度的服務拆分,就可以根據具體的業務場景,更加細粒度地運用限流策略、彈性計算和降級策略等流控和容災技術,在峰值場景下保障主鏈路服務的可用性。

主站蜘蛛池模板: 宜良县| 绍兴县| 兴安县| 清远市| 顺平县| 兴国县| 余干县| 茌平县| 邳州市| 齐齐哈尔市| 丰城市| 伊金霍洛旗| 航空| 长岛县| 永安市| 开鲁县| 大理市| 莱州市| 密云县| 县级市| 松江区| 民丰县| 荆州市| 左权县| 麻栗坡县| 资溪县| 栖霞市| 西昌市| 万全县| 长汀县| 宜都市| 利津县| 射阳县| 平乡县| 徐汇区| 井陉县| 库车县| 五家渠市| 镇坪县| 石嘴山市| 平陆县|