AWS Elastic Load Balancing 服務支援 Connection Draining

AWS Elastic Load Balancing 支援 Connection Draining 功能了:「ELB Connection Draining - Remove Instances From Service With Care」。

由於 Connection Draining 是自創名詞,所以 AWS 的人解釋了一大堆。其實對比較熟悉的人用「graceful shutdown」就應該能了解 Connection Draining 想要做什麼事情。

技術上的細節是,當 instance 從 ELB 內被移除 (無論是暫時性的還是永久性的),新的 request 將不會被送到該 instance 裡,而既有的連線將不會斷掉,直到 client 完成或是超時 (timeout)。

這個功能在一般商用的 load balancing solution 都會提供,而且是對於服務品質其實還蠻重要的功能。

話說回來,這陣子 ELB 動了不少東西?不查資料可以直接想到的就包括了:

  • HTTPS 支援 PFS
  • 支援 access log 下載。

再加上今天的 graceful shutdown。每次都改善一些東西,累積起來就是驚人的財產...

Amazon SES 的認證延伸到 subdomain

以前 Amazon SES 每個 domain 都要認證一次,也就是說,就算我認證了 gslin.org,如果我要從 gslin@my.gslin.org 寄信,會因為 my.gslin.orggslin.org 不同而被擋下來。

在官方的 blog 上宣佈認得 subdomain 了:「Subdomain Support is Now Available!」。

這樣就更省事了...

Mozilla 推薦的 jsDelivr?

Mozilla 在「jsDelivr – The advanced open source public CDN」這篇文章裡面推薦 jsDelivr 這個服務:

Similar to Google Hosted Libraries, jsDelivr is an open source CDN that allows developers to host their own projects and anyone to link to our hosted files in their websites.

GitHub 當作 origin server,前端目前利用 CloudFlareMaxCDN,配合 Cedexis 的 openmix 服務,綜合這兩家 CDN 提供服務。

既有的 cdnjs.com 是由 CloudFlare 贊助的服務,那 jsDelivr 呢?

看了老半天得到這些訊息:jsDelivr 是由 @jimaek 所發起的服務,而 @jimaek 受雇於 MaxCDN。再加上 Mozilla 上的文章也是 @jimaek 發表,而且只發表過這一篇 (參考 Articles by Dmitriy Akulov),這邊的目的也太明顯...

應該可以每幾天就看一下下面的 comment,不知道什麼時候會引爆利益衝突的問題...

Firefox 28 與 VP9

Firefox 28 釋出:「Firefox Notes - Desktop」。其中第一條就是 Google 主力推的 VP9

VP9 video decoding implemented

依然視為繞在專利問題上,VP9 主力的競爭對象是 HEVC (H.265),而 YouTube 的 4K2K 影片也是用 VP9 壓縮。

這樣 VP9 的陣勢看起來大了一點?

Leslie Lamport 拿下 2013 年圖靈獎 (Turing Award)

Leslie Lamport - A.M. Turing Award Winner

For fundamental contributions to the theory and practice of distributed and concurrent systems, notably the invention of concepts such as causality and logical clocks, safety and liveness, replicated state machines, and sequential consistency.

分散式系統領域的老大與 LaTeX 的發明人...

Google Drive 的降價...

前幾天的大消息:「Save more with Google Drive」。

本來是 USD$0.05/GB,這次 100GB 這邊降到 USD$0.02/GB,而 1TB 以上的方案變成是 USD$0.01/GB。

USD$0.01/GB 是 Amazon Glacier 等級的價錢,但不像 Amazon Glacier 是離線資料,取用時需要等三個小時...

Pinterest 對 ZooKeeper 的用法

在「ZooKeeper Resilience at Pinterest」這篇文章裡面,Pinterest 的人說明內部是怎麼使用 ZooKeeper,其中對我來說最重要的是這張圖:

程式不直接接觸 ZooKeeper 取得資料,而是透過 daemon 寫到 local disk 的資料取得。這樣當 ZooKeeper 失敗時仍然可以保持一定的服務 (因為 local disk cache),而避免服務中斷。

當然,這跟資料的性質有關,不是所有的資料型態都可以接受 cache。這種解法常常是在穩定性不是可以自己控制 (這個例子裡是 ZooKeeper),而且遇到問題時不希望整個服務就爆炸...

但這個思路每次看過每次都會忘記,寫下來不知道會不會比較容易想起來 :o

PHP 的 strcmp()...

出自「PHP的strcmp函数引发的安全问题」。

拿 PHP 5.5 來測,這兩個都沒什麼問題:

php > var_dump(strcmp('a', 'a'));
int(0)
php > var_dump(strcmp('a', 'b'));
int(-1)

接下來測這個:

php > var_dump(strcmp('a', array()));
PHP Warning:  strcmp() expects parameter 2 to be string, array given in php shell code on line 1
NULL

沃槽...

這代表這個寫法是有問題的:

if (!strcmp($v, $v_input)) {
    // If same...
}

如果先不管 warning,還是要用 strcmp 的話,可能得寫成:

if (0 === strcmp($v, $v_input)) {
    // If same...
}

不過用原生的操作元應該是比較好的解法?

if ($v === $v_input) {
    // If same...
}

這真是太迷人了... -_-