999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

微服務軟件混合版本的數據同步方案設計

2021-11-27 00:15:30宗國福張歡許雄
魅力中國 2021年20期

宗國福 張歡 許雄

(西北工業大學軟件學院,陜西 西安 710129)

一、微服務介紹

微服務架構風格自2014 年開始推廣后,六年期間出現了無數優秀成果。目前學術界對微服務的架構研究分為三類:一種是研究單體應用遷移到微服務架構應避免的陷阱以及相對應采取的策略[1]。第二種是微服務架構的通用研究。第三種是在微服務架構實際應用中遇到的問題及優化,如H.Song 等人利用侵入式微服務實現SaaS 的深度定制。

微服務的一個重要特點是通常各個微服務的數據存儲都是獨立的。每個服務都在單獨的進程中運行并且可以獨立部署,其配置、數量和服務地址都是不同的。作為一個分布式且松散的架構,微服務在整個團隊中更改其中某個模塊不會破壞整個應用程序。

二、數據同步相關概念

(一)異構數據庫

異構數據庫最簡單的理解是多個數據庫系統的集合,能實現不同數據庫間數據的共享和透明訪問。其異構性可分為多個方面,而本文所提出的異構數據庫是指:多種數據庫間所使用的數據模型、數據模式、數據表結構以及數據類型的差異。

(二)數據同步

業界對于數據同步沒有嚴格的定義。文獻中指出:“數據同步是一種允許在不同計算機上的多個數據庫之間保持數據庫一致性的技術手段”[4]。在SyncML 協議的白皮書上寫道:“數據同步是一個使得兩個集合中的數據看起來一致的處理過程”。而本文針對課題對數據同步下定義:數據同步是指在不同版本數據庫間保持數據一致性的技術手段。

三、數據同步的設計

(一)數據同步方案選擇

目前業界針對數據同步的研究現狀,共有三種:1.使用數據庫廠商提供的同步軟件。2.基于數據庫文件導入導出功能同步數據。3.獲取數據庫增量數據進行同步。相比全量同步,獲取到的增量數據是源源不斷的,這樣既減少了網絡帶寬的消耗,也減輕了用戶的處理負擔,同時也是異構數據庫間同步的最優方案。

(二)數據同步模型

數據同步是把數據從一個數據庫傳遞到另外一個數據庫中,中間的通道則是連接源端和目標端數據庫的媒介。數據同步流程可以描述為:數據源作為數據同步的源端數據庫,通過操作解析源數據庫的日志文件,轉換為便于數據交換的統一格式,并序列化為二進制格式數據發送到操作隊列中。操作復現模塊從操作隊列中取出日志解析結果,按照其順序在目標數據庫中復現,實現最終的數據同步。

四、數據同步的實現

(一)變更數據的獲取

數據庫會記錄下對數據的每一次操作,并存檔下來形成日志文件,以便于對數據的維護和回檔,并提供數據修改的可靠證明。Mysql 在主從復制時,利用的就是數據庫日志文件。主數據庫會按照一定的協議,將記錄下來的日志文件推送到從數據庫中,從數據庫按照日志文件進行操作。

數據庫日志文件解析采用行模式,不僅能監控每條記錄的更改情況,還能讓數據處理的連續性更好,從而降低平均時延。使用了行模式的日志文件由事務組成,在被記錄下來的每一條具體操作語句前,帶有###標識,合理利用這些標識,可以方便地解析出日志文件的每個操作動作。

Canal 是阿里巴巴公司為解決跨機房同步數據而衍生出的項目,可以用作解析Mysql數據庫的Binlog 文件。Canal 內部可以劃分為4 個子模塊:Parser、Sink、Store、Meta。Parser 用于與源端數據庫建立連接,獲取日志文件進行解析。Sink 則負責對解析結果進行加工處理。Store 存儲解析結果,Meta 是對解析出來的結果進行交付統籌。

(二)變更數據的分發與消費

異構數據庫間的性能往往有所差異,日志解析速度和寫入端數據庫的速度不會完全匹配。因此,可以設置緩存區來兼容兩端解析和寫入的速度。當出現數據同步錯誤時,只需要回退程序,重新消費再次入庫即可。

考慮到源數據庫操作有一定順序,因此緩存區的選取隊列這一數據結構來實現。另外,源數據庫產生的數據有著較大的吞吐量,而單機版的隊列吞吐量較小。因此選取分布式隊列Kafka 來實現數據緩存的作用。

要實現數據的均衡分發,最優方案是消費者數量與隊列分區數一致??紤]到數據同步過程中的數據丟失等異常情況,采用Hash 值分配選區的方法,可以保證同表數據在同一分區內,即對每條數據表名進行Hash 計算取模分配。該方案可以保證出現同步錯誤時受影響的數據會集中在特定分區,回滾操作范圍也能保證在特定分區。但不同表之間的數據量仍有差異,依然會出現數據分配不均勻的問題。假設將m 張表的總數據均勻分配到N 分分區,若不考慮相同表在同一分區,只需均分即可。每個分區的數據量相等,均為:

由于需要保證同一張表數據在同一分區,此時最優方案與均值肯定存在偏差,偏差越小,數據分布越均勻。與最優方案的偏差可以定義為:

其中是分區j 的數據量,要保證最小,只需要保證最小即可,方法如下:

1.將m 張表的數據量從小到大排序,將最大的N 張表分配到N 個選??;

2.新表則分配到數據量最小的分區中,以此類推直到所有表分配完畢。

