跨庫事務解決方案

2021-07-16 23:40:29 字數 837 閱讀 4363

1 考慮使用jta等支援分布式事務的事務管理器

這種方案的優勢就是直接有現成的解決方案,一般的j2ee伺服器都提供了jta的相關的實現。比較明顯的問題就是解決方案太重量級。一般jta除了伺服器要支援,對應的資料庫服務廠商一般也要提供相應的商業支援,主要是提供基於 xaresource jdbc驅動,這一些商業上的支援,部分是需要付費的。而且使用xa 資料庫驅動,本身可能導致一些潛在的問題,尤其是基於不同的資料庫廠商的時候。而xa是基於兩階段提交協議,事務管理器為了完成乙個事務,需要多次和資料庫通訊,效率上比較低。

2 考慮使用資料庫自身的資料同步機制

如果新老庫的結構基本一樣,這種方案還是比較靠譜的。也是比較簡單的方案。這種方案的侷限性也再次。在本專案中,新庫不是乙個物理庫,而是多個物理庫,而老庫是乙個物理庫。如果要用資料庫自身的同步機制,涉及到多個庫和乙個庫之間的資料複製。同時由於分表的方案也不一樣,導致兩邊做乙個對映的配置,而這個需要在資料庫層面進行,邏輯相當的複雜,解決方案成本也比較高。相當於把重要的分庫分表的邏輯在資料庫這一層重新實現了乙份。

其實這個也帶來乙個維護問題,一旦我們覺得新系統已經足夠穩定。應用程式可以之間在寫入庫進行切換,把老庫的邏輯切掉,從而實現了只寫新庫的需求。整個過程也不需要進行再次發布。而資料庫的方案則需要停掉指令碼,在多個地方進行配置。

3 在old庫存放相同的兩張模型表,一張表用於old庫的持久化表,另外一張作為臨時表,主要是作為需要同步到到新庫的資料。如果已經同步到新庫,就刪除。如果沒有同步到新庫就同步到新庫。這個過程採用定時機制,每分鐘定時提取臨時表一定資料量的資料,批量匯入到新庫。通過努力重試,來保證一致性。而新庫則需要保證冪等性,保證資料只會同步過一次。一般情況下,則是通過資料特徵識別符號來識別,這個一般都是資料的唯一性主鍵。

跨域解決方案

因為瀏覽器出於安全考慮,有同源策略。也就是說,如果協議 網域名稱或者埠有乙個不同就是跨域,ajax 請求會失敗。那麼是出於什麼安全考慮才會引入這種機制呢?其實主要是用來防止 csrf 攻擊的。簡單點說,csrf 攻擊是利用使用者的登入態發起惡意請求。也就是說,沒有同源策略的情況下,a 可以被任意其他...

跨域解決方案

瀏覽器端的同源策略 如果兩個頁面的協議,埠和網域名稱中的其中任意乙個不相同,它們就是不同源的,瀏覽器會限制他們之間的資源互動 跨域 跨域的安全限制只針對瀏覽器,伺服器是沒有跨域的安全限制的 原理 由於伺服器沒有跨域限制,所以在需要跨域訪問時,在中間設定乙個中間層 舉例 192.168.10.1 80...

跨域解決方案

後端解決跨域的主要方式是,通過在響應頭中設定相關的跨域字段,用於告訴瀏覽器允許跨域請求資源。在前後端分離的場景中,登入頁面存在後端伺服器中,當登入成功後,需要發起跳轉請求,跳轉至前端首頁的情況。nginx響應頭相關配置 可指定匹配路徑,並不一定需要在location 下配置 在前後端分離的場景中,由...