2013年1月30日 星期三

背景程式兩三事

因為工作關係時常會碰到公司後端的背景程式或是後端系統。


背景程式在企業中算一是一門有趣的學問,基本上就是應用系統需要將某件工作自動化的排程處理。

通常可大可小,也可以很複雜。最常見的就是自動化備份資料。講到此不得不提複雜的系統一定會伴隨著資料庫或是Message Queue ( MQ )。一個完整的後端背景系統架構圖是包含資料集中的資料庫或是暫存資料的MQ,而系統 Data Flow架構圖就是如此,就像以前學校喜歡考企業網站、資料庫,還得畫防火牆與dmz的架構圖

其實有趣的地方是系統到處都可以看到像背景程式的影子,而講到完整的背景排程作業就如服務站般不斷的接續服務著(也很像點餐服務櫃台),而中間的傳遞靠著是Message與Message Queue。這不是很像工廠的生產線嗎?其實每支程式不過就是工作站吧了。

接著其實我們想,一個完整複雜的後端作業排程,其實24小時不停送到工作站在處理,MQ 扮演著很重要的角色。
第一、他負責不同工作站資料的傳遞,就像Fedex總要有貨運中心和傳遞管線,而MQ的作用就是能按照順序一一排隊等待處理,未處理的也不會遺失,每個工作站都有來源的Queue與目的的Queue。
第二、有時候工作站是有先後順序與流量條配,故出現了另一個角色: Queue Router,Router的作用在於可以動態按照訊息分類到不同的Queue中,就像郵差會依照不同的區號分配信件到不同的派送窗口處理一樣。甚至依照優先順序分配,如快遞急件可先分配到特別的工作站。使用Queue Router好處在於你不必將所有Message流向條件,全部寫死在程式中。

另外有修過OR作業研究課程的應該了解,生產線最佳化設計是重要關鍵,當然大部分是關係到企業領域知識,但設計資料流與分配工作站的劃分,排程處理的先後順序的設計,都是重要關係到是否為好的背景系統。所以制定好的Data Flow & 工作分配 & Message Router ,不只可以動態調配程式(工作站),也可以動態改變Flow,而不需要花費太多功夫去重新撰寫。

另外資料庫可以記載每個工作站活動的紀錄,方便trace整個活動或是資料處理的狀態。

沒有留言: