如何看懂 Microsoft Open License Agreement 授權協議書

前陣子大量採購了一堆微軟產品,不過剛拿到授權書時卻傻眼,在上面同一套產品重複出現好多次,然後分什麼 Key Classification 與 Key Type,然後產品金鑰好多組,那我安裝軟體時到底應該輸入哪一組序號才對呢?經過與微軟技術支援中心討論一番後才清楚,不過裡面有些產品授權的縮略字(acronym) 連他們也不太清楚,甚至沒有官方文件可查,我花了好幾週的時間抽空研究,心得頗為豐富,但我研究那麼多買微軟產品也不會比較便宜就是了 ^^

首先,我買了 6 套微軟的產品,收到的授權書共三頁,如下圖:

第一頁

 

第二頁

第三頁

關於 Volume License Product Key Information 的表格各欄位說明

  • Product Description
    授權的產品名稱
  • Key Classification
    金鑰分類
    • 由於購買 Windows Server 2008 的授權是允許「降級使用」的,也就是你雖然買了 Windows Server 2008 的授權,在授權書上也會一併提供你 Windows Server 2003 的產品金鑰,所以可以讓在不同 Windows 版本之間使用不同的金鑰啟動產品,但你同時間只能選擇一個 Windows 版本使用!
  • VLK
    大量授權啟動金鑰
  • Key Type
    金鑰類型
    • 欄位為空值:代表這是透過手動啟動所使用的金鑰 (MAK)
    • VA1.0 代表 Volumen Activation 1.0,Windows Server 2003 之前的版本都是 VA1.0
    • KMS 代表這序號要輸入到 Key Management Service 中,產品可透過 KMS 服務啟動
      ( KMS 啟動需安裝 Activation Host 才能用 )

重要縮略字名詞解說 (這我研究最久…)

  • MAK = Manual Activation Key (手動啟動金鑰) = Multiple Activation Key (多重啟動金鑰)
    註1: 所有金鑰都可以「多重啟動」的,所以我覺得這裡應該講的是 Manual Activation Key 才對!
    註2: 有些繁中的文件會翻譯成「多重啟動金鑰」,但國外有些文件寫 Manual Activation Key !!
  • KMS = Key Management Service (金鑰管理服務)
  • VA = Volumne Activation (大量啟動)
  • VLK = Volume License Key (大量啟動金鑰)
  • SA = Software Assurance (軟體保證) (保證在購買後 2 年內有新版本產品出現時可以免費升級)
  • LicSAPk = Lic/SA Pack = License and Software Assurance (同時購買軟體授權與軟體保證授權)
  • SNGL = Single Language (單一語系)
  • ALNG = All Language (所有語系)
  • OLP = Open License Program (適用 Open License 購買的產品)
  • NL = No Level (不分等級的授權)
  • CAL = Client Access License (用戶端存取授權)
  • FPP = Full Packaged Product (完整產品包裝) (彩盒包裝)
  • PUP = Product Upgrade Pack (產品升級包裝)

其中 KMS A , MAK A, KMS B , MAK B , … 都是屬於「產品金鑰群組」,其中的 A , B , C 分別代表不同的產品類型產品等級,例如:

  • Windows Web Server 2008/ Windows Server 2008 HPC Edition (MAK/KMS A)
  • Windows Server 2008 Standard/ Windows Server 2008 Enterprise (MAK/KMS B)
  • Windows Server 2008 Datacenter/ Windows Server 2008 Itanium-Based Systems (MAK/KMS C)

也就是說 MAK A 的金鑰,無法用來啟用 MAK B 或 MAK C 等級的產品。

何謂 NL ?

NL 是 No Level 的縮寫,微軟有些大型客戶可能會在採購某些產品時一次採購很大量的產品,而這裡的 Level 指的是 Discount Level (折扣等級),當大咖購買大量授權的時候就有可能用較高 Level 的價格採購 ( 例如: Level C ),像我們這種小咖就只能買 NL 的產品。 [ 參考: What is OLP NL in server licenses? ]

