分布式概念
要理解分布式系統,主要需要明白一下2個方面:
1.分布式系統一定是由多個節點群組成的系統。
其中,節點指的是電腦伺服器,而且這些節點一般不是孤立的,而是互連的。
2.這些連通的節點上部署了我們的節點,並且相互的操作會有協同。
分布式系統對於使用者而言,他們面對的就是一個伺服器,提供使用者需要的服務而已,而實際上這些服務是通過背後的眾多伺服器組成的一個分布式系統,因此分布式系統看起來像是一個超級電腦一樣。
例如淘寶,平時大家都會使用,它本身就是一個分布式系統,我們通過瀏覽器訪問淘寶網站時,這個請求的背後就是一個龐大的分布式系統在為我們提供服務,整個系統中有的負責請求處理,有的負責儲存,有的負責計算,最終他們相互協調把最後的結果返回並呈現給使用者。
分布式之資料庫訪問 隨著網站的訪問量越來越大,資料量也越來越多,系統對資料庫的各種操作越來越頻繁,導致單機的資料庫伺服器越來越慢,資料庫壓力越來越大,那麼這個時候就需要對資料庫層進行最佳化,目前可以從幾個方面進行下手: 1.最佳化應用,看看是否有不必要的壓力給了資料庫(應用的最佳化)。這個減壓作用相對小。 2.看看有沒有通過引入緩衝、搜尋引擎等地中介軟體來對資料庫進行檢驗。這個對局部資料減壓作用大,但是對整體上作用不是很大。 3.最後一種思路就是,把資料庫的資料和訪問轉移到多台資料庫上,分開支援,這也是最優的減壓方式,下面主要介紹這種方式:
1.資料的拆分的2種方式及帶來的影響 a.垂直分割 垂直分割就是把一個資料庫中不同業務單元的資料分到不同的資料庫裡面。比如使用者相關資訊放到一個庫中,訂單先關資料放到另一個庫中,費用相關資訊放到另外一個資料庫中等等,這種通過劃分不同的庫的方式就是資料的垂直劃分方式。 帶來的影響: (1) 單機的事務ACID特性的保證被打破了。資料到了多機後,原來在單機通過事務進行的處理邏輯會收到很大的影響。我們面臨的選擇是,要麼放棄原來的單機事務,修改實現。要麼引入分散式交易機制。 (2) 一些聯表操作會變得比較困難,因為資料可能在不同的資料庫中了,所以不能很方便的利用資料庫自身的join,需要應用或者其他方式來解決。 (3) 靠外鍵去進行約束的情境會收到影響。
b.水平分割 水平分割是根據一定的規則把同一業務單元的資料拆分到多個資料庫中。 即,比如將訂單相關的庫,部署到多台伺服器中,每台伺服器中的訂單庫的表結構完全一樣,但是不同的伺服器中的訂單庫中的資料分別存放了不同的訂單相關資料。 帶來的影響: 1.同樣具有與垂直劃分帶來的三種影響。 2. 依賴單庫的自增序列產生唯一id會受影響。 3.針對單個邏輯意義上的表的查詢要跨庫查詢了。 總之,這2種方式都是將原來一個資料庫中的資料拆分到了不同的資料庫中,所以原來單機資料庫可以支援的特性現在未必支援了。而且資料庫的拆分給應用帶來的影響還是比較明顯,這裡只是列出其中的幾部分,比如預存程序,觸發器等也需要改寫才能完成相應的工作。 2.資料的拆分帶來的影響對應的解決方案 ......