2014-11-21 72 views
0

我必須從產品目錄數據庫中生成5-10MB PDF和圖片。我一直在使用dompdf(和其他幾個人)已被偉大的工作分佈在不同服務器上的PHP PDF生成

。麻煩的是執行所需的時間,大約20秒。

我不知道是否有卸載這些任務,以某種形式的分佈式計算服務,如Amazon的產品的方式(彈性魔豆可能?)。我們可以在幾個實例中生成某些頁面,然後在完成任務時將它們重新拼接在一起。

有沒有人有這方面的任何服務建議?

回答

0

建築師的最好方法(考慮可擴展性因素)會使用像SQS,SNS,S3,EC2的組件。這使您可以在不增加其他服務工作的情況下增加處理/ EC2容量以擴展/擴展。

你可以用它部署與門戶

  1. 用戶在PDF生成器一樣(DOMPDF)的單個實例開始發起使用自定義開發的門戶網站(暗戰EC2的)
  2. 一個PDF創建工作
  3. 在成功啓動/中的PDF作業的確認 - 你可以提示與作業ID
  4. 在EC2上運行就可以完成PDF作業,並把它返回到S3
  5. 在EC2成功完成該進程的用戶這項工作不能觸發SNS ification/SES電子郵件
  6. 作業的狀態和運行狀態可以在DB服務,如SimpleDB的或DynamoDb跟蹤
  7. 完成的PDF可以從S3使用作業門戶網站與作業ID
0

獲得彈性beanstalk(EB)是部署工具,我不認爲它適合你的情況。

你所談論的這個想法是因爲存在AWS服務transcoding非常相似,但這是音頻和視頻。也許你可以花時間研究代碼轉換是如何工作的,併爲你的pdf生成器做同樣的事情。或者您可以聯繫AWS工程師瞭解您的想法,也許他們可以爲您開發新服務。這似乎是一個普遍的要求。

我對你的問題的思想目前是@NAveen建議設置縮放環境,但更注重於autocaling。

  • 設置一個launch configuration與用戶數據(包括如何安裝web服務和pdf發生器)和所期望的實例類型(微型,小型或大型等),ELB(彈性負載平衡器在該步驟中設置以及)
  • 將此launch configuration分配給自動調整組,您可以設置最小實例和最大實例大小。
  • 設置放大和縮小規則以增加/減少ec2實例編號。

所以當請求被髮送到ELB時,它會分配給附加實例並將負載分配給每個實例,並且會隨實際流量自動縮放實例號。