2014-02-08
XX開放平台不允許使用站外的服務器了,可是我們的app都在站外,數據庫也在站外,全都要求遷移到其雲主機上(坑爹啊)。我們在其雲主機上僅有有限的資源,而且也有在運行中的數據庫,要做數據遷移,正好重新清理一下數據庫吧,把過期的沒用的數據都轉入到歷史庫,將原系統的數據和雲主機上的數據做一次合並,打算用nodejs從站外服務讀取數據,然后發送到雲主機上,雲主機接受數據並合並到現有系統里。站外服務器和雲主機上的數據遷移都用nodejs來實現,想法確立之后,開始做一個簡單設計。
為什么要選用nodejs,因為可以快速開發,快速部署,js代碼寫起很輕快,順便實踐一個小小的nodejs項目。
要實現的功能:
sender.js
職責:接收命令行參數,讀取需要遷移的源數據,轉換成message格式,發送到雲主機的服務上,並在開始和結束處記錄日志,程序重啟可以按日志斷點續傳。
receiver.js (雲主機只有80端口開放,用apache做一個proxy)
職責:接受源數據,保存message到數據庫,並返回結果給sender。
processer.js
職責:定時輪詢讀取message數據,有未處理的數據,則處理數據整合邏輯(合並用戶ID,合並用戶數據等)
2014-02-09
由於我們的數據庫都是Postgresql,服務器都是CentOS,開發環境在Win7,先安裝開發環境和生產環境的nodejs環境
(1)在Linux下安裝nodejs,以及node-postgresql,比較簡單,參見我的另一篇博客。
(2)在Win7下安裝nodejs,以及node-postgresql,稍微麻煩,需要安裝Python 2.7,還需要安裝node-gyp,為了能安裝node-postgresql 還需要安裝VC++,我安裝的是VC++2010 Express,都安裝好了之后,測試一下,node-postgresql能正常工作。
至此工作環境准備完畢,接下來開始進入模塊的簡單設計階段。
傳輸過程中的數據結構Json格式:
message.type: 數據名
message.content: 數據內容
至此貌似雲主機上接受數據使用mongodb比較合適,在接下來的設計和實踐中再做比較和決策。
(待續)