這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
背景
故事是這樣的:
公司系統裡面有一個服務是 PDF2JPG (實際上應該是 PPT2JPG, 只是PPT2PDF這一步驟我們利用七牛的雲端服務來完成。) 早期的時候我們根據系統負載已經實際情況採用了 crontab 來定時擷取資料庫需要轉換的資料。所以這個服務的QPS是 1/60 QPS。是的,你沒看錯就是這麼低,但是用起來還好,畢竟使用者容量不大。
但是隨著使用者規模的增大,我們不得不正視一個問題:就是如何滿足使用者轉換的動態需求 (使用者的需求爆發點一般爆發在晚上6點左右)。正好七牛的 UFOP 能滿足我們的需求。而且還有免費的額度。
記憶體 CPU 系統硬碟 按需¥/每小時 月計 M0C1 512MB 1 Core 10GB 0.088 63.36 M1C2 1GB 2 Core 10GB 0.176 126.72 M4C8 4GB 8 Core 10GB 0.650 468 M8C12 8GB 12 Core 10GB 1.300 936注意:M0C1的情況下,標準使用者 和 進階使用者 ,有 750 小時/月的免費額度。
我們的規劃是這樣的 在閑時只開啟一個 M1C2 執行個體, 忙時再開啟兩個 M1C2 執行個體。這樣既保證有效性也能保證經濟性
實施
寫七牛的代碼,一定不能只看官方網站的文檔,一定要找他們 github 上的項目 qiniu-ufop-go 、ufop-golang。 不過即使 github 上的也不能全信,有些也是到期的。
只要你記住以上這個,那麼寫代碼根本不算什麼!
部署
很多人以為是最難的代碼都寫了,那麼部署應該是分分鐘的問題。那就看一下下面的血淚圖吧。
七牛採用的是 docker 的方案,自建了更新源,隔離了外網連結。所以安裝一個 ImageMagick 別提有多疼了!
首先需要安裝 libpng , 接著安裝 ghostscript ,然後再安裝 ImageMagick,可是 ImageMagick 死活都找不到 libpng 的路徑,所以沒辦法支援 png。 你必須得先安裝 pkg-config 才行。
完整的 ufop.yaml 代碼如下。
image: ubuntubuild_script: - echo building... - mv $RESOURCE/* ./ - sudo ldconfig /usr/local/lib - tar zxvf pkg-config-0.29.tar.gz > /dev/null - cd pkg-config-0.29 && ./configure --with-internal-glib && make > /dev/null 2>&1 && sudo make install > /dev/null - tar zxvf libpng-1.6.24.tar.gz > /dev/null - cd libpng-1.6.24 && ./configure > /dev/null && make > /dev/null && sudo make install > /dev/null - tar zxvf ghostscript-9.15.tar.gz > /dev/null - cd ghostscript-9.15 && ./configure > /dev/null && make > /dev/null 2>&1 && sudo make install > /dev/null - tar -zxvf ImageMagick.tar.gz > /dev/null - /usr/local/bin/pkg-config --list-all - cd ImageMagick-7.0.3-4/ && ./configure --enable-shared=yes > /dev/null && make > /dev/null && sudo make install > /dev/null - sudo ldconfig /usr/local/lib - echo "convert -list format" - chmod +x ./runrun: ./run qufop.conf
附上結果圖: