1. 程式人生 > >長春市教育局大數據中心需要準備的技術問題

長春市教育局大數據中心需要準備的技術問題

增量 指定時間 .py open 類型 AR 一次 負責 s/4

一、ElasticSearch的備份與還原

============================================================================================================================================================
1. 問題

Elasticsearch 副本提供了高可靠性;它們讓你可以容忍零星的節點丟失而不會中斷服務。但是,副本並不提供對災難性故障的保護。對這種情況,你需要的是對集群真正的備份——在某些東西確實出問題的時候有一個完整的拷貝。


2.解決方案

通過快照的方式,將Elasticsearch集群中的數據,備份到HDFS上,這樣數據即存在於Elasticsearch(簡稱ES)集群當中,又存在於HDFS上。當ES集群出現不可恢復性的故障時,可以將數據從HDFS上快速恢復。

也可以選擇NFS方式進行備份數據:https://www.cnblogs.com/keithtt/p/7189493.html


3、需要進行的測試
(1)如何進行快照備份
(2)如何進行快照還原
(3)在歷史日誌時間太久,還不想徹底刪除掉,想要歸檔,可以使用快照方式嗎。如果以後還想用,怎麽還原回來?


https://www.jianshu.com/p/d2a189f704a2


可以采用rename_pattern和rename_replacement用於重命名index,因為無法將index還原到open的index。

如何刪除N個月前的數據?

https://www.cnblogs.com/kasumi/p/6479733.html

https://www.cnblogs.com/zhzhang/p/6946264.html

1、已知:可以全庫備份,也可以指定index備份。

2、能不能備份指定條件的呢?不知道...意義不大,研究不研究無所謂。

3、如果按這個方案,那麽HDFS和ES的服務器在物理上要如何規劃?比如3臺物理服務器(什麽樣的配置CPU、內存、磁盤??)

組成VMWARE ESXI虛擬機集群,2臺NTB的存儲,HDFS和ES應該如何避免放在一個籃子裏?這裏需要規劃和繪制示意圖,要求教育局購買。 存儲的容量如何規劃???比如100T ,教育局會問,能用多久?以後擴容怎麽辦?

是不是需要單獨購買硬件防火墻??DDOS攻擊怎麽辦??

============================================================================================================================================================
二、整體的技術架構圖

技術分享圖片

三、各業務系統數據匯集的辦法

國內同類型軟件的實現方法:

http://www.ruisoft.com/solution-smartcity-01.html

http://www.chinawiserv.com/home/news/detail/id/526

各業務系統需要提供全量和增量數據上報,增量數據上報肯定會要求上報最近新增、修改、刪除的數據,最簡單的辦法是使用觸發器,下面給出測試過的各主流數據庫觸發器方案:

https://www.cnblogs.com/littlehb/p/5614780.html

特殊需要說明的是:對於物理性刪除的delete情況,我們需要規劃一個deleted表來記錄刪除的主鍵ID。

(1) SqlServer

如果業務庫是SqlServer的話,可以參考這篇文章:

http://www.cnblogs.com/iampkm/p/4082916.html (時間戳方案)

https://blog.csdn.net/yenange/article/details/49636215 (CDC方案)

(2) Mongodb

如果業務庫是Mongodb的話,可以參考這篇文章:

https://blog.csdn.net/u013066244/article/details/80004153

(3)Mysql

如果業務庫是Mysql的話,還需要特殊註意下這個:

技術分享圖片

如果Mysql數據庫版本低於5.6,可以考慮使用觸發器方式:https://blog.csdn.net/heweimingming/article/details/51315895

(4) Oracle方案

https://blog.csdn.net/strawberry1019/article/details/79422071

偽列的方案不是很優雅,不建議使用,因為alter table無效。

四、數據匯集有兩種方式:

(1)業務系統可能采取提供webservice ,http restful等形式,要求東師理想自己進行數據采集。 這個需要一個個接入。(推薦使用這種!!!)

缺點:需要單獨編碼實現,不編碼無法完成。

優點:東師接入可以通過程序控制數據質量,及時發現問題。

(2) 業務系統通過東師理想大數據中心的API接口自行編碼進行數據上報。

優點:沒有優勢。

缺點:需要單獨編碼實現,不編碼無法完成。

(3)業務系統不提供webservice,https restful等形式,主動進行數據上報。(前置機)

優點:東師理想提供前置機代碼,通過簡單配置即可完成上報工作,業務系統無開發量,簡單。

缺點:需要將前置機部署到業務系統中,業務系統會比較反感。

一、全量和增量

其實全量和增量我們可以看做從哪個時間戳開始的問題,從遙遠的古代開始,就是從頭開始。從昨天晚上18點開始,就可以理解為增量。其實真正的意思是一樣的。這個開始的位置,是由服務器維護的,業務系統在上報前需要申請開始位置。

二、定時和實時

這類的大數據匯集中心,與東師理想的大數據中心不同。東師理想的大數據中心,采用的是準實時的mysql+canal數據上報方式,延遲時間一般在1秒至3秒間(指正常工作情況下,不出現故障的情況下)。而長春市教育局的大數據中心,個人理解業務系統的數據匯集可以是定時的,定時定長最小為10分鐘,這已經足夠讓其完美的運行,現在流行的ETL工具等,都是定期調度進行數據變更匯集的思路,這無可厚非。

上面這些東西,都在一個主題:業務數據的增(改)、刪。

我們的設計思路是,不管是增加,還是修改,這條數據都要重新上報覆蓋掉舊的即可,所以,無所謂增加還是修改。對於刪除,如果是偽刪除的話,即標識b_deleted=1這樣的刪除,其實就是修改,不是真刪除,不必討論。如果是真刪除,我們要求必須提供在指定時間戳後,獲取刪除掉了哪些主鍵,然後我們發送到大數據中心,對數據進行修改。

五、python前置機的功能組成

兩個線程

(1) 第一個線程是:正常的增量數據上報,數據掃描時間設置為10分鐘。

(2) 第二個線程是:心跳,向數據中心報告其存在,1分鐘一次心跳。每次心跳時,向大數據中心獲取是否有任務讓其執行,比如:將某一個記錄上報,從某個時間點開始重新上報(這個可以是增量,也可以是全量,看起始時間點)。

這樣做的目的是架構最簡單,最清晰,最不易出錯。

業務系統提供一個只讀帳號給python程序,python程序以源碼形式提供給各業務系統,python程序不會把業務系統不允許的數據內容進行采集。因python程序也可能需要不斷的完善,所有應該是有兩個py文件,一個是update.py ,另一個是senddata,py. update.py負責向oss檢查是否本地的senddata.py與oss上的同名文件是否md5值一致,不一致則下載回來,保證senddata.py 的自動更新。

長春市教育局大數據中心需要準備的技術問題