單元化架構

目錄

????????編輯

單元化

邏輯單元


單元化

多地多機房部署,是互聯網系統的必然發展方向,一個系統要走到這一步,也就必然要解決上面提到的問題:流量調配、數據拆分、延時等。業界有很多技術方案可以用來解決這些問題,而承載這些方案的,是一個部署架構。盡管可采用的部署架構不止一個,但不論是純理論研究,還是一些先行系統的架構實踐,都把“單元化部署”推崇為最佳方案。

單元(即單元化應用服務產品層的部署單元),是指一個能完成所有業務操作的自包含集合,在這個集合中包含了所有業務所需的所有服務,以及分配給這個單元的數據。單元化架構就是將單元作為部署的基本單位,在全站所有機房中部署多個單元,每個機房內單元數目不固定,任一單元均部署系統所需的全部應用,數據則是全量數據按照某種維度劃分后的一部分。

傳統意義上的 SOA 化(服務化)架構,服務是分層的,每層的節點數量不盡相同,上層調用下層時,隨機選擇節點。

SOA 化(服務化)架構

單元化架構下,服務仍然是分層的,不同的是每一層中的任意一個節點都屬于且僅屬于某一個單元,上層調用下層時,僅會選擇本單元內的節點。

lhc架構

一個單元,是一個五臟俱全的縮小版整站,它是全能的,因為部署了所有應用;但它不是全量的,因為只能操作一部分數據。能夠單元化的系統,很容易在多機房中部署,因為可以輕松將多個單元部署在一個機房內,而將另外幾個單元部署在其他機房內。通過在業務入口處設置一個流量調配器,可以調整業務流量在單元之間的比例。

單元

從上述對單元的定義和特性描述中,可以推導出單元化架構要求系統必須具備的一項能力:數據分區,實際上正是數據分區決定了各個單元可承擔的業務流量比例。數據分區(shard),即是將全局數據按照某一個維度水平劃分開來,每個分區的數據內容互不重疊,這也就是數據庫水平拆分所做的事情。

僅把數據分區了還不夠,單元化的另外一個必要條件是,全站所有業務數據分區所用的拆分維度和拆分規則都必須一樣。若是以用戶分區數據,那交易、收單、微貸、支付、賬務等全鏈路業務都應該基于用戶維度拆分數據,并且采用一樣的規則拆分出同樣的分區數。比如,以用戶 id 末 2 位作為標識,將每個業務的全量數據都劃分為 100 個分區(00-99)。

有了以上兩個基礎,單元化才可能成為現實。把一個或幾個數據分區,部署在某個單元內,這些數據分區占總量數據的比例,就是這個單元能夠承擔的業務流量比例。 執行數據分區時一個很重要的問題是分區維度的選擇,一個好的維度,應該:

  • 粒度合適:粒度過大,會喪失流量調配的靈活性和精細度;粒度過小,會給數據的支撐資源,訪問邏輯帶來負擔。

  • 足夠平均:按這個分區維度劃分后,每個部署單元的數據量應該是幾乎一致的。

以用戶為服務主體的系統(很多面向用戶的系統,比如支付寶)通常可以按用戶維度對數據分區,這是一個最佳實踐。

邏輯單元

邏輯單元是單元化架構的基礎,一個單元被稱為一個 Zone。根據業務特點不同,您可以將系統部署在不同類型的邏輯單元中。更多信息,請參考?創建邏輯單元。

參考:

什么是單元化原理,如何實現單元化_金融分布式架構(SOFAStack)-阿里云幫助中心

支付寶資深技術專家尹博學:新一代金融核心突破之全分布式單元化技術架構-阿里云開發者社區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83603.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【免殺】C2免殺技術(五)動態API

一、什么是動態API 在C2免殺領域中,“動態API” 主要指的是繞過靜態檢測的一種技術手段,其本質是運行時動態解析和調用Windows API函數,而不是在程序編譯階段就明確引用這些API。這種方式可以有效躲避靜態分析工具和殺軟的簽名識別。 為什么…

Python爬蟲實戰:研究JavaScript壓縮方法實現逆向解密

一、引言 在數字化信息爆炸的時代,網絡數據已成為驅動各行業發展的核心資產。Python 憑借其豐富的庫生態和簡潔的語法,成為網絡爬蟲開發的首選語言。然而,隨著互聯網安全防護機制的不斷升級,網站普遍采用 JavaScript 壓縮與混淆技術保護其核心邏輯和數據傳輸,這使得傳統爬…

HTTP 請求走私(HTTP Request Smuggling)

HTTP 請求走私(HTTP Request Smuggling)是一種通過利用前端代理(如負載均衡器、CDN)和后端服務器在 解析 HTTP 請求時存在不一致性 的漏洞,從而實現 注入惡意請求 的攻擊技術。 一、基本原理 HTTP 請求走私主要依賴兩…

【Google機器學習實踐指南(線性回歸篇)

🔍 Google機器學習實踐指南(線性回歸篇) Google機器學習實戰(3)-單變量線性回歸核心解析,掌握房價預測模型 一、建模流程全景圖 ▲ 四大核心步驟: 數據可視化→特征工程→模型訓練→預測推理 二、房價預測實戰 1. …

python打卡day16

