分布式系統若干經驗總結

2021-06-28 07:25:17 字數 1096 閱讀 9900

session方面

tomcat自帶的session,不能解決跨系統的問題。

要麼把session和redis結合,所有系統統一使用乙個redis上的session。

要麼,根據cookie手動實現session,把session存到redis中。

我覺得分布式系統的session關鍵是,維護乙份資料並且多個系統都可以拿到。至於session是怎麼實現的,不是很重要。

鎖的幾種方式

mysql:select for update 預設等待50s

oracle:select for update no wait可以不用等待。

update status=newstatus where status=oldstatus (變種,維護乙個oldstatus欄位:update status=newstatus where oldstatus=oldstatus)

帶條件更新,不能強制更新,是一種不錯的思路。

select count(*)會鎖表。

like '303578599%'可以走索引。

like '%303578599%' 不走索引,全表掃瞄。

可以使用explain等分析sql語句的執**況。

目前,關於效能優化方面,個人專案的需求還不是很大。

關於事務和鎖,需要根據實際需求,量身定製。

就目前咱們的專案來說,事務和鎖都直接支援在分布式環境,比較小巧,成本較低。

事務和鎖應該怎麼設計,更多取決於自己的業務,業務層面和技術層面都應該考慮。

同步與鎖,目前主要用了3種技巧

redis埋乙個快取,setifabset,實現分布式鎖。但是,專案中有bug,還需要分析。

select for update需要在事務環境下。

update status=newstatus where status=oldstatus,可以解決一定程度上的併發更新問題,防止狀態推送的重複更新。

事務的一些場景

1個事務,比如支付和接收款項,是在乙個事務中。

2個事務,回款相關的更新狀態在乙個事務,給多個使用者賬戶回款,可以允許部分出錯。只要記下回款失敗的,下次手動或自動補上就行了。

比較複雜一點的是,大的事務裡包含了多個事務。

分布式系統總結

總結 服務等級協議 分布式系統指標 cap定理 可用性 準確性 系統容量 延遲 前面提到用sla評估分布式系統,下面說下分布式系統的另外幾個指標 可擴充套件性 一致性 永續性 水平擴充套件,就是在現有系統增加機器節點 在日常運維中水平擴充套件操作簡單,並且保證了系統的可用性,但是無節制增加機器數量也...

系統設計經驗總結

極簡原則 夠用就好原則。設計世界上有兩類人,一種喜歡把事情越做越複雜 別人有的功能我要全有,也許是個賣點,單不一定被多數人接受 一種喜歡追求極致 如 喬幫主 蘋果產品持續有這麼多的粉絲,持續購買,對於大部分使用者來說外觀精緻,操作簡捷容易上手。商業成功原則 設計的好壞,最終其實只有乙個,市場是否認可...

分布式系統

分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...