我在AWS內部的EC2實例上有一箇中央C#窗口服務。它的任務是創建任務(JSON內部的指令),然後將這些任務發送到運行在AWS以外的服務器上的各個Windows服務(例如,在每個商店中有一個服務器的灰漿零售店)。這種情況下使用的最佳體系結構是什麼? SQS? SNS?兩者結合?
這些單獨的服務器根據JSON任務執行一些處理,然後將消息發送回AWS內的中央窗口服務。此設計目前正在使用AWS SQS。
我最初的設計是使用1個SQS隊列消息到外部服務器,1個SQS隊列消息返回。總共兩個隊列。
然而,這種設計看起來有缺陷,因爲某些消息僅用於某些服務器,但爲了確定哪個消息是針對哪個服務器的,消息必須從隊列中'讀'出來並檢查JSON,然後隱藏他們從其他服務器輪詢消息。這可能會導致服務器無法看到他們的消息,因爲他們不斷被其他服務器隱藏。
那麼我對這種設計有什麼選擇? AWS之外有400臺服務器。我可以有400個SQS隊列(每個服務器一個),然後一個隊列返回到中央服務?它看起來像很多隊列。
我想過使用SNS嗎?但是,我仍然有400個SNS主題?每個商店一個?
並不是說這是理想的,但400個服務器可以輪詢每10分鐘,還是你需要它是或多或少的即時通知?如果輪詢正常,您可以簡單地將S3中的JSON文檔放在s3:// bucketname/serverN(或某種數據庫)中,並讓客戶端定期輪詢新的JSON文檔。 – jarmod