線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4724
推到 Plurk!
推到 Facebook!

面對快速持續改善的多層架構系統要如何規劃版本更新架構呢?

尚未結案
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-07-27 23:27:23 IP:175.182.xxx.xxx 訂閱
考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮
如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新?
在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎?
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
編輯記錄
bestlong 重新編輯於 2015-07-27 23:31:42, 註解 無‧
bestlong 重新編輯於 2015-07-27 23:33:16, 註解 無‧
bestlong 重新編輯於 2015-07-27 23:33:49, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-07-28 09:48:53 IP:59.120.xxx.xxx 訂閱
雪龍大的這個解法在實作上有遇到什麼問題嗎?
===================引 用 bestlong 文 章===================
考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮
如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新?
在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎?
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-07-28 10:36:23 IP:210.242.xxx.xxx 訂閱
自己實務上只有處理 CS 架構的更新,也只有一個主程式然後使用 AutoUpgrader 元件處理更新,更新的時機由用戶端決定
如果要開始踏入到 Delphi 三層架構,就會增加 AP Server 的版本管理,所以先提出這個疑問了解狀況。
所以就真的是我所說的配套方法嗎?

===================引 用 GrandRURU 文 章===================
雪龍大的這個解法在實作上有遇到什麼問題嗎?

===================引 用 bestlong 文 章===================
考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮
如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新?
在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎?
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-07-28 10:57:47 IP:59.120.xxx.xxx 訂閱
AP Server 更新相較 Client 是比較簡單的
只要不影響舊版Client的使用,雪龍大所說的方法就很好了

===================引 用 bestlong 文 章===================
自己實務上只有處理 CS 架構的更新,也只有一個主程式然後使用 AutoUpgrader 元件處理更新,更新的時機由用戶端決定
如果要開始踏入到 Delphi 三層架構,就會增加 AP Server 的版本管理,所以先提出這個疑問了解狀況。
所以就真的是我所說的配套方法嗎?

===================引 用 GrandRURU 文 章===================
雪龍大的這個解法在實作上有遇到什麼問題嗎?

===================引 用 bestlong 文 章===================
考量要將主從架構的系統改寫成多層的架構,只是現在對處理版本更新上有很大的疑慮
如果每日會釋放出一次以上的新版本,要如何做到在不中斷使用者工作的前提下處理應用伺服器的版本更新?
在低負載時直接更新 AP Server 然後配上斷線能自動重連的 Client 嗎?
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-07-28 18:26:41 IP:120.236.xxx.xxx 訂閱
多层,有很多种写法,比如最新的 DataSnap,比如 WebService,甚至比如古老一点的 DCOM。如果简单地使用 DataSnap 的 211 连接这种模式,通常开发者会让 Client 一上来就连接 Server 的 211 而且一直连接不断开。这样的话,你的 Server 没法更新。

概念上来说,不管用哪个模式,都要注意,Client 向Server读取数据后,马上断开连接。Client 向 Server 提交数据时,如果没提交成功(网络不通等等状况),就下次再提交。如果这个时候用户要关机,就 SaveToFile 存在用户自己的电脑上,下次 Client 启动后自动 LoadFromFile 然后自动再次提交。提交的时候,才去连接 Server。

当然啦,如果是 WebService,本身每次 Client 向 Server 请求数据或者提交数据或者 Call 一个 server 的 function 后,就自动断开连接了(这个是 HTTP 本身的特性)。

做到以上的东西,你可以随便停掉 SERVER 再重新启动,不影响正在使用的 Client。并且,这样做的好处是一个 Server 可以同时服务更多的 Client。

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-07-29 00:11:58 IP:61.228.xxx.xxx 訂閱
我的看法是:
建立二個或以上的 app server instance,可以是不同ip,或是同ip不同port。
舉例來說, 有 a,b 二台 app server,a 的 listen port 是123,b的是 456。
假如 a 是正常在服務的server。而 b 是正在修正或加功能的 server instance。
在client端上,有個 ini 或是類似的檔,或reg,記載 server 的ip與port。
ok的情形下,client 連入 a。
而當你覺得 b 已經開發ok,那就去更新部份,或全部的 client端的程式或僅是server ip port 的設定檔。

那麼就可以快速切換,或部份切換,或全面切換。
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
Ray_Lin
一般會員


發表:0
回覆:30
積分:11
註冊:2015-07-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-07-29 14:20:09 IP:114.32.xxx.xxx 訂閱
AP層的BPL如果可以,要依程式需求切成不同的DataModule區塊,不要全部的TABLE都用在一個DataModule做管理,這樣才可以依Client未連接工作的程式做部分更新。連線中的可以依需求慢點更新,或請USER先離線再更新。這是一點個人心得。還請各位多多指教。
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2015-07-30 09:18:34 IP:210.242.xxx.xxx 訂閱
看起來,AP Server 只要程式架構分割良好,就可以在執行期更換 BPL 來達到更新的目的
但是這樣的更新的處理架構大致上是怎麼處理的呢?