何謂 MAK ?

依據以下解釋,我還是覺得 MAK 的全名是 Manual Activation Key 才對,台灣微軟可能翻錯了,或是故意翻譯成「多重啟動金鑰」比較容易理解?那就不得而知了。

A MAK is used for one-time activation of a computer with Microsoft hosted activation services. There are two ways to activate computers using a MAK:

  • MAK Independent Activation requires each computer to independently connect and activate with Microsoft, either over the Internet or by telephone.
  • With MAK Proxy Activation, a computer acting as the MAK proxy gathers activation information from multiple computers on the network and then sends a centralized activation request to Microsoft hosted activation services on their behalf. A free application, the Volume Activation Management Tool (VAMT), enables you to do a MAK Proxy Activation.

何謂 VLK ?

Volume License Keys (VLK), including MAK and KMS, are issued to you under a specific license agreement and enable your organization to use the software and products that you have licensed.

註: 我們這次收到的授權書就是 VLK,所以同時會給我們 MAK 與 KMS 的金鑰。

何謂 KMS ?  ( 通常針對較大量用戶端的情況才需要 KMS,我沒用過,所以僅留下原文說明 )

KMS is a lightweight service that does not require a dedicated system and can easily be co-hosted on a system that provides other services. With KMS, you can complete activations on your local network, eliminating the need for individual computers to connect to Microsoft for product activation.

A KMS key is used only to activate the KMS host with a Microsoft activation server. KMS requires a minimum number of computers in a network environment. You must have at least five (5) computers to activate computers that are running Windows Server 2008 or Windows Server 2008 R2, and at least twenty-five (25) computers to activate computers that are running Windows Vista or Windows 7. These minimums, called activation thresholds, are set so that they are easily met by enterprise customers. After you set up your KMS activation, by default, both physical and virtual Windows Vista and Windows Server 2008 computers will try to activate by connecting to the KMS host. For more information about activation thresholds, see the Volume Activation Planning Guide.

Are there usage limits on KMS keys?

Yes. A KMS key can activate six KMS hosts with up to 10 activations per host. If you need more activations for your KMS key, you can call your Microsoft Activation Center to request an increase. There is no limit to how many KMS clients can be activated with the KMS host.

Note that a KMS key is used only to activate the KMS host with a Microsoft activation server.

 

相關連結

  

此文章由 will 發表於 2010/1/26 下午 06:24:51

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: Tips | 心得分享

標籤: , ,

收藏:

如何設立 AppFabric Caching (Velocity) 開發環境

研究 Beta 版的技術真是累人,很多事情講的不清不楚,害我花了好多時間才將 AppFabric Caching (Code Name: Velocity) 的開發環境弄好,以下是將 Velocity 開發環境設立完成的完整過程。

設立環境主要分兩個步驟:

  1. 安裝 AppFabric Caching 必要元件
  2. 取得開發用必要 .NET 組件

 

安裝 AppFabric Caching 必要元件

我們可以透過 Web Platform Installer 直接安裝 AppFabric Caching 服務,事實上在未來正式 AppFabric Caching 會整合成一個「伺服器角色」稱為 Application Server ( 大概會叫這個名字 ),安裝過程圖示如下:

如果不想自動安裝,也可以到 Download details: Windows Server AppFabric Beta 1 下載獨立安裝檔與相關文件 ( Installation GuideRelease Notes )。

安裝完成後,所有程式與 .NET 組件都會擺在以下目錄:

C:\Windows\System32\ApplicationServerExtensions

 

取得開發用必要 .NET 組件

在安裝目錄下有兩個組件是開發時必須的,這就是開發時所需的組件 ( Client Library )

安裝完成後其實所有必要組件都會直接註冊進 GAC 中,且命名空間為 Microsoft.Data.Caching,但是透過 Visual Studio 卻無法「加入參考」( Add Reference ),因為在加入參考的對話框中怎樣也找不到 Microsoft.Data.Caching 這個命名空間,若你透過「瀏覽」( Browse ) 的方式直接進入安裝目錄也會發生找不到檔案的錯誤,讓你無法將這兩個組件加入參考,如下圖示:

