請支援 PubSubHubbub...

PubSubHubbub 對於內容提供者 (包括 Blog Platform 或是 Micro Blogging Platform) 已經是很簡單的協定了,不僅可以增加更新速度,還可以降低伺服器 loading,不過國內幾個平台還是沒人支援啊...

首先是標準規格書:「PubSubHubbub Core 0.3 -- Working Draft」,不過這文件對於要支援 PubSubHubbub 的 content provider 不是很重要,只要把裡面的觀念看懂就好。

PubSubHubbub 中有三種不同身份,可以用不同的伺服器跑。一個是內容提供者 (Publisher),一個是訂閱者 (Subscriber),另外一個是 Hub。內容提供者在這邊的例子就是 (Micro/) Blog Platform,而訂閱者可以是 Google Reader,Hub 則是中繼角色,目前有 Google 提供的服務可以用,也有 open source 軟體可以自己架。

第一步,內容提供者在先在 feed 中加入一個或多個 hub 位置,像是這樣:

<link rel="hub" href="http://pubsubhubbub.appspot.com" />
<link rel="hub" href="http://superfeedr.com/hubbub" />

第二步,當該 feed 有更新時送出 ping 給 hub,這部份假設用 PerlNet-PubSubHubbub-Publisher 做的話則是:

my $pub = Net::PubSubHubbub::Publisher->new(hub => 'http://pubsubhubbub.appspot.com');
$pub->publish_update('http://admin.pixnet.net/blog/feed');

就是這樣子而已!

AWS 的監控功能...

看起來好像發了很多公告,但實際上都是與監控有關的部份,以及延伸產品:

總結則是這篇:「New Features for Amazon CloudWatch」。

比較有用的應該是 Basic Monitoring (5mins 間隔) 免費吧,可以拿來加減看一看...

AWS 的幾個進展:EC2 HPC 與 ISO 27001

其中一個是 AWS EC2HPC (High Performance Computing) 平台上了 2010 年 11 月 Top 500 的 #231:「AWS Compute Cluster #231 on Top 500」,每個 node 只要 $1.60/hour 與 $2.10/hour (GPU 版本)。

另外一個是 AWS 通過 ISO 27001:2005 - Information technology -- Security techniques -- Information security management systems -- Requirements:「AWS Receives ISO 27001 Certification」。

兩件事情都不小,前者會對 Super Computer 帶來一定程度的改變,後者則是給一般人對於 Cloud Computing 的安全印象有所改變 (雖然我覺得 ISO 27001 解決的方向並不太一樣...)。

利用 AWS CloudFront 的 Custom Origin 實做標準 deflate/gzip 壓縮

在「gzip support for Amazon Web Services CloudFront」這篇提到了要如何用 CloudFront 的 Custom Origin 實做標準 deflate/gzip。

之前 CloudFront 就有支援 Vary header,雖然只支援 Accept-Encoding,但這就是我們要的:(Appendix: Custom Origins)

The only acceptable value for the Vary header is Accept-Encoding.

本來 S3 沒有能力依據 Accept-Encoding 送出不同的結果,這次有了 Custom Origin 出來以後掛個有能力 gzip-on-the-fly 的 Web Server 就可以做到了,檔案也不一定要放到 S3 上 (可以放 EBS)。

基本上這個功能可以用現有的外部機器做 (因為 CloudFront 連到 Origin 的量應該不大),或是 EC2 的 micro instance 應該也夠用了...

AWS S3 儲存空間降價

AWS S3 自 11/1 開始降價:「What Can I Say? Another Amazon S3 Price Reduction!」。

包括 Standard storage 與 Reduced Redundancy storage 都一併降價,其中 Reduced Redundancy storage 是依照 Standard storage 的 2/3 價錢計算。不知道是不是跟 EdgeCast 最近在測試 Cloud Storage 有關?

EdgeCast Cloud Storage 試用

EdgeCast 最近開始測試 Cloud Storage 服務,這個服務可以用信用卡付款,沒有 setup fee 之類的費用,看了功能以及價錢似乎是可以玩看看的東西...

先說缺點:

  • 目前看起來只有一個洛杉磯 (LAX) 的點,資料的安全性會是個問題。也因為如此,在與 S3 比較時,應該與 Reduced Redundancy Storage 這個等級互相比較。
  • 檔案上傳後到可以從 Web Server 上取得的時間太長,依照他的說法可能會 30secs,我測試也差不多會到 30secs。S3 雖然也沒有保證,但幾乎是上傳後就馬上可以讀到了。
  • 有提供 API,但 API 文件要登入 (也就是說一定得註冊) 才能下載。