在分配過程中,每次新的分配都會優先選擇數據量最小的分區,即可減少和的偏差,從而達到均衡分發的目的。

(三)變更數據的復現

增量數據從源端數據庫的日志文件中被解析出來后,轉換為統一格式的操作信息,均勻分發到分布式隊列中進行緩存,等待消費者消費。當操作復現速度高于解析速度時,數據能夠及時被處理,不容易擠壓在隊列中。

為盡可能提高操作復現速度,本文提出了操作合并優化方法。但首先需要數據庫中的表都有主鍵,保證唯一性的拘束。因為數據同步只需要數據一段時間內的最終狀態,所以可對相同主鍵值的先后操作進行合并,減少需要執行的操作,從而增加單位時間內執行的操作數。又因為通過日志解析有著該次操作的全部字段的數值,合并操作后不會造成某些字段值的丟失。

采用操作合并優化,若數據源在一段時間內對某一主鍵值的記錄頻繁操作,在目標端中會被簡化為一次操作。該主鍵值的中間狀態被丟棄掉,處理量大大減少,執行效率增加,同步效率得到大幅提升。

操作復現模塊包括監聽器、緩存區、操作執行。監聽器負責從隊列中拉取數據,一個進程的不同監聽器都為同一個消費者組。緩存區操作復現模塊中的緩存區,和分布式隊列構成二級緩沖結構。操作執行負責從緩存區中取出緩存塊,把緩存塊中的數據轉換為操作語句,在數據庫中還原操作。

五、結語

隨著業務需求的變化,初始的底層數據結構不一定滿足現要求。得益于微服務技術的發展,可通過單一服務的升級提升工作效率。但為了滿足用戶對不同版本軟件的使用情況,數據庫版本間的同步問題就顯得格外重要。

本文基于Mysql 數據庫日志,提出混合版本下數據庫的同步方案,此方案分為三步:操作解析、數據分發、操作復現。

數據庫采用Mysql 的行模式來記錄日志獲取增量數據。操作解析后,增量數據會被分發到緩存區中。本文提出的數據均衡分發算法,保證同一個表數據在同一分區中,從而降低同步出錯需要數據回滾而造成的影響。同時,也使得數據在不同分區中分布均勻。緩存區中對數據進行消費后,在目標端進行操作復現。操作復現采用操作合并優化,盡可能提高操作復現的速度。利用數據庫主鍵唯一性約束,合并主鍵相同的操作,從而減少實際需要執行的操作,提升效率。

通過該設計實現了服務多版本間的數據同步問題,既滿足了業務需求又能讓不同版本的用戶產品使用過程中無感知。吉的美好祈愿,將武門神形象以及故宮貓與創意賀卡進行結合,突顯武門神威武的形象以及故宮貓的憨態可掬,也有利于故宮博物館文化的傳承與發展。

主站蜘蛛池模板: 久久婷婷国产综合尤物精品| 国产剧情国内精品原创| 国产白浆在线观看| 综合人妻久久一区二区精品| 欧美特黄一免在线观看| 乱色熟女综合一区二区| 自慰网址在线观看| 久久无码免费束人妻| 无码人中文字幕| 精品国产www| 亚洲欧美国产五月天综合| 毛片一级在线| 国产欧美视频在线观看| 99热这里只有成人精品国产| 久草视频精品| 国产在线视频自拍| 日本午夜视频在线观看| 亚洲国产亚洲综合在线尤物| 日韩精品一区二区深田咏美| 久久免费观看视频| 免费无码在线观看| 久久九九热视频| 精品少妇人妻av无码久久| 麻豆国产在线不卡一区二区| 一本大道视频精品人妻 | 91精品国产91久久久久久三级| 欧美第九页| 久久永久精品免费视频| 综合人妻久久一区二区精品| 全部免费毛片免费播放| 亚洲精品国偷自产在线91正片| 99在线视频免费| 久久综合九九亚洲一区| 色噜噜综合网| 中文字幕2区| 国产在线精彩视频论坛| 国产大全韩国亚洲一区二区三区| 日韩资源站| 麻豆国产在线观看一区二区| 男人天堂亚洲天堂| 亚洲AV电影不卡在线观看| 99热这里只有成人精品国产| 国产 在线视频无码| jizz亚洲高清在线观看| 中文字幕1区2区| 本亚洲精品网站| 国产91视频免费| 国产一级在线播放| 国产精品自在在线午夜区app| 女人毛片a级大学毛片免费| 日韩欧美91| 香蕉视频在线观看www| 国产人妖视频一区在线观看| 国产幂在线无码精品| 国产精品国产三级国产专业不| 欧美亚洲第一页| 国产成人精品18| 91丨九色丨首页在线播放| 亚洲人成人伊人成综合网无码| 五月综合色婷婷| 久久99蜜桃精品久久久久小说| 高清色本在线www| 波多野结衣视频一区二区 | 亚洲黄色高清| 99人妻碰碰碰久久久久禁片| 亚洲 欧美 偷自乱 图片| 99久久国产精品无码| 国产精品极品美女自在线| 国产日本一区二区三区| 色综合久久无码网| 免费观看成人久久网免费观看| 尤物亚洲最大AV无码网站| 久草视频精品| 中文字幕在线免费看| 国产白浆在线| 手机精品视频在线观看免费| 国产一级毛片在线| 欧美一区二区精品久久久| 五月天福利视频| 秋霞午夜国产精品成人片| 免费国产不卡午夜福在线观看| h网站在线播放|