NumPy 數組基礎 因為前天說了shap,這里涉及到數據形狀尺寸問題,所以需要在這一節說清楚,后續的神經網絡我們將要和他天天打交道。 知識點: numpy數組的創建:簡單創建、隨機創建、遍歷、運算numpy數組的索引&#xff1a…

ubuntu 20.04 更改國內鏡像源-阿里源 確保可用

鏡像源是跟linux版本一一對應的,查詢自己系統的版本號: 命令:lsb_release -a macw:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal macw:~$…

基于OpenCV的SIFT特征和FLANN匹配器的指紋認證

文章目錄 引言一、概述二、代碼解析1. 圖像顯示函數2. 核心認證函數2.1 創建SIFT特征提取器2.2 檢測關鍵點和計算描述符(源圖像)2.3 檢測關鍵點和計算描述符(模板圖像)2.4 創建FLANN匹配器2.5 使用K近鄰匹配 3. 匹配點篩選4. 認證…

四品種交易策略

策略概述 策略思路: 交易品種:同時交易四個品種,每個品種使用總資金的10%。 合約選擇:使用連續合約(data0)發出交易信號,實際交易 主力合約(data1)和下一個主力合約(data2)。 資金管理:總資金用A_CurrentEquity表示,交易手數據此計算。 止損執行:盤中達到止損…

MySQL事務的一些奇奇怪怪知識

Gorm事務有error卻不返回會發生什么 Gorm包是大家比較高頻使用。正常的用法是,如果有失敗返回error,整體rollback,如果不返回error則commit。下面是Transaction的源碼: // Transaction start a transaction as a block, return …

時序數據庫、實時數據庫與實時數倉:如何為實時數據場景選擇最佳解決方案?

隨著物聯網、金融交易、在線游戲等場景對實時數據處理需求的增長,市場上涌現出多種專門針對實時數據處理的數據庫解決方案。然而,面對時序數據庫、實時數據庫和實時數據倉庫這三種看似相似的技術,許多技術決策者常常感到困惑:它們…

Spring3+Vue3項目中的知識點——JWT

全稱:JOSN Web Token 定義了一種簡潔的、自包含的格式,用于通信雙方以json數據格式的安全傳輸信息 組成: 第一部分:Header(頭),記錄令牌類型、簽名算法等。 第二部分:Payload&am…

微服務架構詳解

微服務架構詳解:從概念到實踐(附代碼案例) 目錄 微服務架構詳解:從概念到實踐(附代碼案例) 一、微服務架構概述 1.1 什么是微服務? 1.2 微服務的核心思想 二、微服務架構的優勢與挑戰 2.1 優勢 2.2 挑戰 三、微服務架構的核心組件 3.1 服務注冊與發現 示例代…

linux下編寫shell腳本一鍵編譯源碼

0 前言 進行linux應用層編程時,經常會使用重復的命令對源碼進行編譯,然后把編譯生成的可執行文件拷貝到工作目錄,操作非常繁瑣且容易出錯。本文編寫一個簡單的shell腳本一鍵編譯源碼。 1 linux下編寫shell腳本一鍵編譯源碼 shell腳本如下&…

學習!FastAPI

目錄 FastAPI簡介快速開始安裝FastApiFastAPI CLI自動化文檔 Reqeust路徑參數Enum 類用于路徑參數路徑參數和數值校驗 查詢參數查詢參數和字符串校驗 請求體多個請求體參數嵌入單個請求體參數 CookieHeader表單文件直接使用請求 ResponseResponse Model多個關聯模型 響應狀態碼…

DAY 4 缺失值的處理

\1. 打開數據 import pandas as pd data pd.read_csv(rdata.csv) data\2. 查看數據 # 打印數據集的基本信息(列名、非空值數量、數據類型等) print("data.info() - 數據集的基本信息(列名、非空值數量、數據類型等)&#…

Java面試實戰:從Spring Boot到分布式緩存的深度探索

Java面試實戰:從Spring Boot到分布式緩存的深度探索 場景介紹 在一家著名的互聯網大廠,面試官老王正對求職者“水貨程序員”明哥進行Java技術面試。明哥帶著一點緊張和自信,迎接這場技術“拷問”。 第一輪:基礎問題 老王&#…

UART、SPI、IIC復習總結

一、UART 1、UART和USART的異同? 相同點 基本功能:都是用于串行通信的數據收發設備,能夠實現數據在不同設備之間的傳輸。在異步通信模式下,二者的工作方式相似,都使用起始位、數據位、校驗位(可選&#…

PostGIS實現矢量數據轉柵格數據【ST_AsRaster】

ST_AsRaster函數應用詳解:將矢量數據轉換為柵格數據 [文章目錄] 一、函數概述 二、函數參數與分組說明 三、核心特性與注意事項 四、示例代碼 五、應用場景 六、版本依賴 七、總結 一、函數概述 ST_AsRaster是PostGIS中用于將幾何對象(如點、線…

Linux 線程(上)

前言:大家早上中午晚上好!!今天來學習一下linux系統下所謂的線程吧!!! 一、重新理解進程,什么是進程? 1.1 圖解 其中黑色虛線部分一整塊就是進程,注意:一整…

Java API學習筆記

一.類 1. String 類 不可變性:String對象創建后不可修改,每次操作返回新對象 String str "Hello"; str.length(); str.charAt(0); str.substring(1, 4); str.indexOf("l"); str.equals("hel…