優點:

  • 價錢便宜。空間的部份即使是跟 S3 的 Reduced Redundancy Storage 相比也便宜不少。頻寬與 transaction fee 的部份也是一樣。
  • 反應速度。S3 的 first byte 反應速度太慢,我在 Linode 美西的點 (也是在 LAX) 上測試 jQuery 1.4.3,S3 的 first byte 要 34ms,而 Cloud Storage 的 first byte 反應速度大約是 11ms。
  • 用 FTP 就可以上傳,所以現有的 FTP sync tool 可以直接拿出來用。

要注意的有兩點:

  • 是預設是 public,也就是傳上去後所有檔案都是公開的,可以透過 http 下載。
  • 另外,Web 預設的 max-age 是 900,而且沒有 Compression,要記得去 Rules Engine 裡設定。

試用的情況大概就這樣吧...

IndexTank 的設計

IndexTank 是在 xdite 的個人板上看到的網站,號稱真正 Scalable 的 Search Engine,看了他的架構設計後看起來應該是真的 Scalable。

由於是屬於 SaaS 服務,對於 startup 不想自己做 search engine 的可以直接套上去。而對於技術人員真正有價值的是他的 API 設計文件中的 function definition syntax:「function definition syntax」,雖然故意寫個 coming soon,但實際上可以在 client library 裡看到範例:「Python client」。

先內建一些基本的數學函數,像是四則運算、power、log,並且內建一些很常用到的變數。接下來定義出來的函數可以再重複使用,不斷累積上去,最後在 query 的時候就可以 ORDER BY 某個 score...

IndexTank 告訴你「利用 API 讓前端程式設定 function 以降低 denormalization 的複雜度」時要怎麼設計 API,當你自己建立 search engine 時,新增的 function 還可以在後端用 MapReduce 把資料補上去...。

另外可以再參考「How Hacker News ranking algorithm works」這篇文章。(這篇文章的 comment 裡面有其他的 ranking code 可以看)

AWS EC2 可以匯入自己的 SSH public key 了...

今天 AWS EC2 一口氣丟出一堆小功能:

其實這些功能都沒什麼大不了的,Idempotent Instance Creation 可以避免重複產生 instance,而 Resource Tagging 暫時想不到用途,Filtering 則是 describe 的功能加強...

對現在最有幫助的是第四個,ssh 時可以不用指定 -i .ssh/ooxx.pem 算是有直接影響的吧?目前還不能透過 Web Console 匯入,必須用 ec2-import-keypair 指令匯入。

Ubuntu 針對 EC2 發展出的 CloudInit

CloudInit (cloud-init) 是 Ubuntu 針對 EC2 所發展出來的套件,以 EC2 instance 傳入的 userdata 解決每一台 instance 差異化的問題...

對於 userdata 最大只能吃 16kbytes 的問題,也可以用 gzip 或是 #include 的方式解決。其他的範例可以在 ~cloud-init-dev/cloud-init/trunk 這邊找到。

等下再開一台 instance 測試看看...

AWS EC2 最新的 Micro On-Demand Instances

AWS EC2 剛剛公佈新的 instance 叫做「Micro On-Demand Instances」,公告在這:「New Amazon EC2 Micro Instances - New, Low Cost Option for Low Throughput Applications」、「Announcing Micro Instances for Amazon EC2」。

新的 micro instance 有幾個特性:

  • 便宜,USD$0.02/hour 換算成一個月才 USD$14.4/month (以 30 天計算),與 Linode 的 Linode 512 USD$19.95/month 有得拼 (不過 Linode 的 package 包括 200GB 頻寬與 16GB 空間)。
  • 可偶而超量使用的 CPU 資源 (可超量到 2 ECU,m1.small 才 1 ECU!),這是 AWS EC2 第一個可以 burst CPU resource 的 instance。
  • EBS-boot only,完全不管 image 更新的問題。
  • 雖然只有 613MB RAM,但可跑 32bits 與 64bits 作業系統。

在公告內有提到,除了拿來測試以外, 跑 DNS server 或是 Load Balancer (而不使用 AWS 自己的 ELB) 會比以前的 instance 適合。另外也可以跑 monitor service...

這種型態的 instance 也可以 spot 競價倒是沒什麼特別的,不知道 CPU resource 可以 burst 到什麼程度...

公告出來第一個感想就是很多 Cloud VPS 要倒楣了,因為這個價錢並不差,如果再加上在 AWS 同一個 zone 裡面內的頻寬不用錢,以及諸多服務 (尤其是 MySQL 資料庫服務 RDS) 及延伸性 (更不用提 Amazon 的「名牌」了),對於許多在家 startup 的吸引力就更大了...