4

我有一組結構化的Java AppEngine上的應用程序如下:分離服務和應用服務引擎前端使得延遲

  • REST服務
  • Web前端

這兩個組件都託管在2個獨立的AppEngine實例(付費),這是設計你的應用程序的標準方式,因爲我也從其他客戶端(移動應用程序等)訪問REST服務,所以我想保持獨立。

我遇到的問題是,即使我直接訪問REST服務(從瀏覽器或移動應用程序獲取)響應總是很好,但從我的AppEngine前端響應時間訪問REST服務時有時很不穩定。

我運行了一堆測試,並且在從瀏覽器到REST服務的GET方式總是返回相當快的時候,從我的AppEngine前端調用到REST服務的調用可能會從返回到從瀏覽器返回一樣快到佔用到> 10秒(導致超時等),通常沒有合理的響應時間(secs而不是100s msecs)。

如果總體上存在潛在的延遲,我可以理解所有事情平均幾乎可以在同一時間得到迴應,但我不明白的是從其他任何地方調用服務和調用服務之間的區別一個AppEngine實例。

我不得不說這不會總是發生,好幾個星期,然後有一些非常糟糕的日子(今天真的不算是因爲它是一個full blow outage),並且即使總體上我很高興關於應用程序引擎,這讓我有時想知道是否在這個平臺上投入了一個錯誤。

我正在尋找一個解釋:這是一種固有的AppEngine限制排隊這種從AppEngine實例傳出的這種漂亮的標準HTTP請求嗎?

此外,我一直在考慮可能的解決方法 - 也許我應該將服務託管到與前端相同的實例中,但我真的不想這樣做,我將它作爲最後的手段。

任何意見讚賞。

+0

「這是設計[你]的應用程序的標準方式」 [來源請求] - 這真的不是,和您看到的是,它的設計應用程序特別低效的方式。 –

+0

@尼克約翰遜你好尼克,爲什麼這麼防守?如果不是最佳做法,那麼在我設計的所有其他平臺上設計應用程序以將服務從前端分離出來,這當然是行業標準。從AppEngine實例的任何位置調用服務時的響應時間實際上都很好,並且相當可靠。我希望你的意見能夠說明爲什麼,正如我所觀察到的,當調用服務** FROM ** AppEngine實例時,這是特別低效的。您是否建議唯一的解決方案是將服務拉入與前端相同的實例? – JohnIdol

+1

@NickJohnson我不同意你的發言。除此之外,你的引用在哪裏說它不是一個標準的方式。 – tom

回答

0

我可以看到2個原因

1.External訪問您的REST服務,緩存優化,爲客戶機瀏覽器是各種版本。內部訪問REST服務的FrontEnd應用程序可能沒有實現非常好的緩存機制。

2.是否有AppEngine內部流量帳單?如果不是,那麼這可能是給外部IP比內部優先的原因?

+0

感謝您的回答:1.我會想象這是AppEngine固有的東西,所以它屬於可能的解釋,但我不知道這是否是這種情況。 2. appEngine出站帶寬費用(無論),我通過http聯繫服務,所以流量不是「內部」。 – JohnIdol