Add Reference

最後,我研究出兩種方法可以成功加入組件參考:

1. 直接修改專案檔 ( 透過 Windows Server AppFabric Beta 1 Samples 範例程式查到的 )

2. 將組件複製到專案目錄下,然後再透過「瀏覽」的方式加入參考

 

相關連結

  

此文章由 will 發表於 2009/12/29 下午 08:33:46

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: .Net | 心得分享 | Windows Azure

標籤: , , ,

收藏:

Windows Server AppFabric Caching (Velocity) 心得筆記

最近在研究一項我追蹤已久的記憶體快取技術 Velocity ( 現在已經被納入 Windows Server AppFabric 產品中 ),這是一個分散式記憶體快取的平台,非常適合用來開發 3H ( High Scalability, High Availability, High Performance ) 應用系統開發,他可以將多台伺服器的記憶體融合(fuse)成一個超大記憶體快取,讓你的應用程式能夠非常方便的運用這些記憶體完成應用程式加速的目的,也可減低資料庫的負擔。

這套 Velocity 比我之前用過的 memcached 複雜多了,所以在看 Introduction to Caching with Windows Server AppFabric (Beta 1) 時有點吃力,都要反覆的咬文嚼字、慢慢的看、慢慢的理解才能確認我想的跟文件所描述的是一致的想法,避免錯誤理解導致日後開發上的錯誤。

 

Windows Server AppFabric Caching 的能力

Windows Server AppFabric Caching Capabilities

從上圖可看出 Velocity 在運作時的大致架構,他提供 Clients 一個統一的快取介面(Unified Cache View),他讓 Client 可以不用在意到底實體的快取服務層(Cache Layer)有多複雜,透過統一的 API 介面就可以運用 Velocity 進行 3H 開發。

Windows Server AppFabric Caching 主要特色有:

  • 任何可以被序列化的 CLR 物件都可以透過簡單的 Cache API 將資料快取
  • 支援企業規模:可支援上百台主機的伺服器架構
  • 可彈性的調整設定,並透過網路存取服務
  • 支援動態調整規模,可隨時新增節點
  • 支援高可用性架構
  • 自動負載平衡
  • 可與 Event Tracing for Windows (ETW), System Center 等機制整合管理與監控
  • 提供與 ASP.NET 的無縫整合,將 Session 資料儲存至快取,也可在 Web farm 架構下將應用程式資料快取,減少資料庫大量存取的負擔
  • 第一版遵循 cache-aside architecture ( 明確快取, Explicit Caching ),意即你必須在你的應用程式中明確指明你要新增(Put)或移除(Remove)快取的項目,所有快取資料並不會自動與任何來源資料庫進行同步。

 

【 分散式記憶體快取基本觀念 】

三種快取資料類型 ( Types of Data )

瞭解不同的快取資料類型可以幫助你決定在何種情境下使用何種快取資料類型,因為不同的快取資料類型適用的快取情境是不同的。

1. 參考資料類型 ( Reference Data )

這種資料類型負責儲存「較重要的資料」而且這類資料都是不會經常變動的資料,而且每次變更資料都會建立一個新的版本,所以這類資料非常適合用來分享給多使用者、多應用程式的情況,用以加速所有應用程式的存取速度,減低各應用程式對資料庫系統造成的負荷。

對於「讀取」需求遠大於「寫入」需求的資料都很適合用這種資料類型進行資料快取,例如:產品型錄。

針對大型應用程式或大流量的網站,參考資料類型也可以設定成自動複寫到快取叢集的多台伺服器,以增加應用系統的延展性。

2. 活動資料類型 ( Activity Data )

