譯者 | 劉濤
審校 | 重樓
邊緣計(jì)算作為一種分布式系統(tǒng)設(shè)計(jì)架構(gòu),旨在將計(jì)算與數(shù)據(jù)存儲(chǔ)功能遷移至最為需求的位置——網(wǎng)絡(luò)的 “邊緣”。通過將此類任務(wù)部署到網(wǎng)絡(luò)邊緣,能夠達(dá)成實(shí)時(shí)計(jì)算,進(jìn)而大幅度削減帶寬成本,并顯著縮短延遲。
然而,邊緣計(jì)算環(huán)境面臨著諸多挑戰(zhàn),其中較為突出的是邊緣節(jié)點(diǎn)(例如各類本地設(shè)備)與中央系統(tǒng)(一般指云平臺(tái)或數(shù)據(jù)中心)之間的數(shù)據(jù)同步難題。
值得慶幸的是,存在一些工具可助力解決這些問題。本文將詳細(xì)闡述如何運(yùn)用開源數(shù)據(jù)同步與數(shù)據(jù)庫復(fù)制工具SymmetricDS,作為上述問題解決方案之一。讀者將深入了解該工具在任意業(yè)務(wù)領(lǐng)域邊緣計(jì)算環(huán)境中的使用方式。
本文將引導(dǎo)讀者逐步剖析SymmetricDS背后的核心概念,并深入探討其如何助力優(yōu)化邊緣計(jì)算的性能表現(xiàn)。此外,本文還將以零售業(yè)數(shù)據(jù)同步為例,展開實(shí)際用例的研究。
什么是SymmetricDS?
SymmetricDS是一款開源軟件工具,主要應(yīng)用于分布式環(huán)境下,旨在實(shí)現(xiàn)數(shù)據(jù)庫之間的數(shù)據(jù)復(fù)制、同步以及集成功能。與傳統(tǒng)的數(shù)據(jù)同步工具不同的是,傳統(tǒng)工具往往是針對(duì)特定平臺(tái)進(jìn)行定制開發(fā)的,并且大多局限于相同類型數(shù)據(jù)庫之間的數(shù)據(jù)同步操作。而 SymmetricDS 則經(jīng)過專門設(shè)計(jì),具備強(qiáng)大的跨平臺(tái)兼容性,能夠在運(yùn)行于不同平臺(tái)的各類數(shù)據(jù)庫之間高效地實(shí)現(xiàn)數(shù)據(jù)同步。
在實(shí)際工作場(chǎng)景中,如果你所處的工作環(huán)境相對(duì)簡(jiǎn)單,僅需使用單一類型的數(shù)據(jù)庫,并且單向的數(shù)據(jù)同步方式即可滿足業(yè)務(wù)需求,那么諸如數(shù)據(jù)庫復(fù)制或者調(diào)度ETL作業(yè)這類傳統(tǒng)方法,或許是更為簡(jiǎn)便直接的選擇。然而,對(duì)于那些對(duì)數(shù)據(jù)同步靈活性要求較高、需要實(shí)現(xiàn)實(shí)時(shí)集成的復(fù)雜環(huán)境而言,尤其是涉及到像 POS 系統(tǒng)以及工業(yè)機(jī)器等邊緣設(shè)備的場(chǎng)景時(shí),SymmetricDS 能夠憑借其獨(dú)特優(yōu)勢(shì),為用戶提供更具適應(yīng)性和全面性的解決方案。
安裝環(huán)境
在安裝 SymmetricDS 之前,需滿足以下各項(xiàng)前提條件:
- Java 運(yùn)行時(shí)環(huán)境(JRE):系統(tǒng)必須安裝 Java 8.0 或更高版本。這是確保 SymmetricDS 能夠正常運(yùn)行的基礎(chǔ)環(huán)境要求。
- 數(shù)據(jù)庫:需運(yùn)行受支持的數(shù)據(jù)庫實(shí)例,例如 MySQL、PostgreSQL、Oracle、Server 等。同時(shí),用戶應(yīng)熟悉所選用數(shù)據(jù)庫的配置方法。
- 系統(tǒng)要求:建議系統(tǒng)配備 2GB 內(nèi)存,以滿足 SymmetricDS 在運(yùn)行過程中的基本內(nèi)存需求,確保其性能穩(wěn)定。磁盤空間需求則依據(jù)數(shù)據(jù)量大小以及復(fù)制所涉及的對(duì)象數(shù)量而有所不同。
理解SymmetricDS架構(gòu)
SymmetricDS 為跨多個(gè)系統(tǒng)(涵蓋邊緣設(shè)備)的數(shù)據(jù)同步構(gòu)建了一套靈活的邊緣計(jì)算架構(gòu)體系。該工具可類比為一個(gè)靈活多變的網(wǎng)絡(luò),能夠被設(shè)置為中心輻射型或?qū)Φ韧負(fù)浣Y(jié)構(gòu),以滿足不同應(yīng)用場(chǎng)景的需求。
在中心輻射型拓?fù)浣Y(jié)構(gòu)中,存在一個(gè)中央節(jié)點(diǎn)(可以是云服務(wù)器,也可以是本地服務(wù)器),它與眾多邊緣節(jié)點(diǎn)相互連接。中央節(jié)點(diǎn)在整個(gè)架構(gòu)中承擔(dān)著關(guān)鍵職責(zé),負(fù)責(zé)管理數(shù)據(jù)同步的配置參數(shù)、協(xié)調(diào)數(shù)據(jù)同步流程的編排工作,以及對(duì)數(shù)據(jù)同步過程進(jìn)行實(shí)時(shí)監(jiān)控。而每個(gè)邊緣節(jié)點(diǎn)則主要負(fù)責(zé)在本地進(jìn)行數(shù)據(jù)的采集與處理操作。
在對(duì)等拓?fù)浣Y(jié)構(gòu)中,架構(gòu)內(nèi)不存在單一的中央節(jié)點(diǎn)。在此模式下,每個(gè)邊緣節(jié)點(diǎn)兼具客戶端與服務(wù)器的雙重角色,它們能夠與其他對(duì)等的邊緣節(jié)點(diǎn)直接進(jìn)行數(shù)據(jù)共享,形成一種分布式、去中心化的數(shù)據(jù)交互模式。
每個(gè)邊緣節(jié)點(diǎn)均運(yùn)行自身獨(dú)立的SymmetricDS引擎,此引擎負(fù)責(zé)管理其本地?cái)?shù)據(jù)庫的數(shù)據(jù)同步工作。數(shù)據(jù)同步過程采用推拉模型,具體而言,在邊緣節(jié)點(diǎn)處,數(shù)據(jù)的更改會(huì)被實(shí)時(shí)捕獲并排入隊(duì)列。隨后,依據(jù)預(yù)先設(shè)定的事件或特定條件觸發(fā)相應(yīng)操作,這些數(shù)據(jù)更改將被傳輸至中央服務(wù)器或者其他節(jié)點(diǎn)。
在邊緣計(jì)算環(huán)境中運(yùn)用SymmetricDS,具備諸多顯著優(yōu)勢(shì),其中能夠高效處理離線事務(wù)尤為突出。在網(wǎng)絡(luò)出現(xiàn)中斷的情況下,邊緣節(jié)點(diǎn)能夠保持自主運(yùn)行狀態(tài),繼續(xù)執(zhí)行本地的相關(guān)任務(wù)。待網(wǎng)絡(luò)連接恢復(fù)之后,邊緣節(jié)點(diǎn)會(huì)自動(dòng)將離線期間積累的數(shù)據(jù)更改進(jìn)行同步。鑒于這一特性,SymmetricDS 在零售POS系統(tǒng)、遠(yuǎn)程監(jiān)控以及物聯(lián)網(wǎng)部署等領(lǐng)域展現(xiàn)出極高的適用性。
SymmetricDS主要由以下部分構(gòu)成:
- 節(jié)點(diǎn):參與同步過程的各個(gè)數(shù)據(jù)庫實(shí)例。
- 通道:為達(dá)成高效數(shù)據(jù)路由目的而對(duì)表進(jìn)行的一種邏輯分組方式。
- 觸發(fā)器:捕獲數(shù)據(jù)發(fā)生的更改操作,包括插入、更新以及刪除操作。
- 路由器:負(fù)責(zé)確定數(shù)據(jù)更新后的發(fā)送目的地。
- 批次:數(shù)據(jù)在進(jìn)行同步之前,會(huì)被歸并為一個(gè)個(gè)批次。
- 沖突解決機(jī)制:用于處理因并發(fā)更新所引發(fā)的數(shù)據(jù)沖突問題。
安裝與設(shè)置
步驟1:下載并安裝 SymmetricDS
若要開啟 SymmetricDS 的使用之旅,有兩種獲取途徑:一是從 SourceForge.net下載社區(qū)版(開源),將下載的文件解壓即可;二是若有更高級(jí)需求,可從Jumpmind Inc.獲取專業(yè)版,但專業(yè)版需獲取相應(yīng)授權(quán)。在安裝之前,請(qǐng)務(wù)必確保在你的計(jì)算機(jī)系統(tǒng)中正確設(shè)置了 JAVA_HOME環(huán)境變量,這是保障SymmetricDS正常運(yùn)行的基礎(chǔ)前提。
步驟2:創(chuàng)建數(shù)據(jù)庫
安裝一個(gè)SymmetricDS支持的數(shù)據(jù)庫,常見的如MySQL、PostgreSQL、Oracle、SQL Server等。安裝完成后,需在該數(shù)據(jù)庫中創(chuàng)建相應(yīng)的數(shù)據(jù)庫模式以及所需的表結(jié)構(gòu),為后續(xù)的數(shù)據(jù)存儲(chǔ)與操作奠定基礎(chǔ)。
步驟3:配置節(jié)點(diǎn)
在SymmetricDS環(huán)境中,每個(gè)參與數(shù)據(jù)同步的數(shù)據(jù)庫均被視為一個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)的配置需在symmetric ds.properties文件中進(jìn)行定義。以下為一個(gè)具體的配置示例:
engine.name=my-node
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/mydb
db.user=root
db.password=root
sync.url=http://localhost:31415/sync/my-node
registration.url=http://localhost:31415/sync/hub
以下詳細(xì)說明上述 SQL 語句各自的作用:
- engine.name=my node:此語句的功能是為 SymmetricDS 實(shí)例賦予一個(gè)特定名稱。
- db.driver=com.mysql.cj.jdbc.Driver:該語句明確指定了用于連接 MySQL數(shù)據(jù)庫的JDBC驅(qū)動(dòng)程序。
- db.url=jdbc:mysql://localhost:3306/mydb:此語句用于指定數(shù)據(jù)庫的訪問路徑,即 URL。
- db.user=root 與 db.password=root:這兩條語句分別定義了訪問數(shù)據(jù)庫所需的憑證。
- sync.url:該語句用于定義數(shù)據(jù)同步的目標(biāo)地址,也就是此節(jié)點(diǎn)發(fā)送數(shù)據(jù)的目的地。
- registration.url:此語句指定了用于管理注冊(cè)的中心節(jié)點(diǎn)的 URL。
步驟4:?jiǎn)?dòng)SymmetricDS
若要啟動(dòng)SymmetricDS,需在解壓后的文件夾中執(zhí)行以下命令:
./sym_service start # On Linux/macOS
sym_service.bat start # On Windows
執(zhí)行此命令后,將啟動(dòng)SymmetricDS引擎,該引擎開始監(jiān)控配置的數(shù)據(jù)庫的更改。
定義同步規(guī)則
SymmetricDS的同步規(guī)則是其核心組件之一,這些規(guī)則明確了哪些數(shù)據(jù)變更需要被捕獲,并規(guī)定了數(shù)據(jù)在各個(gè)邊緣節(jié)點(diǎn)之間的路由方式。這些規(guī)則具有高度的可配置性,旨在精確界定數(shù)據(jù)在不同數(shù)據(jù)庫之間傳輸?shù)木唧w方式以及時(shí)機(jī)。
在進(jìn)行同步規(guī)則設(shè)置時(shí),可參考以下步驟:
步驟1:定義節(jié)點(diǎn)組
在SymmetricDS里,配置規(guī)則是作用于節(jié)點(diǎn)組的。這種方式在分布式環(huán)境中,能夠有效控制數(shù)據(jù)在不同節(jié)點(diǎn)間的流動(dòng)方式。
INSERT INTO SYM_NODE_GROUP (node_group_id, description)
VALUES ('Store', 'Store Node');
INSERT INTO SYM_NODE_GROUP (node_group_id, description)
VALUES ('Corp', 'Corp Node');
在此代碼示例中:
- Store組用于表征邊緣節(jié)點(diǎn)(例如,實(shí)際應(yīng)用中的門店數(shù)據(jù)庫)。
- Corp組用于代表中央核心節(jié)點(diǎn)。
步驟2:定義組鏈接
組鏈接的作用在于確定由哪個(gè)節(jié)點(diǎn)組發(fā)起數(shù)據(jù)交換同步操作。通過設(shè)置組鏈接,能夠清晰地界定兩個(gè)或多個(gè)節(jié)點(diǎn)組之間的關(guān)聯(lián)關(guān)系,進(jìn)而明確數(shù)據(jù)在這些節(jié)點(diǎn)組之間的流動(dòng)方式以及時(shí)機(jī)。
INSERT INTO SYM_NODE_GROUP_LINK (source_node_group_id, target_node_group_id, data_event_action)
VALUES ('Store', 'Corp', 'P'); // 'P' represents 'Push'
INSERT INTO SYM_NODE_GROUP_LINK (source_node_group_id, target_node_group_id, data_event_action)
VALUES ('Corp', 'Store', 'W'); // 'W' represents 'Wait for Pull'
在此處:
- Stores組向Corp節(jié)點(diǎn)執(zhí)行推送(‘P’)數(shù)據(jù)(例如將門店的銷售數(shù)據(jù)發(fā)送至總部)。
- Stores組處于等待狀態(tài),從Corp節(jié)點(diǎn)拉?。ā甒’)數(shù)據(jù)(例如接收總部下發(fā)的庫存更新信息)。
步驟3:為數(shù)據(jù)流定義路由器和觸發(fā)路由器
路由器基于特定規(guī)則(例如操作類型,如插入、更新、刪除等),對(duì)需要同步的數(shù)據(jù)進(jìn)行篩選。通過排除不必要的數(shù)據(jù)傳輸,路由器能夠確保只有必要的數(shù)據(jù)被準(zhǔn)確路由至正確的目的地。
INSERT INTO SYM_ROUTER (router_id, source_node_group_id, target_node_group_id, router_type,
sync_on_update, sync_on_insert, sync_on_delete)
VALUES('corp to store', 'corp', 'store', 'default ', 1, 1, 1);
INSERT INTO SYM_TRIGGER_ROUTER (trigger_id, router_id, initial_load_order)
VALUES('user', 'corp to store', '1');
上述代碼實(shí)現(xiàn)了以下功能:
- 定義了一個(gè)名為“corp to store”的路由器,其作用是將數(shù)據(jù)從Corp同步至Store。
- 選用 “default”路由器類型。
- “sync_on_update = 1” 表明Corp數(shù)據(jù)庫中的更新操作所產(chǎn)生的數(shù)據(jù)變化,都將被同步到Store。
- “sync_on_insert = 1” 意味著Corp中的插入操作數(shù)據(jù)會(huì)同步至 Store。
- “sync_on_delete = 1” 說明Corp里的刪除操作數(shù)據(jù)也會(huì)同步到Store。現(xiàn)在,我們將此路由器鏈接到一個(gè)觸發(fā)器:
INSERTINTO SYM_TRIGGER_ROUTER (trigger_id, router_id, initial_load_order)
VALUES('user','corp to store','1');
這樣一來,便能夠確保當(dāng)觸發(fā)器監(jiān)測(cè)到用戶表發(fā)生變更時(shí),相關(guān)數(shù)據(jù)會(huì)依據(jù) “corp to store” 規(guī)則進(jìn)行路由 。
步驟4:定義通道
通道用于對(duì)表中的數(shù)據(jù)進(jìn)行邏輯分組。通過這種方式,它能夠有效地組織和區(qū)分不同的數(shù)據(jù)流,進(jìn)而讓數(shù)據(jù)同步過程變得更加高效,并且使整個(gè)系統(tǒng)具備良好的可擴(kuò)展性。
INSERT INTO SYM_CHANNEL (channel_id, max_batch_size, max_batch_to_send, max_data_to_route,
enabled, batch_algorithm, description)
VALUES ('users', '10000', '100', '500000', '1', 'default', 'user data');
此段代碼實(shí)現(xiàn)了以下功能:
- 定義了一個(gè)名為“users”的通道。
- 設(shè)定將數(shù)據(jù)按照每次同步10,000行的規(guī)模進(jìn)行分批處理。
- 通過限制每次同步的批次數(shù)量為100個(gè),且每條路由的數(shù)據(jù)記錄數(shù)為500,000條,以此來保障同步效率。
步驟 5:定義表觸發(fā)器
定義表觸發(fā)器在整個(gè)數(shù)據(jù)同步流程中具有重要作用,其主要功能是對(duì)數(shù)據(jù)庫表中的數(shù)據(jù)更改進(jìn)行檢測(cè)與管理。表觸發(fā)器如同事件監(jiān)聽器一般,時(shí)刻追蹤源數(shù)據(jù)庫內(nèi)發(fā)生的變化。若系統(tǒng)中未設(shè)置表觸發(fā)器,那么系統(tǒng)將無法確定何時(shí)啟動(dòng)同步更改操作,也無法明確具體需要同步哪些數(shù)據(jù)。
INSERT INTO SYM_TRIGGER (trigger_id, source_table_name, channel_id)
VALUES ('user', 'user', 'user');
此段代碼負(fù)責(zé)跟蹤用戶表中的變動(dòng)情況。一旦有更改發(fā)生,這些更改數(shù)據(jù)將通過 “users” 通道進(jìn)行路由傳輸。
步驟 6:測(cè)試數(shù)據(jù)同步
若要對(duì)數(shù)據(jù)同步功能進(jìn)行測(cè)試,可向源數(shù)據(jù)庫中插入若干測(cè)試數(shù)據(jù):
INSERT INTO user (id, name, email)
VALUES (1, 'Alice', 'alice@example.com');
隨后,運(yùn)行 SymmetricDS 同步操作,查看該記錄是否會(huì)在目標(biāo)數(shù)據(jù)庫中出現(xiàn)。
步驟 7:監(jiān)控與故障排查
可查看 logs/wrapper.log 文件中的日志信息。若某個(gè)批次的同步操作失敗,可通過執(zhí)行以下 SQL 查詢來檢查錯(cuò)誤情況:
SELECT * FROM SYM_OUTGOING_BATCH WHERE ERROR_FLAG = 1;
執(zhí)行上述查詢后,系統(tǒng)將獲取出現(xiàn)錯(cuò)誤的批次ID(BATCH_ID)。接下來,運(yùn)行以下SQL語句,即可獲取失敗批次的具體數(shù)據(jù):
SELECT * FROM SYM_DATA WHERE data_id in (select failed_data_id from sym_outgoing_batch WHERE batch_id='XXXXX' and node_id='YYYY');
SymmetricDS 在邊緣計(jì)算中的優(yōu)勢(shì)
在邊緣計(jì)算場(chǎng)景中,數(shù)據(jù)在更接近源頭的位置(例如銷售點(diǎn)系統(tǒng)、物聯(lián)網(wǎng)設(shè)備、傳感器等)進(jìn)行處理。在此背景下,SymmetricDS 展現(xiàn)出諸多優(yōu)勢(shì),使其成為一款強(qiáng)大的數(shù)據(jù)同步工具。
- 低延遲:SymmetricDS支持在本地進(jìn)行數(shù)據(jù)處理,僅需定期與中央服務(wù)器進(jìn)行同步。這種方式有效減少了在云環(huán)境中進(jìn)行實(shí)時(shí)數(shù)據(jù)處理時(shí)所產(chǎn)生的延遲,確保數(shù)據(jù)能夠快速響應(yīng)業(yè)務(wù)需求。
- 帶寬優(yōu)化:該工具在數(shù)據(jù)同步過程中,僅傳輸數(shù)據(jù)的增量更改部分,而非整個(gè)數(shù)據(jù)集。這一特性極大地降低了持續(xù)數(shù)據(jù)傳輸?shù)男枨?,進(jìn)而有效節(jié)省了網(wǎng)絡(luò)帶寬資源,提升了系統(tǒng)的整體運(yùn)行效率。
- 容錯(cuò)能力:在邊緣計(jì)算環(huán)境中,網(wǎng)絡(luò)連接往往不穩(wěn)定,甚至可能出現(xiàn)間歇性中斷的情況。SymmetricDS 具備強(qiáng)大的容錯(cuò)能力,即便在連接斷開的狀態(tài)下,依然能夠?qū)崿F(xiàn)數(shù)據(jù)復(fù)制。這一關(guān)鍵特性使其在網(wǎng)絡(luò)連接不可靠的場(chǎng)景中表現(xiàn)出色,同時(shí)也為離線數(shù)據(jù)處理提供了有力支持,確保業(yè)務(wù)流程不受網(wǎng)絡(luò)問題的過多干擾。
- 可擴(kuò)展性:SymmetricDS具備良好的擴(kuò)展性,能夠輕松擴(kuò)展至大量的邊緣節(jié)點(diǎn),并支持復(fù)雜的系統(tǒng)架構(gòu)。即使在系統(tǒng)不斷添加更多功能的情況下,依然能夠確保性能的穩(wěn)步提升,滿足業(yè)務(wù)規(guī)模增長(zhǎng)和復(fù)雜度增加的需求。
應(yīng)用案例:SymmetricDS 如何解決零售商的實(shí)時(shí)數(shù)據(jù)難題
假定有一家零售連鎖企業(yè),在某一國(guó)家、州或特定地區(qū)擁有眾多門店。每家門店均配備獨(dú)立的本地銷售點(diǎn)(POS)系統(tǒng)、庫存系統(tǒng)以及用于客戶交互的數(shù)據(jù)庫。
總部在制定關(guān)鍵決策時(shí),高度依賴從所有門店收集的實(shí)時(shí)信息。這些決策涵蓋庫存管理、銷售報(bào)告生成、客戶活動(dòng)監(jiān)控以及促銷活動(dòng)策劃等多個(gè)方面。因此,實(shí)現(xiàn)低延遲地同步來自眾多門店的數(shù)據(jù)至關(guān)重要,這是確保庫存數(shù)據(jù)準(zhǔn)確、交易記錄精準(zhǔn)以及門店運(yùn)營(yíng)協(xié)調(diào)順暢的關(guān)鍵所在。
在零售業(yè)中,各門店之間庫存不一致是較為常見的問題之一。例如,當(dāng)某家門店售出一件商品時(shí),其庫存系統(tǒng)必須即刻更新,以避免其他門店出現(xiàn)超售或缺貨的情況。然而,傳統(tǒng)的數(shù)據(jù)同步方式往往容易引發(fā)延遲或出現(xiàn)錯(cuò)誤,從而在部分門店造成缺貨或者導(dǎo)致庫存積壓的情況。
SymmetricDS為所有門店與中央系統(tǒng)之間實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)同步提供了更為可靠的解決方案。無論何時(shí),只要有任何一家門店完成商品銷售操作,SymmetricDS便會(huì)迅速更新本地門店系統(tǒng)以及中央數(shù)據(jù)庫中的庫存數(shù)據(jù)。通過這種方式,能夠確保其他門店始終獲取到最新的庫存信息,有效避免網(wǎng)絡(luò)環(huán)境下庫存不一致問題的發(fā)生。
結(jié)論
SymmetricDS內(nèi)置一套強(qiáng)大的功能集合,能夠?qū)吘売?jì)算環(huán)境進(jìn)行優(yōu)化。該工具聚焦于增量數(shù)據(jù)同步、數(shù)據(jù)壓縮以及異步復(fù)制等關(guān)鍵技術(shù),在延遲控制、帶寬利用以及容錯(cuò)能力等方面均展現(xiàn)出卓越的性能提升。
在實(shí)際應(yīng)用場(chǎng)景中,邊緣計(jì)算環(huán)境中引入SymmetricDS能夠顯著提高分布式應(yīng)用的運(yùn)行效率。它不僅賦予系統(tǒng)更高的可擴(kuò)展性,還能助力實(shí)現(xiàn)更快速的決策制定過程,同時(shí)有效降低對(duì)中央服務(wù)器的依賴程度。
借助本文所探討的方法,邊緣設(shè)備在運(yùn)行過程中具備高度自主性,能夠成功地與主服務(wù)器完成同步操作。即便處于業(yè)務(wù)高峰等復(fù)雜條件下,依然可以維持高性能的數(shù)據(jù)處理與傳輸輸出,為各類復(fù)雜業(yè)務(wù)場(chǎng)景提供堅(jiān)實(shí)可靠的技術(shù)支持。
譯者介紹
劉濤,51CTO社區(qū)編輯,某大型央企系統(tǒng)上線檢測(cè)管控負(fù)責(zé)人。
原文標(biāo)題:Data Synchronization for Edge Computing with SymmetricDS,作者:Divya Valsala Saratchandran