<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kxbin
    成功留給有準備的人
    posts - 10,  comments - 35,  trackbacks - 0

    在分布式環境中,處理并發問題就沒辦法通過操作系統和JVM的工具來解決,那么在分布式環境中,可以采取一下策略和方式來處理:

    • 避免并發
    • 時間戳
    • 串行化
    • 數據庫
    • 行鎖
    • 統一觸發途徑

    避免并發

    在分布式環境中,如果存在并發問題,那么很難通過技術去解決,或者解決的代價很大,所以我們首先要想想是不是可以通過某些策略和業務設計來避免并發。比如通過合理的時間調度,避開共享資源的存取沖突。另外,在并行任務設計上可以通過適當的策略,保證任務與任務之間不存在共享資源,比如在以前博文中提到的例子,我們需要用多線程或分布式集群來計算一堆客戶的相關統計值,由于客戶的統計值是共享數據,因此會有并發潛在可能。但從業務上我們可以分析出客戶與客戶之間 數據是不共享的,因此可以設計一個規則來保證一個客戶的計算工作和數據訪問只會被一個線程或一臺工作機完成,而不是把一個客戶的計算工作分配給多個線程去 完成。這種規則很容易設計,例如可以采用hash算法。

    時間戳

    分布式環境中并發是沒法保證時序的,無論是通過遠程接口的同步調用或異步消息,因此很容易造成某些對時序性有要求的業務在高并發時產生錯誤。比如系統A需要把某個值的變更同步到系統B,由于通知的時序問題會導致一個過期的值覆蓋了有效值。對于這個問題,常用的辦法就是采用時間戳的方式,每次系統A發送變更給系統B的時候需要帶上一個能標示時序的時間戳,系統B接到通知后會拿時間戳與存在的時間戳比較,只有當通知的時間戳大于存在的時間戳,才做更新。這種方式比較簡單,但關鍵在于調用方一般要保證時間戳的時序有效性。

    串行化

    有的時候可以通過串行化可能產生并發問題操作,犧牲性能和擴展性,來滿足對數據一致性的要求。比如分布式消息系統就沒法保證消息的有序性,但可以通過變分布式消息系統為單一系統就可以保證消息的有序性了。另外,當接收方沒法處理調用有序性,可以通過一個隊列先把調用信息緩存起來,然后再串行地處理這些調用。

    數據庫

    分布式環境中的共享資源不能通過Java里同步方法或加鎖來保證線程安全,但數據庫是分布式各服務器的共享點,可以通過數據庫的高可靠一致性機制來滿足需求。比如,可以通過唯一性索引來解決并發過程中重復數據的生產或重復任務的執行;另外有些更新計算操作也盡量通過sql來完成,因為在程序段計算好后再去更新就有可能發生臟復寫問題,但通過一條sql來完成計算和更新就可以通過數據庫的鎖機制來保證update操作的一致性。

    行鎖

    有的事務比較復雜,無法通過一條sql解決問題,并且有存在并發問題,這時就需要通過行鎖來解決,一般行鎖可以通過以下方式來實現:

    • 對于Oracle數據庫,可以采用select ... for update方式。這種方式會有潛在的危險,就是如果沒有commit就會造成這行數據被鎖住,其他有涉及到這行數據的任務都會被掛起,應該謹慎使用
    • 在表里添加一個標示鎖的字段,每次操作前,先通過update這個鎖字段來完成類似競爭鎖的操作,操作完成后在update鎖字段復位,標示已歸還鎖。這種方式比較安全,不好的地方在于這些update鎖字段的操作就是額外的性能消耗

    統一觸發途徑

    當一個數據可能會被多個觸發點或多個業務涉及到,就有并發問題產生的隱患,因此可以通過前期架構和業務設計,盡量統一觸發途徑,觸發途徑少了一是減少并發的可能,也有利于對于并發問題的分析和判斷。

    posted on 2011-10-13 16:05 kxbin 閱讀(318) 評論(0)  編輯  收藏 所屬分類: java基礎
    你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經常在別人面前批評某人,其實潛意識中是想接近他。

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(5)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    J2EE

    java技術網站

    Linux

    平時常去的網站

    數據庫

    電影網站

    網站設計

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 老司机免费午夜精品视频| 亚洲精品无码国产片| 最近更新免费中文字幕大全| 亚洲AV无码专区日韩| 国产亚洲美女精品久久| 免费二级毛片免费完整视频| 亚洲av片在线观看| 亚洲色一色噜一噜噜噜| 国产高潮流白浆喷水免费A片 | 夜夜春亚洲嫩草影院| a级在线观看免费| 久久国产亚洲电影天堂| 亚洲人成在线免费观看| 国产成人精品日本亚洲专| 日本免费v片一二三区| 有色视频在线观看免费高清在线直播 | 久久精品7亚洲午夜a| 国产亚洲精彩视频| 亚洲性在线看高清h片| 中文无码成人免费视频在线观看| 亚洲AV日韩AV鸥美在线观看| 最近免费中文字幕大全免费版视频| 亚洲国产成人精品无码区在线网站| 成年18网站免费视频网站| 国产精品亚洲片在线花蝴蝶| 国产成人精品久久亚洲高清不卡 | 久久免费视频99| 亚洲日韩精品国产一区二区三区| 亚洲福利视频一区二区| 一级毛片免费观看不卡的| 亚洲 日韩 色 图网站| 亚洲精品国产电影| 免费无遮挡无码永久视频 | 精品亚洲一区二区| 国产高清不卡免费在线| 羞羞视频在线免费观看| 亚洲一区中文字幕久久| 色www永久免费视频| 人妻免费一区二区三区最新| 亚洲久悠悠色悠在线播放| 奇米影视亚洲春色|