所謂活動資料類型指的是短暫的程式資料,這類資料通常不會被各應用程式或不同使用者分享,例如購物車資訊,就屬於這類活動資料。這類資料在大型應用中甚至可以跨伺服器的分割快取空間,可以很輕易的達到高延展性的需求。

3. 資源資料類型 ( Resource Data )

不管是 Reference Data (共享讀取) 或 Activity Data (獨佔寫入) 已經很適合做資料快取,但並非所有應用程式類型都支援這種方式快取,這裡的「資源資料」指的是「共享的」且「同時需要被讀寫」的資料,而且存取量都非常大的情況。 例如「庫存資訊」的庫存量就經常變動,而且必須提供各應用程式即時的資訊,而且可能隨時變更庫存數量,這類資料就稱之為資源資料

這類型的快取資料通常遇到最大的問題在於很難提供高有效性(High Availability)的支援,由於維護高有效性的資料必須精準的維持資料的一致性,所以必須實做交易處理(transactions)、變更通知(data change notifications)、設定快取失效(invalidations)等特性,透過 Velocity 可讓你設定這類資料自動複寫到不同快取主機,輕易達到 高有效性 的需求。

 

使用情境

1. 社交網絡網站 ( Social Networking Site )

社交網絡網站 ( Social Networking Site ) 使用情境

由於使用者名稱、好友清單都是不會經常變動的資料,所以這種情境很適合採用 參考資料類型 (Reference Data) 來進行快取。

2. 企業商用軟體 ( Enterprise LOB ) -- 例如: ERP, CRM, …

企業商用軟體 ( Enterprise LOB ) 使用情境

如上圖例,對於供應商資料、價格資訊可以透過 參考資料類型 (Reference Data) 來進行快取,而其他像是訂單資訊、發票資訊、付款資訊 都可以用 活動資料類型 (Activity Data) 來快取。

大型網路通常會實做 NLB (網路負載平衡),所以不會使用者不見得每次都會連接到同壹台 IIS 主機,所以透過這類分散式快取技術就很適合這種快取情境,避免把資料庫操到掛。

 

AppFabric Caching 基本觀念 】

上面講的是關於「分散式快取架構」的基本觀念,這裡講的是「開發模型」的基本觀念,瞭解這些觀念才能讓你在實際利用 AppFabric Caching (Code Name: Velocity) 開發程式時才能有比較清晰的概念,避免看程式看到傻眼。

邏輯階層架構 ( Logical Hierarchy )

邏輯階層架構 ( Logical Hierarchy )

邏輯架構依序描述如下:

  • 每台 伺服器 (Machine) 可以執行好幾個 快取實體(Cache Instance 或 Cache Host)
    註: 就好像壹台機器可以執行好幾個 SQL Server Instance 一樣意思。
  • 每個 快取實體 (Cache Host) 可以包含多個 具名快取空間 (Named Cache)
    註: 具名快取可以設定跨越多個 Cache Hosts 或 Machines
  • 每個 具名快取空間 (Named Cache) 可以包含多個 區域 (Regions)
  • 每個 快取區域 (Regions) 可以包含多個 快取項目 (Cache Items)
  • 每個 快取項目 (Cache Items) 包含 可序列化物件 (Objects)

一個簡單的範例如下:

// CacheFactory class provides methods to return cache objects
// Create instance of CacheFactory (reads appconfig)
DataCacheFactory fac = new DataCacheFactory();
// Get a named cache from the factory
DataCache catalog = fac.GetCache("catalogcache");
//-------------------------------------------------------
// Simple Get/Put
catalog.Put("toy-101", new Toy("thomas", "FunToy"));
// From the same or a different client
Toy toyObj = (Toy)catalog.Get("toy-101");
// ------------------------------------------------------
// Region based Get/Put
catalog.CreateRegion("toyRegion", true);
// Both toy and toyparts are put in the same region
catalog.Put("toy-101", new Toy("FunToy"), "toyRegion");
catalog.Put("toypart-100", new ToyParts("Wheel"), "toyRegion");
Toy toyObj = (Toy)catalog.Get("toy-101", "toyRegion");

