在園子里面雖然待的時間不久,不過也有一年有余了,遇到了問題,第一個想到的就是去園子里面借鑒一些前輩們的經驗,以免自己走彎路。漸漸的自己也有了一定的獨立處理問題的能力,大神們不要噴我是標題黨,標題是疑問,小弟不才,遇到了一些數據同步問題或是解決方案錯誤的麻煩,需要求助大神們,如果您不是趕時間,幫忙看完這篇文章,留上兩句言就可以了,小弟不勝感激。好了,不多扯淡了,趕快說正事。
1、項目介紹
下圖為目前項目的整體框架圖,大至如下:
這是一個winform系統,采用了.NET Framework3.5和SQL Server2008編寫與存儲。這是一個某車輛監控管理系統,分為前端采集車輛信息,然后存儲到后台數據庫服務器上,整個系統的大致流程是:前端采集的圖片數據,通過交換機統一接口,將數據傳入到負責存儲的中心服務軟件(以下簡稱為“服務軟件”),然后服務軟件將接收到的數據存入到數據庫中(數據庫為SQLServer2008),客戶端通過網絡去訪問數據庫的信息,進行檢索等一些操作。這是一個大至流程,上圖中有N個分中心,每個點都部署了一樣的系統及軟件,流程一樣,然后將分中心的數據同步到總的服務器上,主要同步的對象是從相機過來的照片(照片是轉換為二進制后存儲到數據庫某表中的)及一些相關數據,實現總點可以查看各個分點的數據信息。
2、目前問題
由於圖片是存儲在數據庫表中的,由數據量過大,平均一天有20萬左右的信息需要存儲,峰值每秒達到了15-20條左右的記錄,圖片壓縮后為150KB左右的高清圖,服務器為24*365天工作的,所以壓力比較大,目前的問題是服務器的磁盤IO出現了瓶頸(服務器采用了500G的硬盤做了磁盤陣列),服務器的連接通訊管道出現了擁堵,寫入操作超時。這種情況偶爾會發生。
3、個人的解決方案
經過研究發現,出現了該情況的最大問題在於服務器的磁盤IO出現了瓶頸,頻繁的寫操作,導致寫入操作超時,於是我們就對證下葯,解決磁盤IO的壓力,由於之前圖片是存儲在數據庫表中的,在占用了數據庫的大量空間的同時又減慢了客戶端訪問服務器的速度。有些時候不是所有的事情軟件都能解決的,我們對硬件進行一個升級,同時改變一下系統的存儲策略,把圖片單獨存儲,解決服務器的IO瓶頸,減輕服務器寫操作的壓力。
4、遇到的問題
上圖的方案貌似是可以解決問題,但是問題來了,如果更好的把分中心的數據同步到總服務器上(主要指圖片服務器),目前圖片保存的格式是:年月日文件夾/相機IP文件夾/照片編號.JPG 如何在保證了可以快速的同步圖片至總服務器的同時,又可以保證圖片數據的完整性,不會在同步過程中出現丟失或其它問題,曾經考慮過利用數據庫中記錄圖片的路徑,遠程訪問圖片信息,這樣倒省去了同步圖片的麻煩,可是效率過低,而且對網絡要求過高;另外想到的一種方法就是利用FTP進行圖片同步,自己寫同步代碼,定制同步機制。
5、求助
求助各位大神們,有遇到過類似問題或是有這方面經驗的,可以提一下自己的建議和看法,對於目前遇到的情況,不止是同步,包括這個解決方案的可行性給出一些意見和建議,在你們的不吝指教中,小弟或許會找到一些答案。
1、對上上述的方案,可否有更好的解決方案;
2、對於不同的方案,可否有更好的、詳細的解決辦法;
3、對於上述方案,關於存儲和同步是否有更好的意見和建議;
小弟在這里感謝各們園子里面的兄弟姐妹了,希望你們踴躍發言,多一個人多一份力量,看到了就說上兩句,留個言吧。小弟在線等留言,感謝了!