我猜:將新版 BPL 檔案佈署後,AP Server 輪詢檢查到有新版本,就會等到有使用空窗時自行替換?
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
Ray_Lin
一般會員


發表:0
回覆:30
積分:11
註冊:2015-07-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2015-07-30 14:10:43 IP:114.32.xxx.xxx 訂閱
目前我們三層的做法是這樣,AP(主要是和資料庫連接,取得資料或存取資料),這部分是手動更改,主要是這部分和資料庫的變動很密切。一般資料庫的結構改變,AP的程式也會變動結構。不太可能只改資料庫不改AP端。所以基本上這二個是同步的,所以確認可以更改的時間手動更改。
Client端是使用者有用再改。因為不確定使用者何時才會使用,不使用下載程式也佔頻寬,所以使用者啟動程式時,檢查程式版本是否一樣,不一樣就先下載再啟動新程式。
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2015-07-30 16:24:26 IP:59.120.xxx.xxx 訂閱
一旦需求變動,AP和Client幾乎同時都要調整

正式區和測試區的環境還要並存

專案一趕時很容易就混亂了,有解決的方法嗎?

===================引 用 Ray_Lin 文 章===================
目前我們三層的做法是這樣,AP(主要是和資料庫連接,取得資料或存取資料),這部分是手動更改,主要是這部分和資料庫的變動很密切。一般資料庫的結構改變,AP的程式也會變動結構。不太可能只改資料庫不改AP端。所以基本上這二個是同步的,所以確認可以更改的時間手動更改。
Client端是使用者有用再改。因為不確定使用者何時才會使用,不使用下載程式也佔頻寬,所以使用者啟動程式時,檢查程式版本是否一樣,不一樣就先下載再啟動新程式。
Ray_Lin
一般會員


發表:0
回覆:30
積分:11
註冊:2015-07-21

發送簡訊給我
#11 引用回覆 回覆 發表時間:2015-07-30 17:37:45 IP:114.32.xxx.xxx 訂閱


接下來,會有一個共同的檔案管理區,這個區域存放大家寫的程式,當個人要修改程式時,就要從這個區域CHECK OUT程式,這時程式就得屬CHECK OUT的人了,除非該名程式人員把程式更新CHECK IN,否則是不可以更動的。這樣才不會有程式互改的情形發生。

程式測試OK後,就會把程式上傳到共同的檔案管理區,這時個人的程式就告一段落了。

至於不緊急的程式,可以等大家都下級時做更新,因為有一堆人做修改,其實也很難知道每一個人改了什麼。但是可以確定,就是在共同管理區的程式是可以正確WORK的。那就用平台工具,把資料庫CREATE一次(平台工具會先比對TABLE,有修改的才做修改),再把程式全部重BUILD,COPY到主機。這樣更新的工作就完成了。主要是資料庫和AP程式會同步更新,Client端是使用者有用到程式,才比對做更新。

沒有特別好,也很平實,不過會有問題通常都是程式人員程式有BUG,很少是更新的錯誤。
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#12 引用回覆 回覆 發表時間:2015-07-31 07:42:59 IP:211.79.xxx.xxx 訂閱
多人環境開發我還沒有經驗,我都自己一個玩無雙
學習中
===================引 用 Ray_Lin 文 章===================


...43...
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#13 引用回覆 回覆 發表時間:2015-08-03 18:21:47 IP:175.182.xxx.xxx 訂閱
目前看起來最簡單的方式應該就是先用雙 AP Server 的的架構來處理應用伺服器的更新
而用戶端的設定上可以用 TSimpleObjectBroker 元件來處理自動切換 AP Server 的主機列表

===================引 用 aftcast 文 章===================
我的看法是:
建立二個或以上的 app server instance,可以是不同ip,或是同ip不同port。
舉例來說, 有 a,b 二台 app server,a 的 listen port 是123,b的是 456。
假如 a 是正常在服務的server。而 b 是正在修正或加功能的 server instance。
在client端上,有個 ini 或是類似的檔,或reg,記載 server 的ip與port。
ok的情形下,client 連入 a。
而當你覺得 b 已經開發ok,那就去更新部份,或全部的 client端的程式或僅是server ip port 的設定檔。

那麼就可以快速切換,或部份切換,或全面切換。
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
系統時間:2024-04-26 6:56:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!