快取觀念 ( Cache Concepts )

  • 主要節點 ( Primary Node )
    • 所有 區域 (Regions) 的資料都會置於主要節點上,任何透過 Cache Client 過來取得快取資料時都會自動被導向(Routed)到主要節點存取快取資料。
  • 次要節點 ( Secondary Nodes )
    • 如果 具名快取空間 (Named Cache) 為了高可用性(high availability) 而設定「備份」,就會用「次要節點」用來儲存這些「備份用的 區域 (Regions) 」(備註: 區域包含多個快取項目)。如果「主要節點」損毀,快取叢集所收到的要求就會自動轉向到「次要節點」來取得快取資料。

快取型態 ( Cache Types )

AppFabric 支援兩種常見的快取型態:分割快取、本地快取

  • 分割快取 ( Partitioned Cache )
    • 講「分割快取」很容易誤解其意思,這概念並不像「磁碟分割」那樣一棵實體硬碟分割成好幾個磁區,而是將「所有快取伺服器」全部整合成一個記憶體快取儲存區 (快取叢集),你可以在這個「快取叢集」分割出你想要的任何大小。
    • 因此,透過 Partitioned Cache 很適合用在需要大量記憶體快取的應用程式,這可大幅提升應用程式的延展性(Scalability),當記憶體不夠用時就只要增加伺服器即可。
    • 新快取伺服器加入整個快取叢集後,Velocity 會自動進行負載平衡,並將部分快取項目自動移至新主機,當快取項目平均分散在各台主機後也會增加整體快取叢集的吞吐量(Throughtput)。
    • 由於是將多台伺服器整合成一個大記憶體,所以快取資料並不會重複儲存,如下圖例:K2,V2 指的是 “Key/Value Pair 2” 的意思,由於透過 Put 指令寫入快取項目時勢將資料寫入到 Cache 2 這個 快取實體(Cache Host) 中,所以當另一台主機從 Cache 3 取得(Get) K2,V2 資料時,就會透過 Velocity 內部的 Routing 機制從 Cache2 取得資料,而這些複雜的 Routing 作業全都由 Velocity 幫你完成。

    • Partitioned Cache 還能設定「次要快取節點」,讓「主要快取資料」能自動將快取項目複寫到另一台主機,達到高有效性(High Availability)的目標,如下是 HA 模式的示意圖:

 

  • 本地快取 ( Local Cache )
    • Velocity 也支援「本地快取」,透過本地快取可以有效省去「序列化/反序列化」的 CPU 成本,可提升讀寫快取資料時的效能。
    • 如下圖示很容易能看出運用本地快取的情境:

過期與回收 ( Expiration and Eviction )

  • 快取過期 ( Expiration )
    • 在新增快取項目到 Regions 時可以指定該物件的存活時間(TTL; Time To Live)
  • 快取回收 ( Eviction )
    • 快取項目可以設定優先等級,當快取記憶體不夠用時就會依據 LRU (least-recently-used) 演算法將不常用的快取項目刪除,讓優先權較高的快取項目進入快取伺服器。

一致性模型 ( Consistency Models )

  • 樂觀版本更新機制 ( optimistic version-based updates )
    • 透過這個機制可享受較高的執行效能,因為就算不同的 Client 端在同時執行 取得快取(Get) 或 寫入快取(Put) 動作可以同時執行,Velocity 會在內部維護一份快取項目的版本資訊,而且會在每次取得(Get)資料時一併傳回用戶端,所以不用維護鎖定(locking)的問題,但版本資訊在 Client 端需自行判斷新舊。
  • 悲觀鎖定機制 ( pessimistic locking )
    • 透過 API 提供的 GetandLock 取得資料時,若有其他程序也要透過 GetandLock 取得資料時就會發生失敗,但若 Client 使用單純的 Get 取得資料還是可以的。
    • 這時透過 PutAndLock 方法可以將資料回寫至 Velocity,這時鎖定狀態就會被解除,但如果直接使用 Put 方法則會直接取消鎖定狀態並直接複寫該物件的值,所以必須小心使用。
    • 透過 UnLock 方法也可以直接設定解除鎖定。

