ACE開發者平臺 - 基于阿里云引擎的應用托管平臺
文/歐陽克非
ACE 開發者平臺是一個基于云計算基礎架構的網絡應用程序托管環境,能幫助應用開發者簡化網絡應用程序的構建和維護,并可根據應用訪問量和數據存儲的增長進行擴展。ACE 支持 PHP、Node.js 語言編寫的應用程序,支持在線創建 MySQL 遠程數據庫應用等。
目前開發一個網站已不是什么復雜的工作,但網站運維,如服務器托管、防火墻設置、防黑客攻擊等,卻是很麻煩的事情。如果網站運營得比較成功,還要重新考慮網站的架構使其能應付快速增長的訪問量。對于這些互聯網創業者來說,ACE 開發者平臺就很有價值。用戶只需要將開發好的網站代碼上傳到 ACE 上就可以運營這個網站,而且不需要考慮運維問題。并且 ACE 能在網站訪問量快速變化時,彈性增加或者減少計算資源的分配,不需要開發者做任何處理。聽起來是不是覺得運營網站輕松了許多?
成為 ACE 的應用開發者
基于 ACE 構建應用,需要先在 http://ace.aliyun.com 網站上注冊一個賬戶。目前 ACE 還處于測試階段,需要用戶在頁面 http://ace.aliyun.com/create/apply 上申請邀請碼,獲得邀請碼之后就可以訪問 ACE 網站了。
目前 ACE 支持 PHP 和 Node.js 兩種開發語言,并且支持遠程創建 MySQL 數據庫。下面介紹 ACE 的使用。
使用入門
ACE 的使用可分為如圖 1 所示的四個步驟。
圖 1 使用 ACE 的四個步驟
創建應用環境
用戶輸入網站名和二級域名即可創建一個應用環境(如圖 2 所示)。目前 ACE 提供以 aliapp.com 為后綴的二級域名,也允許用戶綁定頂級域名。創建成功后,系統會創建一個 FTP 空間和一個 MySQL 遠程數據庫供開發者使用。
圖 2 快速創建 ACE 應用服務
通過 FTP 上傳代碼
用戶寫好的 PHP 或者 Node.js 代碼,可以通過 FTP 上傳部署到 ACE 中去。出于安全角度的考慮,有許多函數被禁止使用,在編寫代碼時要特別注意。禁用函數列表參看 http://ace.aliyun.com/index/help/?help_id=87&sort_id=13。
應用程序文件的調試
用戶可以通過打開管理中心的調試選項,查找代碼中出錯的部分,進行調試修改。
發布應用程序
借助管理中心啟動應用程序,就可以通過設定二級域名或者綁定的頂級域名訪問自己所編寫的網站。
將網站移植到 ACE 平臺
ACE 平臺上的開發對于 PHP 和 Node.js 的開發者來說是很容易上手的,由于語法規則相同,這里就不再贅述。只是如上文所說,出于安全角度的考慮,許多 PHP 函數被禁用。為了解決這個問題,ACE 提供對許多原生函數 API 的兼容以及一些新的編程方法來繞過函數的禁用問題。下面以 PHPWind 的移植為例介紹 ACE 平臺上的開發。
文件、目錄讀寫
出于安全方面的考慮,ACE 對本地文件讀寫進行了一些限制,要求將用戶數據放在 OSS(開放存儲服務,具備高可靠性及可擴展性的海量數據存儲)中,并且文件讀寫都需使用 ACE 提供的統一接口。ACE 支持創建用戶數據目錄,也支持創建源代碼文件上的目錄。PHP 自帶的 fread、fwrite 已被 ACE 默認關閉,請使用以下方法實現:
< ?php
Class CeFile{}
Function write ($fileName, $content, $sync=0) 文件寫入
$fileName 文件路徑(相對路徑)
$content 文件內容
$sync 是否需要同步到所有 Web 端,為保證多個 Web 端數據同步,默認設為0
返回 truefalse
Function read ($fileName) 讀取文件內容
$fileName 文件路徑(相對路徑)
返回文件內容 false
Function delete ($fileName) 刪除文件
$fileName 文件路徑(相對路徑)
返回 truefalse
成員變量 errno 為錯誤代號
成員變量 errmsg 為返回的錯誤信息供調試時使用
?>
ACE 文件讀寫方法如下:
//創建 cefile 對象
$ce = new CeFile ();
//文件寫入
$ce->write ($fileName, $content, $sync=0);
//讀取文件內容
$ce->read ($fileName);
//刪除文件
$ce->delete ($fileName);
文件緩存部署
文件緩存的主要目的是把經常訪問的數據保存在本地文件中,當有請求訪問時,直接將數據調出,避免了再次請求數據庫的I/O操作,減少了數據庫的負載壓力。
ACE 給每個應用默認部署兩個實例,當有請求訪問時,該請求就會路由到其中的一個實例。ACE 具有伸縮性,隨著請求的增加或減少可以增加或減少實例。為了提高性能,ACE 也具有文件緩存功能,如緩存配置信息。當用戶修改配置文件時,應調用文件緩存功能,實現多個實例間配置信息的同步。
因此應用中若用到文件緩存,必須使用 ACE 提供的文件讀寫接口,使用方法同文件讀寫。在使用文件緩存部署時,應將 write 方法的$sync 同步參數設置為1。
Memcache 緩存部署
Memcache 緩存部署是 ACE 為開發者提供的分布式緩存服務,以共享方式緩存用戶 key-value 形式的小數據,從而加快數據響應速度,減輕后端數據處理的壓力。ACE 環境下的 Memchae 默認為開啟狀態。若用戶需要使用 Memcache 緩存,請注意以下事項。ACE 支持的 Memcache API 如下:
bool Memcache::init ()
array Memcache::get ( array $keys [, array &$flags ] )
bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool add ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool decrement ( string $key [, int $value = 1 ] )
bool increment ( string $key [, int $value = 1 ] )
bool delete ( string $key [, int $timeout = 0 ] )
bool close ()
應用如果使用 Memcache 緩存,就必須使用 ACE 提供的 Memcache 緩存接口。Memcache 緩存的使用方法如下:
< ?php
//連接
$mem = new Memcache (); //創建 Memcache 對象,內部會訪問 agent 獲取地址及 ID
$mem->init ();
//保存數據
$mem->set (‘key1′, ‘This is first value’, 0, 60);
$val = $mem->get (‘key1′);
//替換數據
$mem->replace (‘key1′, ‘This is replace value’, 0, 60);
$val = $mem->get (‘key1′);
//保存數組
$arr = array (‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set (‘key2′, $arr, 0, 60);
$val2 = $mem->get (‘key2′);
//刪除數據
$mem->delete (‘key1′);
$val = $mem->get (‘key1′);
文件上傳
通過 Web 上傳的文件都是基于 OSS 存儲的,由于 ACE 平臺的限制,其上傳的文件不能存儲在本地,只能存儲在 OSS 中,且必須使用 ACE 提供的上傳文件接口,文件上傳后會生成對應的 URL。PHP 自帶的 move_uploaded_file 方法已不能使用,需要使用 ACE 提供的方法。
文件上傳方法如下:
move_uploaded_file ($tmp_name, $filename)
替換為:
$ce = new ACEStorage ();
$result = $ce->upload ($tmp_name, $filename);
#$rs1 = $ce->errmsg (); //輸出錯誤信息
#$rs2 = $ce->errno ();
$result 為返回的附件文件路徑,可直接訪問,如:
www.domain.com/aliyun_ce_storage/$filename
展望未來
本文旨在引導用戶輕松運用 ACE 開發出復雜的網站應用,同時免除運維和系統彈性擴展的煩惱,節省人工成本、硬件投入成本以及時間成本。在不久的將來,ACE 將支持更多的語言,例如 Java 等,也將提供更多的服務,例如版本管理、客戶端支持、URL 網頁抓取等,以幫助用戶在 ACE 平臺上開發出功能更強、更復雜的互聯網應用。
來自: www.programmer.com.cn