資料同步的一次經歷

2021-06-10 21:03:09 字數 1390 閱讀 6952

場景描述:在表中每秒產生一條資料切這張表中只有一條資料(即每秒的資料是進行刪除再新增的,所以主資訊表中只有一條),資料不進行累計。

1:通過網際網路同步每秒產生的資料到遠端。

2:實時顯示當前時間點資料。

3:報表查詢

實現:

所需服務:

服務端(資料獲取並推送端,接受客戶端已同步的資訊,然後將同步過的資料在快取表中進行刪除。)

客戶端(接受資料,並進行實時顯示,同步完成後將同步成功的資料主鍵資訊傳送到服務端進行快取刪除。)

服務推送模式:因為採用了web框架所以直接使用了spring的定時任務

(兩秒傳送一次資料,傳送資料為當前時間點未傳送的資料和乙個小時前已經傳送過的的資料,傳送過的資料快取表中會有傳送時間進行標示)。

傳送標示是為了考慮到有時候會有客戶端未開啟的原因,所以為了避免傳送不及時的資料浪費效率,就傳送當前未傳送的資料和乙個小時前的資料。

服務介面ws:

接受資料id集合進行快取資料進行刪除。

客戶端介面ws:

接受待同步資料並進行資料儲存

問題:資料同步沒問題,實時資料顯示資料會有延遲。

原因分析:

1:當服務端客戶端都連續開啟的時候是不會有資料積累的,

服務會沒兩秒傳送一次,此時資料庫中快取表中只有兩條資料,直接傳送給客戶端,客戶返回儲存的資料資訊,服務端直接刪除,這些操作會在兩秒鐘完成,   基礎是建

立在網路穩定和服務執行正常的情況下。

2:當客戶端關閉了很長一段時間

服務端會積累大量的資料,此時資料庫會傳送當前時間的資料和一小時前的資料,在大量的資料積累的情況下,此次服務程式執行會在兩秒的基礎上有很長時間延遲(大量資料積累造成),

等查詢好資料並組裝好資料報傳送(到此時間點已經耗費了一定的時間),資料到了客戶端之後會進行資料解析,並執行儲存(從資料到客戶端並進行解析儲存又進行了時間的消耗),

儲存完之後會前台實時程式進行查詢,此時前台的資料更新時間會在服務端和客戶端的時間消耗之後進行的,所以在看到的是兩秒的資料變更,但真正的實時時間是超過兩秒的。

3:服務端關閉了一段時間

客戶端檢視不了實時資料,並沒有獲得資料積累

問題總結:

1:資料同步是乙個跟資料量有關的任務,當要求實時顯示的時候應該避免大資料量的問題,

2:實時顯示是要求資料的最新並最快。所以不應該和大量資料同步整合在一塊。

所以在整個過程中,我們需要的是要有實時的服務為我們提供最新最快的資料,並且呢,還要有同步可能存在的大量資料隱患的服務來為我們同步大量資料以保證資料的完整性。

所以這是以時間換量,或者以量換時間的問題,所以感覺這和索引有一樣的道理(以空間換時間)二者不可兼得,

記一次讀取資料的經歷

乙個研究生同學因為學習需要,想提取乙個 的資料,然後把這些資料都放入excel當中。剛開始我很不在意,以前什麼樣的爬蟲沒見過,這次不過是要把資料放入excel中而已。於是我在網上找到乙個結合php生成excel的工具 phpexcel 然後寫了乙個簡單的程式,結果!失敗了 1.需要讀取的資料太多,一...

一次佈線的經歷

一次佈線的經歷 由於公司要重sz搬遷到sd,sd區需要裝修整改,重新佈線。專案開始2012年10月份入職就開始入手 左邊是工廠區 辦公區 凹字形結構 共4層樓,是拼接房大部分是翻新,只有 內凹部分那裡新建 www.2cto.com 專案結束標誌以機房的ups,機房機架上的監控 伺服器 交換機,除錯完...

一次oracle大量資料刪除經歷

oracle有個資料表現在已經有2500萬條資料了,軟體用到這個表的資料時就變的特別慢,所以準備把乙個月以前的資料全部清除。我的步驟是 下邊操作都是在plsql中執行的 1 首先 將這個月的資料匯出到乙個臨時表中 這些資料是自己希望保留的 create table temptable as sele...