變更通知 ( Notifications )

在分散式的架構下,由於多個用戶端同時存取同一份資源,實做變更通知變的非常實用,當另一個用戶端變更了某個 區域 (Regions) 快取項目 (Cache Items) 時可以透過事件通知應用程式。

部署拓樸 ( Deployment Topology )

Velocity 是透過 Windows Service 提供服務,可以透過 TCP/IP 從本機或遠端電腦連線,並透過 .NET Client API 直接操作使用。

如下圖是兩種常見的 Velocity 部署模式:

  • Embedded
    • 快取實體(Cache Host) 跟 IIS 主機安裝在一起,並聯合多台主機組成快取叢集
  • Cache Service
    • 使用 專屬主機 提供 快取實體(Cache Host),提供一個實體的 快取層(Caching Tier)

部署拓樸 ( Deployment Topology )

ASP.NET 整合 ( ASP.NET Integration )

Velocity 預設提供一組 SessionStoreProvider 可讓你無痛的將 Session 移至 AppFabric Caching 平台,並儲存到一個 分割快取 (Partitioned Cache) 中,透過設定也可以達到 HA (High Availability) 與 HS (High Scalability) 的規劃。

效能測試 ( Performance Testing )

如下圖示,只要新增快取伺服器幾乎呈現「線性成長」的吞吐量,可有效提升應用程式的延展性。

效能測試 ( Performance Testing )

結論 ( Conclusion )

透過 AppFabric Caching 可以輕易的讓你將多台伺服器的記憶體融合成一個超大記憶體快取,透過單一 API 即可存取這些記憶體快取,當記憶體不夠時只要增加伺服器即可輕易擴充完成,不止有效降低管理成本,還可輕易的達成 3H ( High Scalability, High Availability, High Performance ) 系統架構。

相關連結

  

此文章由 will 發表於 2009/12/25 下午 06:39:41

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: 心得分享 | Windows Azure

標籤: , , ,

收藏:

使用 Google Public DNS 服務,上網速度不一定會變快!

這幾天 Google Public DNS 被炒的火熱,漂亮的 IP 位址 ( 8.8.8.8 , 8.8.4.4 ) 被瘋狂的宣傳,連我也一頭熱的研究了一番,一開始覺得速度還挺快的,網路延遲時間也很短,我猜也許已經有人開始將個人電腦的 DNS 切換過去了,但對於 168.95.1.1 的琵琶別抱真的是好事嗎,以下些許淺見供參。

Google Public DNS 官網中指出三個使用 Google Public DNS 最主要的理由:

  • 加速瀏覽體驗 ( Speed up your browsing experience )
    白話文:上網速度會比較快
  • 提升網路安全 ( Improve your security )
    白話文:Google Public DNS 上網會比較安全
  • 直接取得 DNS 查詢結果 ( Get the results you expect with absolutely no redirection )
    白話文:用它來查 DNS 比較快就對了,它不會轉向去查上層 DNS 的紀錄 (因為已經快取了)

關於 Google Public DNS 的介紹網路上已經一大堆,隨便 Google 一下就會查到許多資料,應該不用我多做一些基本的設定教學,但我可以分享一些這幾天研究的心得,對於「提升安全性」的部分無庸置疑,用國際大廠的服務真的有許多好處,此篇文章主要的著眼點在主要在於效能部分。

§ 關於 Google Public DNS 的效能 ( Performance Benefits )

