天天看點

C#.NET 權限管理系統元件 - 大資料讀寫分離實作的例子

  當web伺服器的每天的通路量超過10萬ip時對伺服器主機的性能要求就非常高了,而且這些通路量又不是平均分布在24個小時裡,往往有一個集中的通路高峰,晚上伺服器的通路量又很低甚至是深夜連續好幾個小時沒通路量!

   例如我們平時維護的網站的日平均通路量是30萬ip、通路高峰時并發的使用者量非常大,資料庫主機的壓力非常大,雖然我們采取了分庫措施,但是有些大表、核 心業務表的通路壓力又非常大,例如有同時有1千個使用者在讀取資料庫又同時這1千個使用者在寫入資料庫,往往讀取的次數比寫入的更多一些。

   1:購買更好的伺服器硬體提升性能(硬體性能越高價錢越高,這個是無止境的投資,而且閑置下來的伺服器有時候也無法發揮更好的作用,同時還需要購買相同配置的備份伺服器,以防止硬體突然損壞,是以這個代價不隻是購買1台就可以了,要購買2台才可以)。

   2:利用讀寫分離進行性能優化,例如資料庫的複制機制,把主資料庫複制出一份到另外一個伺服器上,寫入操作都寫主資料庫,讀取操作都從另外一個伺服器讀 取,這樣并不需要非常牛的伺服器,就可以把1千人同時讀取,同時又寫入的操作,分給2台伺服器來承擔。這樣主伺服器的壓力明顯可以減少了,性能下降也會明 顯得到改善。一台主機可能處理起來要接近當機了,2台主機來承擔這個壓力,可能2個主機都活得好好的,而且還可以承擔的更大的并發壓力了。

   3:資料庫的複制同步可以讓資料庫管理者來設定配置了,我們寫程式主要是改我們的源碼,原來的1個資料庫連接配接 UserCenterDbConnection讀寫在一起的修改一下,UserCenterWriteDbConnection(寫入)、 UserCenterReadDbConnection(讀取)的進行分離,當然我們的系統剛開始設計的時候就足夠健壯那就耗費1天2天就可以修改過來 了,再仔細測試一下就可以重新釋出了,讀寫分離就這麼搞定了,心裡舒坦了很多。

   4: 讀寫分離也不是那麼100%絕對的,主要目的是為了降低主伺服器的性能壓力,盡量把讀取操作集中在另外一個讀取的資料庫伺服器上,解放主伺服器;例如一個 操作需要馬上寫入伺服器,然後需要及時讀取到值的,也直接寫入讀取主伺服器就可以了,讀寫分離也是相對的,我們的主要目的是把主伺服器的并發通路壓力減 緩、提高主伺服器的資料處理性能。 

下圖是大資料讀寫分離的示意圖,做得非常好看,我喜歡

C#.NET 權限管理系統元件 - 大資料讀寫分離實作的例子

下面是資料庫連接配接到2個伺服器的配置方法,第一個是寫入的伺服器,第二個是讀取的伺服器。

C#.NET 權限管理系統元件 - 大資料讀寫分離實作的例子

這裡是連接配接2個伺服器的例子

C#.NET 權限管理系統元件 - 大資料讀寫分離實作的例子

下面是讀寫分離的伺服器上監控隻讀伺服器上的sql語句運作情況的例子抓圖

C#.NET 權限管理系統元件 - 大資料讀寫分離實作的例子

本文轉自 jirigala 51CTO部落格,原文連結:http://blog.51cto.com/2347979/1188403,如需轉載請自行聯系原作者