高可用數據採集平臺(如何玩轉3門語言php+.net+aauto)

同類文章:高併發數據採集的架構應用(Redis的應用)html

吐槽下:本人主程是PHP,團隊裏面也沒有精通.net的人才,爲了解決這個平臺方案,仍是費了一部分勁。sql

           新年了,但願有個新的開始。技術+團隊管理都有新的突破吧,在新的一年對本身好些,不能再繼續搞基下去。數據庫

問題出發點:windows

´隨着軟件的日益強大,用戶的使用需求愈來愈多,用戶也但願衆多數據進行整合,來達到資源的合理應用。多線程

´有些數據資源須要抓取網頁的形式來採集到數據。架構

´採集應用不統一,沒有良好的管理程序,雜亂無章。併發

´採集應用常常性無響應,無相應的中斷程序,極大照成應用的不穩定性。高併發

解決方案:.net

爲了解決上述問題,提出了以下的解決方案,主要是使用了服務平臺這個概念。線程

image

 

數據採集服務:使用C#建立windows服務。(aauto至今沒找到相應的建立windows服務的實例)

       功能包括:

           1. 定時請求待採集事項,並放入待採集隊列

           2. 多線程定時經過API上傳資源數據以及其它狀態信息。

           3. 定時平臺監控,採集應用時間過長髮出中斷通知,通知無響應強制關閉應用而且從新啓動。

           4. 上傳心跳信息,保證數據採集服務正常運行。

採集應用:使用AAuto建立應用,其實使用.net也是能夠建立採集應用的,主要考慮到aauto語言這塊團隊相對來講成熟點,並且已有現成的應用了,只須要稍微修改下就能夠和服務平臺對接了。

         功能包括:1. 採集數據資源放入本地數據庫,好比sqlite。

                      2. 保存耗時信息,經過耗時的均運算服務平臺能夠決定多久發出中斷通知,以及能夠預測多久時間能夠完成工做。

狀態應用:主要是輔助應用。

          功能包括:

              1) 能夠查看處理進度

              2) 能夠查看數據上傳進度

              3) 能夠查看待處理進度

              4) 能夠查看應用耗時信息

 

經過以上的解決方案來看:服務平臺做爲統籌工做者,負責與PHP API進行交互,相對來講對於採集應用來講相對獨立,因此有很好的解耦性,同時又保證了穩定性。

        採集應用再也不負責與PHP API交互,主要負責與本地資源交互,那麼相對來講,代碼的工做量減小了,採集速度也能相應的提升。

 

具體代碼實現:能夠關注下後期的文章吧,我也會進量把代碼貢獻出來。以爲不錯的給個贊吧,新的一年新氣象。

相關文章
相關標籤/搜索