DNS 的查詢速度著實會影響上網速度,主要影響 DNS 查詢速度的關鍵因素有兩項:

  1. 用戶端電腦主要 DNS 伺服器 之間的網路延遲:這部分的網路延遲大多與 round-trip time (RTT) 的限制有很大的關係,例如:兩個端點間的距離、網路壅塞的程度、封包傳遞的品質、過載的伺服器、阻斷服務攻擊、…等等都會影響網路延遲的時間長度。
  2. 主要 DNS 伺服器其他 DNS 伺服器 之間的網路延遲,這部分又包括三個成分:
    1. 快取失效(Cache misses):熟知 DNS 運作原理的人都知道當主要 DNS 沒有查詢目標的 DNS 快取紀錄時就會遞迴的向其他 DNS 伺服器解析網域名稱,這種狀況難以避免,當 DNS 的上層伺服器(權威伺服器)離主要伺服器很遠時,網路延遲就會一層一層的加上去,難保 DNS 的效率低落,導致上網速度降低,而「快取失效」這一點這也是 Google 認為是影響 DNS 查詢效率最關鍵的因素。
    2. 伺服器無法負荷要求(Underprovisioning):當 DNS 伺服器部署不夠數量無法負荷用戶端大量的 DNS 查詢時,通常會讓 DNS Client 等待過久,導致查詢失敗進而重新發送封包查詢 ( DNS 是走 UDP 協定 ),如果有這種狀況發生,也會大幅影響網域解析的時間。
    3. 惡意網路流量(Malicious traffic):即便 DNS 伺服器部署足夠,阻斷服務攻擊(DoS)也可能會造成現有的 DNS 伺服器大量的負載,以導致伺服器無法有效回應或回應惡意的 IP 位址。我去年寫的一篇文章【小心網域名稱伺服器快取毒害(DNS cache poisoning)攻擊 】就是其中一種 DNS 攻擊的形式,不但會癱瘓 DNS 伺服器,還有可能會導致 DNS 伺服器回應惡意的 IP 位址。

Google 認為 快取失效(Cache misses) 是影響 DNS 查詢效能最主要的因素,他們提供幾點改善的方案:

  1. 部署足夠的 DNS 伺服器 (Provisioning serving clusters adequately)
  2. 避免阻斷服務攻擊擴大規模 (Preventing DoS and amplification attacks)
  3. 有效利用負載平衡機制將 DNS 集中快取 (Load-balancing for shared caching)
    1. 將常用的 DNS 名稱解析集中處理快取,讓全球的 DNS 伺服器統一取得快取更新資料
    2. 將不常用的 DNS 名稱依據「DNS名稱」分散快取,以分散分享式快取的流量
  4. 積極的預先取得名稱解析 (Prefetching name resolutions)
  5. 在全球部署DNS伺服器以提供服務 (Distributing serving clusters for wide geographical coverage)

在台灣,也許你會用 HiNet 的 DNS 服務,眾所周知的 168.95.1.1 已經是家喻戶曉的 IP 位址,幾乎大部分 IT 人員都是用這個 IP 作為主要 DNS 伺服器,就連有些非 HiNET 的 IDC 甚至還會建議客戶直接使用 HiNet DNS 作為主要伺服器,相信我,用它準沒錯,他要是掛了,全台灣差不多有 80% 網路會斷線,這就跟大公司會買 IBM 伺服器或 Cisco 路由器的理由一樣:「他要是有問題我也沒輒」。

對於 Google 這種對於全球公開的 DNS 伺服器來說,那可沒那麼簡單,由於全球網路如此之大,Google 不可能在每一個國家、每一個地區都有機房,你確定你用的 8.8.8.8 真的離你很近嗎?或許是!但你確定在 Google Public DNS 中被快取的 IP 真的是離你最近的 IP 嗎?那可不一定!

CDN (Content delivery network) (內容傳遞網路) 機制是我最近研究的網路技術之一,CDN 利用許多機制降低 用戶端伺服器端 之間的網路延遲,大多數 CDN 業者都至少會同時實做好幾種機制,例如 Anycast (BGP), Global Server Load Balancing, DNS-based request routing, Dynamic metafile generation, HTML rewriting, … 等等。( 備註:Google Public DNS 使用 Anycast routing ) 其中的 DNS-based request routing 機制最為常見,CDN 業者提供的 DNS 伺服器會利用 來源 DNS 解析伺服器 的 IP 位址判斷出來源 IP 的地理位置,再依據 IP 所在地理位置來選擇回應由來源 IP 位置連線到他們全球伺服器中最接近該位置的伺服器,以降低網路延遲時間。

