none
下單Gateway 的討論 RRS feed

  • 一般討論

  • 我有一個 困擾滿久的問題與想法

    我想寫一個  下單的Gateway

    主要流程
    Client端 ---> Gateway ---> AS400

    client 端會有多個 

    我想到幾個問題

    1. Gateway 與 AS400 連線要有幾條
       目前機制 : 只要 gateway 透過 socket 連線上AS400
                  每秒會回傳一個ack 回來 以確保是否有無斷線
       我會問 為何要幾條連線
       是因為  若  今天 Gateway 與 AS400 只有一條連線  若斷線了
       那多個 client 端傳送過來的資料不就"卡"在gateway 端
      
       但若多幾條備援的連線  那要如何調整 再重送至 AS400 的 演算法要如何寫呢 ?? 這又是一個問題

    2. Client 端 送到 gateway 的單子 在gateway中 是採取什麼方式來運作 存取呢?? ex:Queue來儲存
       當處理完一筆再處理下一筆


    以上只是 我先初步想到架構上的問題  想請教各位 有沒有什麼想法  先將這個問題 做個分析??

    或者您有更好的架構實務經驗  希望能分享~~~

    2011年1月11日 上午 08:38

所有回覆

  • 為什麼Gateway一定要保持和AS400的connection ?

    當Geteway要送資料給AS400時, Gateway此時的應該是用Tcp Client吧.

    然而AS400也不像8051是個既慢又單工的玩意.

    我認為的流程應該是

    Client ---送資料---->Gateway----> Gateway產生一個新的Thread將要傳送的資料移轉到此Thread中並在其中產生Tcp Client

    -----> Gateway 的Tcp Client Coonect AS400 ---> Gateway的Tcp Client 傳送資料給 AS400 --> AS400 回傳已收到正確資料訊息給Gateway的Tcp Client

    ----> Getwaye Close 與 AS400連結的Tcp Client -->此Thread結束

    這樣就沒有保持連線的問題. 而且重送機制也可以完成, 因為在Thread中可以設定 TcpClient的Socket ReceiveTimout, 一旦發生 Time out Execption 即重送.

     

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年1月11日 上午 08:49
    版主
  • 如果你的Gateway是個需要長時間運算的程式,正確的說應該是Gateway處理的速度會有可能來不及處理Client送來的資料,為了確保資料都能正確,那就必須透過MQ機制.
    很多製造業的機台都是用此方式.

    如果Gateway只是單向做法很容易,Gateway透過Web Service這類架構接收處理,不需要複雜的Socket機制.
    而Web Service只是接受資料,然後就到MQ,而後端在另外製作另一個服務或AP來處理即可.

     

    2011年1月11日 上午 09:08
  • 為什麼Gateway一定要保持和AS400的connection ?

    當Geteway要送資料給AS400時, Gateway此時的應該是用Tcp Client吧.

    然而AS400也不像8051是個既慢又單工的玩意.

    我認為的流程應該是

    Client ---送資料---->Gateway----> Gateway產生一個新的Thread將要傳送的資料移轉到此Thread中並在其中產生Tcp Client

    -----> Gateway 的Tcp Client Coonect AS400 ---> Gateway的Tcp Client 傳送資料給 AS400 --> AS400 回傳已收到正確資料訊息給Gateway的Tcp Client

    ----> Getwaye Close 與 AS400連結的Tcp Client -->此Thread結束

    這樣就沒有保持連線的問題. 而且重送機制也可以完成, 因為在Thread中可以設定 TcpClient的Socket ReceiveTimout, 一旦發生 Time out Execption 即重送.

     

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    可是 這樣 若 下單一萬筆  就要重覆建立 一萬次的連線

    會不會造成 AS400 的 loading啊?!

    2011年1月12日 上午 07:18
  • ADO.Net 本身就有Connection Pool機制.所以不用擔心這個問題.
    2011年1月12日 上午 07:20
  • AS400應該沒這麼遜吧, 而且這些Connection在使用完畢就會Close掉. 又不是傳多媒體那種大得嚇死人的流量.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年1月12日 上午 07:33
    版主