上線時間:20151214
就在2015年12月14日,我們财務研發部的财務獨立系統(簡稱财務系統)上線了,總的來說是很成功的,但是裡面有一些細節,還是值得總結的,有出現的問題,也有一些實施的方案,下面我說來總結幾點。
一、出現的問題,也就是最大的失誤,就是線上環境資料庫和本地環境資料庫不同,當時本地測試使用的是訂單主資料庫,而線上考慮到不能影響訂單資料庫性能,隻能讓我們使用從庫,我畫個醜點的圖表示一下。
正常的操作流程圖:

出問題的情況圖:
這種情況,造成的問題是什麼?本地測試時,沒有問題,線上運作時,有問題,而且,如果不仔細想,想破腦袋也想不出問題出在哪,這種問題也是最難找的。
我要表達的意思就是,很多情況測試沒問題,程式沒問題,運作時有BUG,找問題側重于思考運作環境等方面的問題,是環境不一樣,或者是系統壓力不一樣等等引發的問題。
二、系統拆分方案,也是當初着手做這項工作時,非常棘手的一個問題。能不能拆出來,用什麼方案,像資料同步方案,訂單系統和财務系統之間之前的很密切的互相調用等等,是用同步還是異步。開始考慮了消息隊列,後面發現實施起來很麻煩,訂單系統各個點要發半空消息,财務系統這邊也要擷取消息隊列,資料龐大的情況下,能不能及時處理也是個問題,後來最終使用的是财務資料庫使用SQL語句連結訂單資料庫伺服器進行資料同步,這種相對來說比較輕量級,也不需要對程式進行改動,相對來說減少了很大一部分工作量。在程式是,我們對重要的一起系統間的調用,使用了事務補償的方案,比如:系統A調用系統B,在系統B産生了一條資料,如果系統A在那個事務裡失敗了,但又不能作業系統B的資料庫,那麼,系統B的自動作業中,會檢測系統A事務處理的狀态為失敗,就把對應系統B中産生的資料删除或做其他處理,這就是事務補償。
三、程式上加一個開關,來快速處理復原的問題。就是如果上線後,發現拆分出來的财務系統有問題,不能用,那麼,通過一個配置開關,就能直接用回原來的未拆分時的系統。意思就是做系統拆分,不能隻考慮一刀切(最理想的狀況),還要考慮到如果有問題,如何快速還原到之前正确的狀态,通俗點就是留條後路。
四、時刻記住自己的目标,不能亂做。比如我們拆分初期,原來的子產品就不是很完善,需要還想着在拆分時完善一下系統,人力不夠,時間不夠,那時候真的是有點做不下去,後面,我們也确定了拆分的目的,就是把原來的功能拆下來,哪怕原來的有些部分功能是錯的,也不要花太多時間去改,記錄下來哪些有問題,拆出來了再去完善,不然拆分基本的任務都完不成,怎麼去完善。
五、關于程式優化方面,主要是資料庫儲存資料比較耗時,比如要儲存100條資料到資料庫,那能想到的政策就是先放在記憶體,在最後時刻才将資料一次性儲存到資料庫,這樣能減少與資料的連接配接次數,進而減少浪費時間提高程式性能。就像現在的迅雷下載下傳、旋風下載下傳等等都有緩存,可以設定(假設使用旋風下載下傳:緩存設定成256M,每秒下載下傳1M,都是儲存到記憶體,滿256M時,才一次性地儲存到硬碟上,可以在任務管理器中直覺地看到QQDownload.exe程序,從幾十M慢慢變到2~300M,然後又變成幾十M,一直循環)。