由於這個機制會依據 來源 DNS 解析伺服器 的 IP 位址判斷出來源 IP 的地理位置,所以若採用 Google Public DNS 來解析 IP 位址時就不一定能得到離你最近的 IP 位址,因此連 Google 本身也無法保證在這種情況下你能得到的最有效率的瀏覽體驗!請看以下紅框標注的段落:

Distributing serving clusters for wide geographical coverage: Note, however, that because nameservers geolocate according to the resolver's IP address rather than the user's, Google Public DNS has the same limitations as other open DNS services: that is, the server to which a user is referred might be farther away than one to which a local DNS provider would have referred. This could cause a slower browsing experience for certain sites.

你覺得採用 CDN 機制的網站很少嗎?其實只要是跨國且超大流量的網站幾乎都會採用 CDN 機制,所以你常用的 Hotmail, Facebook, Plurk, Twitter, … 等網站全部都採用 CDN 分散網路流量,但若透過 Google Public DNS 來上網,難保你能得到最佳瀏覽體驗!

不過,這並非絕對,只能說「無法保證」而已,而且 CDN 能實做的機制非常多,不止 DNS-based request routing 而已,所以並非所有 CDN 網路都會因為 Google Public DNS 而導致瀏覽速度降低,還是有許多 DNS 以外的優化方案,不然你想想看全球採用單一 8.8.8.8 這個 IP 都可以讓各地的網路延遲時間都可以低於 50ms 是什麼道理,網路世界博大精深,不是一篇文章可以講完的 ^^

也許有些比較小咖的 CDN 業者或自行實做 GeoDNS 的網站,可能就會遭受 Google Public DNS 的荼毒,所以到底要推廣 Google Public DNS 還是不要推廣呢?這真是個難為的決定阿!不過至少我短期內不會採用。

相關連結

  

此文章由 will 發表於 2009/12/8 上午 10:26:14

永久連結 | 評論 (6) | 此文章的RSSRSS comment feed |

分類: Web | 心得分享 | 系統管理

標籤: , , , ,

收藏:

The Will Will Web 生日快樂! ( 歡度兩週歲生日 )

Happy Birthday人在忙碌的時候時間總是過的特別快,真沒想到我的部落格已經滿兩歲生日了,在此也不免俗的再次祝賀 The Will Will Web 生日快樂! ^_^

最近幾個月被案子忙的焦頭爛額,連寫文章的時間都變的不規律了,雖然沒有像去年一樣每天一篇文章,不過從去年生日到今天也累積了 301 篇文章,這些可都是心血的結晶呢。

為了讓 The Will Will Web 滿兩週歲更具意義,前陣子受到前輩的感召,決定也來辦個闖關活動,希望能將所學整理成一個一個的關卡,一方面是讓技術學習變的有趣,一方面是讓各位大內高手 ( .NET Expert ) 藉此驗證自己技術能力的深度與廣度。

為了讓親朋好友與公司同事在闖關時能有新鮮感,所以題目都不能假手他人,只好辛苦抽空設計題目,目前已經想到很多可以出的題目,不過還需要轉成線上版讓整個闖關活動自動化,所以還需要一些時間開發,我最近已經著手開發活動網站與題目設計,估計本週五晚上 7:00 正式開台,歡迎各位踴躍參加藉此交流。

詳細的活動辦法贈品將於明晚公布,敬請各位拭目以待! ^__^

  

此文章由 will 發表於 2009/10/27 下午 11:59:28

永久連結 | 評論 (5) | 此文章的RSSRSS comment feed |

分類: 心得分享

標籤:

收藏: